OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 class _Closure implements Function { | 5 class _Closure implements Function { |
6 bool operator ==(other) native "Closure_equals"; | 6 bool operator ==(other) native "Closure_equals"; |
7 | 7 |
8 int get hashCode { | 8 int get hashCode native "Closure_hashCode"; |
9 if (_hash == null) { | |
10 _hash = _computeHash(); | |
11 } | |
12 return _hash; | |
13 } | |
14 | 9 |
15 _Closure get call => this; | 10 _Closure get call => this; |
16 | 11 |
17 _Closure _clone() native "Closure_clone"; | 12 _Closure _clone() native "Closure_clone"; |
18 | 13 |
19 int _computeHash() native "Closure_computeHash"; | |
20 | |
21 // No instance fields should be declared before the following 4 fields whose | 14 // No instance fields should be declared before the following 4 fields whose |
22 // offsets must be identical in Dart and C++. | 15 // offsets must be identical in Dart and C++. |
23 | 16 |
24 // The following fields are declared both in raw_object.h (for direct access | 17 // The following 4 fields are declared both in raw_object.h (for direct access |
25 // from C++ code) and also here so that the offset-to-field map used by | 18 // from C++ code) and also here so that the offset-to-field map used by |
26 // deferred objects is properly initialized. | 19 // deferred objects is properly initialized. |
27 // Caution: These fields are not Dart instances, but VM objects. Their Dart | 20 // Caution: These fields are not Dart instances, but VM objects. Their Dart |
28 // names do not need to match the C++ names, but they must be private. | 21 // names do not need to match the C++ names, but they must be private. |
29 var _instantiator_type_arguments; | 22 var _instantiator_type_arguments; |
30 var _function_type_arguments; | 23 var _function_type_arguments; |
31 var _function; | 24 var _function; |
32 var _context; | 25 var _context; |
33 var _hash; | |
34 } | 26 } |
OLD | NEW |