Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Side by Side Diff: runtime/vm/object.cc

Issue 668193002: Remove isolate pointer from context objects. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: fixed initialization order bug Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1129 pending_classes.Add(cls); 1129 pending_classes.Add(cls);
1130 1130
1131 // Pre-register the isolate library so the native class implementations 1131 // Pre-register the isolate library so the native class implementations
1132 // can be hooked up before compiling it. 1132 // can be hooked up before compiling it.
1133 Library& isolate_lib = 1133 Library& isolate_lib =
1134 Library::Handle(isolate, Library::LookupLibrary(Symbols::DartIsolate())); 1134 Library::Handle(isolate, Library::LookupLibrary(Symbols::DartIsolate()));
1135 if (isolate_lib.IsNull()) { 1135 if (isolate_lib.IsNull()) {
1136 isolate_lib = Library::NewLibraryHelper(Symbols::DartIsolate(), true); 1136 isolate_lib = Library::NewLibraryHelper(Symbols::DartIsolate(), true);
1137 isolate_lib.SetLoadRequested(); 1137 isolate_lib.SetLoadRequested();
1138 isolate_lib.Register(); 1138 isolate_lib.Register();
1139 isolate->object_store()->set_bootstrap_library(ObjectStore::kIsolate, 1139 object_store->set_bootstrap_library(ObjectStore::kIsolate, isolate_lib);
1140 isolate_lib);
1141 } 1140 }
1142 ASSERT(!isolate_lib.IsNull()); 1141 ASSERT(!isolate_lib.IsNull());
1143 ASSERT(isolate_lib.raw() == Library::IsolateLibrary()); 1142 ASSERT(isolate_lib.raw() == Library::IsolateLibrary());
1144 1143
1145 cls = Class::New<Capability>(); 1144 cls = Class::New<Capability>();
1146 RegisterPrivateClass(cls, Symbols::_CapabilityImpl(), isolate_lib); 1145 RegisterPrivateClass(cls, Symbols::_CapabilityImpl(), isolate_lib);
1147 pending_classes.Add(cls); 1146 pending_classes.Add(cls);
1148 1147
1149 cls = Class::New<ReceivePort>(); 1148 cls = Class::New<ReceivePort>();
1150 RegisterPrivateClass(cls, Symbols::_RawReceivePortImpl(), isolate_lib); 1149 RegisterPrivateClass(cls, Symbols::_RawReceivePortImpl(), isolate_lib);
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 object_store->set_weak_property_class(cls); 1251 object_store->set_weak_property_class(cls);
1253 RegisterPrivateClass(cls, Symbols::_WeakProperty(), core_lib); 1252 RegisterPrivateClass(cls, Symbols::_WeakProperty(), core_lib);
1254 1253
1255 // Pre-register the mirrors library so we can place the vm class 1254 // Pre-register the mirrors library so we can place the vm class
1256 // MirrorReference there rather than the core library. 1255 // MirrorReference there rather than the core library.
1257 lib = Library::LookupLibrary(Symbols::DartMirrors()); 1256 lib = Library::LookupLibrary(Symbols::DartMirrors());
1258 if (lib.IsNull()) { 1257 if (lib.IsNull()) {
1259 lib = Library::NewLibraryHelper(Symbols::DartMirrors(), true); 1258 lib = Library::NewLibraryHelper(Symbols::DartMirrors(), true);
1260 lib.SetLoadRequested(); 1259 lib.SetLoadRequested();
1261 lib.Register(); 1260 lib.Register();
1262 isolate->object_store()->set_bootstrap_library(ObjectStore::kMirrors, 1261 object_store->set_bootstrap_library(ObjectStore::kMirrors, lib);
1263 lib);
1264 } 1262 }
1265 ASSERT(!lib.IsNull()); 1263 ASSERT(!lib.IsNull());
1266 ASSERT(lib.raw() == Library::MirrorsLibrary()); 1264 ASSERT(lib.raw() == Library::MirrorsLibrary());
1267 1265
1268 cls = Class::New<MirrorReference>(); 1266 cls = Class::New<MirrorReference>();
1269 RegisterPrivateClass(cls, Symbols::_MirrorReference(), lib); 1267 RegisterPrivateClass(cls, Symbols::_MirrorReference(), lib);
1270 1268
1271 // Pre-register the collection library so we can place the vm class 1269 // Pre-register the collection library so we can place the vm class
1272 // LinkedHashMap there rather than the core library. 1270 // LinkedHashMap there rather than the core library.
1273 lib = Library::LookupLibrary(Symbols::DartCollection()); 1271 lib = Library::LookupLibrary(Symbols::DartCollection());
1274 if (lib.IsNull()) { 1272 if (lib.IsNull()) {
1275 lib = Library::NewLibraryHelper(Symbols::DartCollection(), true); 1273 lib = Library::NewLibraryHelper(Symbols::DartCollection(), true);
1276 lib.SetLoadRequested(); 1274 lib.SetLoadRequested();
1277 lib.Register(); 1275 lib.Register();
1278 isolate->object_store()->set_bootstrap_library(ObjectStore::kCollection, 1276 object_store->set_bootstrap_library(ObjectStore::kCollection, lib);
1279 lib);
1280 } 1277 }
1281 ASSERT(!lib.IsNull()); 1278 ASSERT(!lib.IsNull());
1282 ASSERT(lib.raw() == Library::CollectionLibrary()); 1279 ASSERT(lib.raw() == Library::CollectionLibrary());
1283 1280
1284 cls = Class::New<LinkedHashMap>(); 1281 cls = Class::New<LinkedHashMap>();
1285 object_store->set_linked_hash_map_class(cls); 1282 object_store->set_linked_hash_map_class(cls);
1286 cls.set_type_arguments_field_offset(LinkedHashMap::type_arguments_offset()); 1283 cls.set_type_arguments_field_offset(LinkedHashMap::type_arguments_offset());
1287 cls.set_num_type_arguments(2); 1284 cls.set_num_type_arguments(2);
1288 cls.set_num_own_type_arguments(2); 1285 cls.set_num_own_type_arguments(2);
1289 RegisterPrivateClass(cls, Symbols::_LinkedHashMap(), lib); 1286 RegisterPrivateClass(cls, Symbols::_LinkedHashMap(), lib);
1290 pending_classes.Add(cls); 1287 pending_classes.Add(cls);
1291 1288
1292 // Pre-register the profiler library so we can place the vm class 1289 // Pre-register the profiler library so we can place the vm class
1293 // UserTag there rather than the core library. 1290 // UserTag there rather than the core library.
1294 lib = Library::LookupLibrary(Symbols::DartProfiler()); 1291 lib = Library::LookupLibrary(Symbols::DartProfiler());
1295 if (lib.IsNull()) { 1292 if (lib.IsNull()) {
1296 lib = Library::NewLibraryHelper(Symbols::DartProfiler(), true); 1293 lib = Library::NewLibraryHelper(Symbols::DartProfiler(), true);
1297 lib.SetLoadRequested(); 1294 lib.SetLoadRequested();
1298 lib.Register(); 1295 lib.Register();
1299 isolate->object_store()->set_bootstrap_library(ObjectStore::kProfiler, 1296 object_store->set_bootstrap_library(ObjectStore::kProfiler, lib);
1300 lib);
1301 } 1297 }
1302 ASSERT(!lib.IsNull()); 1298 ASSERT(!lib.IsNull());
1303 ASSERT(lib.raw() == Library::ProfilerLibrary()); 1299 ASSERT(lib.raw() == Library::ProfilerLibrary());
1304 1300
1305 lib = Library::LookupLibrary(Symbols::DartProfiler()); 1301 lib = Library::LookupLibrary(Symbols::DartProfiler());
1306 ASSERT(!lib.IsNull()); 1302 ASSERT(!lib.IsNull());
1307 cls = Class::New<UserTag>(); 1303 cls = Class::New<UserTag>();
1308 RegisterPrivateClass(cls, Symbols::_UserTag(), lib); 1304 RegisterPrivateClass(cls, Symbols::_UserTag(), lib);
1309 pending_classes.Add(cls); 1305 pending_classes.Add(cls);
1310 1306
1311 // Setup some default native field classes which can be extended for 1307 // Setup some default native field classes which can be extended for
1312 // specifying native fields in dart classes. 1308 // specifying native fields in dart classes.
1313 Library::InitNativeWrappersLibrary(isolate); 1309 Library::InitNativeWrappersLibrary(isolate);
1314 ASSERT(isolate->object_store()->native_wrappers_library() != Library::null()); 1310 ASSERT(object_store->native_wrappers_library() != Library::null());
1315 1311
1316 // Pre-register the typed_data library so the native class implementations 1312 // Pre-register the typed_data library so the native class implementations
1317 // can be hooked up before compiling it. 1313 // can be hooked up before compiling it.
1318 lib = Library::LookupLibrary(Symbols::DartTypedData()); 1314 lib = Library::LookupLibrary(Symbols::DartTypedData());
1319 if (lib.IsNull()) { 1315 if (lib.IsNull()) {
1320 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true); 1316 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true);
1321 lib.SetLoadRequested(); 1317 lib.SetLoadRequested();
1322 lib.Register(); 1318 lib.Register();
1323 isolate->object_store()->set_bootstrap_library(ObjectStore::kTypedData, 1319 object_store->set_bootstrap_library(ObjectStore::kTypedData, lib);
1324 lib);
1325 } 1320 }
1326 ASSERT(!lib.IsNull()); 1321 ASSERT(!lib.IsNull());
1327 ASSERT(lib.raw() == Library::TypedDataLibrary()); 1322 ASSERT(lib.raw() == Library::TypedDataLibrary());
1328 #define REGISTER_TYPED_DATA_CLASS(clazz) \ 1323 #define REGISTER_TYPED_DATA_CLASS(clazz) \
1329 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); \ 1324 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); \
1330 RegisterPrivateClass(cls, Symbols::_##clazz(), lib); \ 1325 RegisterPrivateClass(cls, Symbols::_##clazz(), lib); \
1331 1326
1332 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS); 1327 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS);
1333 #undef REGISTER_TYPED_DATA_CLASS 1328 #undef REGISTER_TYPED_DATA_CLASS
1334 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \ 1329 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1459 // is a built-in identifier (this is wrong). 1454 // is a built-in identifier (this is wrong).
1460 // The corresponding types are stored in the object store. 1455 // The corresponding types are stored in the object store.
1461 cls = object_store->null_class(); 1456 cls = object_store->null_class();
1462 type = Type::NewNonParameterizedType(cls); 1457 type = Type::NewNonParameterizedType(cls);
1463 object_store->set_null_type(type); 1458 object_store->set_null_type(type);
1464 1459
1465 // Consider removing when/if Null becomes an ordinary class. 1460 // Consider removing when/if Null becomes an ordinary class.
1466 type = object_store->object_type(); 1461 type = object_store->object_type();
1467 cls.set_super_type(type); 1462 cls.set_super_type(type);
1468 1463
1464 return Error::null();
1465 }
1466
1467
1468 RawError* Object::FinishInit(Isolate* isolate) {
1469 // Finish the initialization by compiling the bootstrap scripts containing the 1469 // Finish the initialization by compiling the bootstrap scripts containing the
1470 // base interfaces and the implementation of the internal classes. 1470 // base interfaces and the implementation of the internal classes.
1471 const Error& error = Error::Handle(Bootstrap::LoadandCompileScripts()); 1471 const Error& error = Error::Handle(Bootstrap::LoadandCompileScripts());
1472 if (!error.IsNull()) { 1472 if (!error.IsNull()) {
1473 return error.raw(); 1473 return error.raw();
1474 } 1474 }
1475 1475
1476 ClassFinalizer::VerifyBootstrapClasses(); 1476 ClassFinalizer::VerifyBootstrapClasses();
1477 MarkInvisibleFunctions(); 1477 MarkInvisibleFunctions();
1478 1478
1479 // Set up the intrinsic state of all functions (core, math and typed data). 1479 // Set up the intrinsic state of all functions (core, math and typed data).
1480 Intrinsifier::InitializeState(); 1480 Intrinsifier::InitializeState();
1481 1481
1482 // Set up recognized state of all functions (core, math and typed data). 1482 // Set up recognized state of all functions (core, math and typed data).
1483 MethodRecognizer::InitializeState(); 1483 MethodRecognizer::InitializeState();
1484 1484
1485 // Adds static const fields (class ids) to the class 'ClassID'); 1485 // Adds static const fields (class ids) to the class 'ClassID');
1486 Library& lib = Library::Handle(isolate);
1486 lib = Library::LookupLibrary(Symbols::DartInternal()); 1487 lib = Library::LookupLibrary(Symbols::DartInternal());
1487 ASSERT(!lib.IsNull()); 1488 ASSERT(!lib.IsNull());
1489 Class& cls = Class::Handle(isolate);
1488 cls = lib.LookupClassAllowPrivate(Symbols::ClassID()); 1490 cls = lib.LookupClassAllowPrivate(Symbols::ClassID());
1489 ASSERT(!cls.IsNull()); 1491 ASSERT(!cls.IsNull());
1490 Field& field = Field::Handle(isolate); 1492 Field& field = Field::Handle(isolate);
1491 Smi& value = Smi::Handle(isolate); 1493 Smi& value = Smi::Handle(isolate);
1492 String& field_name = String::Handle(isolate); 1494 String& field_name = String::Handle(isolate);
1493 1495
1494 #define CLASS_LIST_WITH_NULL(V) \ 1496 #define CLASS_LIST_WITH_NULL(V) \
1495 V(Null) \ 1497 V(Null) \
1496 CLASS_LIST_NO_OBJECT(V) 1498 CLASS_LIST_NO_OBJECT(V)
1497 1499
1498 #define ADD_SET_FIELD(clazz) \ 1500 #define ADD_SET_FIELD(clazz) \
1499 field_name = Symbols::New("cid"#clazz); \ 1501 field_name = Symbols::New("cid"#clazz); \
1500 field = Field::New(field_name, true, false, true, false, cls, 0); \ 1502 field = Field::New(field_name, true, false, true, false, cls, 0); \
1501 value = Smi::New(k##clazz##Cid); \ 1503 value = Smi::New(k##clazz##Cid); \
1502 field.set_value(value); \ 1504 field.set_value(value); \
1503 field.set_type(Type::Handle(Type::IntType())); \ 1505 field.set_type(Type::Handle(Type::IntType())); \
1504 cls.AddField(field); \ 1506 cls.AddField(field); \
1505 1507
1506 CLASS_LIST_WITH_NULL(ADD_SET_FIELD) 1508 CLASS_LIST_WITH_NULL(ADD_SET_FIELD)
1507 #undef ADD_SET_FIELD 1509 #undef ADD_SET_FIELD
1508 1510
1509 object_store->InitAsyncObjects(); 1511 isolate->object_store()->InitAsyncObjects();
1510 1512
1511 return Error::null(); 1513 return Error::null();
1512 } 1514 }
1513 1515
1514 1516
1515 void Object::InitFromSnapshot(Isolate* isolate) { 1517 void Object::InitFromSnapshot(Isolate* isolate) {
1516 TIMERSCOPE(isolate, time_bootstrap); 1518 TIMERSCOPE(isolate, time_bootstrap);
1517 ObjectStore* object_store = isolate->object_store(); 1519 ObjectStore* object_store = isolate->object_store();
1518 1520
1519 Class& cls = Class::Handle(); 1521 Class& cls = Class::Handle();
(...skipping 3581 matching lines...) Expand 10 before | Expand all | Expand 10 after
5101 void Function::AttachCode(const Code& value) const { 5103 void Function::AttachCode(const Code& value) const {
5102 SetInstructions(value); 5104 SetInstructions(value);
5103 ASSERT(Function::Handle(value.function()).IsNull() || 5105 ASSERT(Function::Handle(value.function()).IsNull() ||
5104 (value.function() == this->raw())); 5106 (value.function() == this->raw()));
5105 value.set_owner(*this); 5107 value.set_owner(*this);
5106 } 5108 }
5107 5109
5108 5110
5109 bool Function::HasCode() const { 5111 bool Function::HasCode() const {
5110 ASSERT(raw_ptr()->instructions_ != Instructions::null()); 5112 ASSERT(raw_ptr()->instructions_ != Instructions::null());
5113 StubCode* stub_code = Isolate::Current()->stub_code();
5111 return raw_ptr()->instructions_ != 5114 return raw_ptr()->instructions_ !=
5112 StubCode::LazyCompile_entry()->code()->ptr()->instructions_; 5115 stub_code->LazyCompile_entry()->code()->ptr()->instructions_;
5113 } 5116 }
5114 5117
5115 5118
5116 void Function::ClearCode() const { 5119 void Function::ClearCode() const {
5117 StorePointer(&raw_ptr()->unoptimized_code_, Code::null()); 5120 StorePointer(&raw_ptr()->unoptimized_code_, Code::null());
5121 StubCode* stub_code = Isolate::Current()->stub_code();
5118 StorePointer(&raw_ptr()->instructions_, 5122 StorePointer(&raw_ptr()->instructions_,
5119 Code::Handle(StubCode::LazyCompile_entry()->code()).instructions()); 5123 Code::Handle(stub_code->LazyCompile_entry()->code()).instructions());
5120 } 5124 }
5121 5125
5122 5126
5123 void Function::SwitchToUnoptimizedCode() const { 5127 void Function::SwitchToUnoptimizedCode() const {
5124 ASSERT(HasOptimizedCode()); 5128 ASSERT(HasOptimizedCode());
5125 const Code& current_code = Code::Handle(CurrentCode()); 5129 const Code& current_code = Code::Handle(CurrentCode());
5126 5130
5127 if (FLAG_trace_disabling_optimized_code) { 5131 if (FLAG_trace_disabling_optimized_code) {
5128 OS::Print("Disabling optimized code: '%s' entry: %#" Px "\n", 5132 OS::Print("Disabling optimized code: '%s' entry: %#" Px "\n",
5129 ToFullyQualifiedCString(), 5133 ToFullyQualifiedCString(),
(...skipping 993 matching lines...) Expand 10 before | Expand all | Expand 10 after
6123 result.set_num_fixed_parameters(0); 6127 result.set_num_fixed_parameters(0);
6124 result.set_num_optional_parameters(0); 6128 result.set_num_optional_parameters(0);
6125 result.set_usage_counter(0); 6129 result.set_usage_counter(0);
6126 result.set_deoptimization_counter(0); 6130 result.set_deoptimization_counter(0);
6127 result.set_optimized_instruction_count(0); 6131 result.set_optimized_instruction_count(0);
6128 result.set_optimized_call_site_count(0); 6132 result.set_optimized_call_site_count(0);
6129 result.set_is_optimizable(is_native ? false : true); 6133 result.set_is_optimizable(is_native ? false : true);
6130 result.set_is_inlinable(true); 6134 result.set_is_inlinable(true);
6131 result.set_allows_hoisting_check_class(true); 6135 result.set_allows_hoisting_check_class(true);
6132 result.set_allows_bounds_check_generalization(true); 6136 result.set_allows_bounds_check_generalization(true);
6133 result.SetInstructions(Code::Handle(StubCode::LazyCompile_entry()->code())); 6137 StubCode* stub_code = Isolate::Current()->stub_code();
6138 result.SetInstructions(Code::Handle(stub_code->LazyCompile_entry()->code()));
6134 if (kind == RawFunction::kClosureFunction) { 6139 if (kind == RawFunction::kClosureFunction) {
6135 const ClosureData& data = ClosureData::Handle(ClosureData::New()); 6140 const ClosureData& data = ClosureData::Handle(ClosureData::New());
6136 result.set_data(data); 6141 result.set_data(data);
6137 } 6142 }
6138 6143
6139 return result.raw(); 6144 return result.raw();
6140 } 6145 }
6141 6146
6142 6147
6143 RawFunction* Function::Clone(const Class& new_owner) const { 6148 RawFunction* Function::Clone(const Class& new_owner) const {
(...skipping 6294 matching lines...) Expand 10 before | Expand all | Expand 10 after
12438 } 12443 }
12439 Context& result = Context::Handle(); 12444 Context& result = Context::Handle();
12440 { 12445 {
12441 RawObject* raw = Object::Allocate(Context::kClassId, 12446 RawObject* raw = Object::Allocate(Context::kClassId,
12442 Context::InstanceSize(num_variables), 12447 Context::InstanceSize(num_variables),
12443 space); 12448 space);
12444 NoGCScope no_gc; 12449 NoGCScope no_gc;
12445 result ^= raw; 12450 result ^= raw;
12446 result.set_num_variables(num_variables); 12451 result.set_num_variables(num_variables);
12447 } 12452 }
12448 result.set_isolate(Isolate::Current());
12449 return result.raw(); 12453 return result.raw();
12450 } 12454 }
12451 12455
12452 12456
12453 const char* Context::ToCString() const { 12457 const char* Context::ToCString() const {
12454 if (IsNull()) { 12458 if (IsNull()) {
12455 return "Context (Null)"; 12459 return "Context (Null)";
12456 } 12460 }
12457 Zone* zone = Isolate::Current()->current_zone(); 12461 Zone* zone = Isolate::Current()->current_zone();
12458 const Context& parent_ctx = Context::Handle(parent()); 12462 const Context& parent_ctx = Context::Handle(parent());
(...skipping 7231 matching lines...) Expand 10 before | Expand all | Expand 10 after
19690 intptr_t len = OS::SNPrint(NULL, 0, format, fun_sig, from, fun_desc) + 1; 19694 intptr_t len = OS::SNPrint(NULL, 0, format, fun_sig, from, fun_desc) + 1;
19691 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); 19695 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
19692 OS::SNPrint(chars, len, format, fun_sig, from, fun_desc); 19696 OS::SNPrint(chars, len, format, fun_sig, from, fun_desc);
19693 return chars; 19697 return chars;
19694 } 19698 }
19695 19699
19696 19700
19697 RawInstance* Closure::New(const Function& function, 19701 RawInstance* Closure::New(const Function& function,
19698 const Context& context, 19702 const Context& context,
19699 Heap::Space space) { 19703 Heap::Space space) {
19700 Isolate* isolate = Isolate::Current();
19701 ASSERT(context.isolate() == isolate);
19702
19703 const Class& cls = Class::Handle(function.signature_class()); 19704 const Class& cls = Class::Handle(function.signature_class());
19704 ASSERT(cls.instance_size() == Closure::InstanceSize()); 19705 ASSERT(cls.instance_size() == Closure::InstanceSize());
19705 Instance& result = Instance::Handle(); 19706 Instance& result = Instance::Handle();
19706 { 19707 {
19707 RawObject* raw = Object::Allocate(cls.id(), Closure::InstanceSize(), space); 19708 RawObject* raw = Object::Allocate(cls.id(), Closure::InstanceSize(), space);
19708 NoGCScope no_gc; 19709 NoGCScope no_gc;
19709 result ^= raw; 19710 result ^= raw;
19710 } 19711 }
19711 Closure::set_function(result, function); 19712 Closure::set_function(result, function);
19712 Closure::set_context(result, context); 19713 Closure::set_context(result, context);
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
20317 return tag_label.ToCString(); 20318 return tag_label.ToCString();
20318 } 20319 }
20319 20320
20320 20321
20321 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { 20322 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const {
20322 Instance::PrintJSONImpl(stream, ref); 20323 Instance::PrintJSONImpl(stream, ref);
20323 } 20324 }
20324 20325
20325 20326
20326 } // namespace dart 20327 } // namespace dart
OLDNEW
« runtime/vm/dart.cc ('K') | « runtime/vm/object.h ('k') | runtime/vm/object_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698