mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:17:55 +00:00
Fix for issue 22778, stored the function object in the forward reference table instead of the implicit static closure.
R=iposva@google.com Review URL: https://codereview.chromium.org//1004923002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44466 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
parent
a7b1765187
commit
d322d386db
|
@ -243,8 +243,9 @@ RawObject* SnapshotReader::ReadStaticImplicitClosure(intptr_t object_id,
|
|||
|
||||
// First create a function object and associate it with the specified
|
||||
// 'object_id'.
|
||||
Function& func = Function::ZoneHandle(isolate(), Function::null());
|
||||
AddBackRef(object_id, &func, kIsDeserialized);
|
||||
Function& func = Function::Handle(isolate(), Function::null());
|
||||
Instance& obj = Instance::ZoneHandle(isolate(), Instance::null());
|
||||
AddBackRef(object_id, &obj, kIsDeserialized);
|
||||
|
||||
// Read the library/class/function information and lookup the function.
|
||||
str_ ^= ReadObjectImpl();
|
||||
|
@ -273,7 +274,8 @@ RawObject* SnapshotReader::ReadStaticImplicitClosure(intptr_t object_id,
|
|||
ASSERT(!func.IsNull());
|
||||
|
||||
// Return the associated implicit static closure.
|
||||
return func.ImplicitStaticClosure();
|
||||
obj = func.ImplicitStaticClosure();
|
||||
return obj.raw();
|
||||
}
|
||||
|
||||
|
||||
|
|
17
tests/isolate/issue_22778_test.dart
Normal file
17
tests/isolate/issue_22778_test.dart
Normal file
|
@ -0,0 +1,17 @@
|
|||
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import "dart:isolate";
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
func(){}
|
||||
|
||||
main() {
|
||||
var r = new RawReceivePort();
|
||||
r.handler = (v) {
|
||||
Expect.isTrue(v[0] == v[1]);
|
||||
r.close();
|
||||
};
|
||||
r.sendPort.send([func, func]);
|
||||
}
|
Loading…
Reference in a new issue