| OLD | NEW |
| 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 "platform/globals.h" | 5 #include "platform/globals.h" |
| 6 | 6 |
| 7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
| 8 #include "vm/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
| 9 #include "vm/dart_api_impl.h" | 9 #include "vm/dart_api_impl.h" |
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 4334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4345 "{\"type\":\"@Library\",\"fixedId\":true,\"id\":\"\"," | 4345 "{\"type\":\"@Library\",\"fixedId\":true,\"id\":\"\"," |
| 4346 "\"name\":\"dart.core\",\"uri\":\"dart:core\"}", | 4346 "\"name\":\"dart.core\",\"uri\":\"dart:core\"}", |
| 4347 buffer); | 4347 buffer); |
| 4348 } | 4348 } |
| 4349 // Bool reference | 4349 // Bool reference |
| 4350 { | 4350 { |
| 4351 JSONStream js; | 4351 JSONStream js; |
| 4352 Bool::True().PrintJSON(&js, true); | 4352 Bool::True().PrintJSON(&js, true); |
| 4353 elideSubstring("classes", js.ToCString(), buffer); | 4353 elideSubstring("classes", js.ToCString(), buffer); |
| 4354 EXPECT_STREQ( | 4354 EXPECT_STREQ( |
| 4355 "{\"type\":\"@bool\"," | 4355 "{\"type\":\"@Instance\"," |
| 4356 "\"_vmType\":\"Bool\"," |
| 4356 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4357 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4357 "\"name\":\"bool\"},\"fixedId\":true," | 4358 "\"name\":\"bool\"}," |
| 4359 "\"kind\":\"Bool\"," |
| 4360 "\"fixedId\":true," |
| 4358 "\"id\":\"objects\\/bool-true\",\"valueAsString\":\"true\"}", | 4361 "\"id\":\"objects\\/bool-true\",\"valueAsString\":\"true\"}", |
| 4359 buffer); | 4362 buffer); |
| 4360 } | 4363 } |
| 4361 // Smi reference | 4364 // Smi reference |
| 4362 { | 4365 { |
| 4363 JSONStream js; | 4366 JSONStream js; |
| 4364 const Integer& smi = Integer::Handle(Integer::New(7)); | 4367 const Integer& smi = Integer::Handle(Integer::New(7)); |
| 4365 smi.PrintJSON(&js, true); | 4368 smi.PrintJSON(&js, true); |
| 4366 elideSubstring("classes", js.ToCString(), buffer); | 4369 elideSubstring("classes", js.ToCString(), buffer); |
| 4367 elideSubstring("_Smi@", buffer, buffer); | 4370 elideSubstring("_Smi@", buffer, buffer); |
| 4368 EXPECT_STREQ( | 4371 EXPECT_STREQ( |
| 4369 "{\"type\":\"@int\",\"_vmType\":\"@Smi\"," | 4372 "{\"type\":\"@Instance\"," |
| 4373 "\"_vmType\":\"Smi\"," |
| 4370 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4374 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4371 "\"name\":\"_Smi\"," | 4375 "\"name\":\"_Smi\"," |
| 4372 "\"_vmName\":\"\"},\"fixedId\":true," | 4376 "\"_vmName\":\"\"}," |
| 4377 "\"kind\":\"Int\"," |
| 4378 "\"fixedId\":true," |
| 4373 "\"id\":\"objects\\/int-7\",\"valueAsString\":\"7\"}", | 4379 "\"id\":\"objects\\/int-7\",\"valueAsString\":\"7\"}", |
| 4374 buffer); | 4380 buffer); |
| 4375 } | 4381 } |
| 4376 // Mint reference | 4382 // Mint reference |
| 4377 { | 4383 { |
| 4378 JSONStream js; | 4384 JSONStream js; |
| 4379 const Integer& smi = Integer::Handle(Integer::New(Mint::kMinValue)); | 4385 const Integer& smi = Integer::Handle(Integer::New(Mint::kMinValue)); |
| 4380 smi.PrintJSON(&js, true); | 4386 smi.PrintJSON(&js, true); |
| 4381 elideSubstring("classes", js.ToCString(), buffer); | 4387 elideSubstring("classes", js.ToCString(), buffer); |
| 4382 elideSubstring("objects", buffer, buffer); | 4388 elideSubstring("objects", buffer, buffer); |
| 4383 elideSubstring("_Mint@", buffer, buffer); | 4389 elideSubstring("_Mint@", buffer, buffer); |
| 4384 EXPECT_STREQ( | 4390 EXPECT_STREQ( |
| 4385 "{\"type\":\"@int\",\"_vmType\":\"@Mint\"," | 4391 "{\"type\":\"@Instance\"," |
| 4392 "\"_vmType\":\"Mint\"," |
| 4386 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4393 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4387 "\"name\":\"_Mint\",\"_vmName\":\"\"}," | 4394 "\"name\":\"_Mint\",\"_vmName\":\"\"}," |
| 4395 "\"kind\":\"Int\"," |
| 4388 "\"id\":\"\",\"valueAsString\":\"-9223372036854775808\"}", | 4396 "\"id\":\"\",\"valueAsString\":\"-9223372036854775808\"}", |
| 4389 buffer); | 4397 buffer); |
| 4390 } | 4398 } |
| 4391 // Bigint reference | 4399 // Bigint reference |
| 4392 { | 4400 { |
| 4393 JSONStream js; | 4401 JSONStream js; |
| 4394 const String& bigint_str = | 4402 const String& bigint_str = |
| 4395 String::Handle(String::New("44444444444444444444444444444444")); | 4403 String::Handle(String::New("44444444444444444444444444444444")); |
| 4396 const Integer& bigint = Integer::Handle(Integer::New(bigint_str)); | 4404 const Integer& bigint = Integer::Handle(Integer::New(bigint_str)); |
| 4397 bigint.PrintJSON(&js, true); | 4405 bigint.PrintJSON(&js, true); |
| 4398 elideSubstring("classes", js.ToCString(), buffer); | 4406 elideSubstring("classes", js.ToCString(), buffer); |
| 4399 elideSubstring("objects", buffer, buffer); | 4407 elideSubstring("objects", buffer, buffer); |
| 4400 elideSubstring("_Bigint@", buffer, buffer); | 4408 elideSubstring("_Bigint@", buffer, buffer); |
| 4401 EXPECT_STREQ( | 4409 EXPECT_STREQ( |
| 4402 "{\"type\":\"@int\",\"_vmType\":\"@Bigint\"," | 4410 "{\"type\":\"@Instance\"," |
| 4411 "\"_vmType\":\"Bigint\"," |
| 4403 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4412 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4404 "\"name\":\"_Bigint\",\"_vmName\":\"\"}," | 4413 "\"name\":\"_Bigint\",\"_vmName\":\"\"}," |
| 4414 "\"kind\":\"Int\"," |
| 4405 "\"id\":\"\",\"valueAsString\":\"44444444444444444444444444444444\"}", | 4415 "\"id\":\"\",\"valueAsString\":\"44444444444444444444444444444444\"}", |
| 4406 buffer); | 4416 buffer); |
| 4407 } | 4417 } |
| 4408 // Double reference | 4418 // Double reference |
| 4409 { | 4419 { |
| 4410 JSONStream js; | 4420 JSONStream js; |
| 4411 const Double& dub = Double::Handle(Double::New(0.1234)); | 4421 const Double& dub = Double::Handle(Double::New(0.1234)); |
| 4412 dub.PrintJSON(&js, true); | 4422 dub.PrintJSON(&js, true); |
| 4413 elideSubstring("classes", js.ToCString(), buffer); | 4423 elideSubstring("classes", js.ToCString(), buffer); |
| 4414 elideSubstring("objects", buffer, buffer); | 4424 elideSubstring("objects", buffer, buffer); |
| 4415 elideSubstring("_Double@", buffer, buffer); | 4425 elideSubstring("_Double@", buffer, buffer); |
| 4416 EXPECT_STREQ( | 4426 EXPECT_STREQ( |
| 4417 "{\"type\":\"@double\"," | 4427 "{\"type\":\"@Instance\"," |
| 4428 "\"_vmType\":\"Double\"," |
| 4418 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4429 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4419 "\"name\":\"_Double\",\"_vmName\":\"\"}," | 4430 "\"name\":\"_Double\",\"_vmName\":\"\"}," |
| 4431 "\"kind\":\"Double\"," |
| 4420 "\"id\":\"\",\"valueAsString\":\"0.1234\"}", | 4432 "\"id\":\"\",\"valueAsString\":\"0.1234\"}", |
| 4421 buffer); | 4433 buffer); |
| 4422 } | 4434 } |
| 4423 // String reference | 4435 // String reference |
| 4424 { | 4436 { |
| 4425 JSONStream js; | 4437 JSONStream js; |
| 4426 const String& str = String::Handle(String::New("dw")); | 4438 const String& str = String::Handle(String::New("dw")); |
| 4427 str.PrintJSON(&js, true); | 4439 str.PrintJSON(&js, true); |
| 4428 elideSubstring("classes", js.ToCString(), buffer); | 4440 elideSubstring("classes", js.ToCString(), buffer); |
| 4429 elideSubstring("objects", buffer, buffer); | 4441 elideSubstring("objects", buffer, buffer); |
| 4430 elideSubstring("_OneByteString@", buffer, buffer); | 4442 elideSubstring("_OneByteString@", buffer, buffer); |
| 4431 EXPECT_STREQ( | 4443 EXPECT_STREQ( |
| 4432 "{\"type\":\"@String\"," | 4444 "{\"type\":\"@Instance\"," |
| 4445 "\"_vmType\":\"String\"," |
| 4433 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4446 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4434 "\"name\":\"_OneByteString\",\"_vmName\":\"\"}," | 4447 "\"name\":\"_OneByteString\",\"_vmName\":\"\"}," |
| 4448 "\"kind\":\"String\"," |
| 4435 "\"id\":\"\",\"valueAsString\":\"dw\"}", | 4449 "\"id\":\"\",\"valueAsString\":\"dw\"}", |
| 4436 buffer); | 4450 buffer); |
| 4437 } | 4451 } |
| 4438 // Array reference | 4452 // Array reference |
| 4439 { | 4453 { |
| 4440 JSONStream js; | 4454 JSONStream js; |
| 4441 const Array& array = Array::Handle(Array::New(0)); | 4455 const Array& array = Array::Handle(Array::New(0)); |
| 4442 array.PrintJSON(&js, true); | 4456 array.PrintJSON(&js, true); |
| 4443 elideSubstring("classes", js.ToCString(), buffer); | 4457 elideSubstring("classes", js.ToCString(), buffer); |
| 4444 elideSubstring("objects", buffer, buffer); | 4458 elideSubstring("objects", buffer, buffer); |
| 4445 elideSubstring("_List@", buffer, buffer); | 4459 elideSubstring("_List@", buffer, buffer); |
| 4446 EXPECT_STREQ( | 4460 EXPECT_STREQ( |
| 4447 "{\"type\":\"@List\",\"_vmType\":\"@Array\"," | 4461 "{\"type\":\"@Instance\"," |
| 4462 "\"_vmType\":\"Array\"," |
| 4448 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4463 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4449 "\"name\":\"_List\",\"_vmName\":\"\"}," | 4464 "\"name\":\"_List\",\"_vmName\":\"\"}," |
| 4465 "\"kind\":\"List\"," |
| 4450 "\"id\":\"\",\"length\":0}", | 4466 "\"id\":\"\",\"length\":0}", |
| 4451 buffer); | 4467 buffer); |
| 4452 } | 4468 } |
| 4453 // GrowableObjectArray reference | 4469 // GrowableObjectArray reference |
| 4454 { | 4470 { |
| 4455 JSONStream js; | 4471 JSONStream js; |
| 4456 const GrowableObjectArray& array = | 4472 const GrowableObjectArray& array = |
| 4457 GrowableObjectArray::Handle(GrowableObjectArray::New()); | 4473 GrowableObjectArray::Handle(GrowableObjectArray::New()); |
| 4458 array.PrintJSON(&js, true); | 4474 array.PrintJSON(&js, true); |
| 4459 elideSubstring("classes", js.ToCString(), buffer); | 4475 elideSubstring("classes", js.ToCString(), buffer); |
| 4460 elideSubstring("objects", buffer, buffer); | 4476 elideSubstring("objects", buffer, buffer); |
| 4461 elideSubstring("_GrowableList@", buffer, buffer); | 4477 elideSubstring("_GrowableList@", buffer, buffer); |
| 4462 EXPECT_STREQ( | 4478 EXPECT_STREQ( |
| 4463 "{\"type\":\"@List\",\"_vmType\":\"@GrowableObjectArray\"," | 4479 "{\"type\":\"@Instance\"," |
| 4480 "\"_vmType\":\"GrowableObjectArray\"," |
| 4464 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4481 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4465 "\"name\":\"_GrowableList\"," | 4482 "\"name\":\"_GrowableList\"," |
| 4466 "\"_vmName\":\"\"},\"id\":\"\",\"length\":0}", | 4483 "\"_vmName\":\"\"}," |
| 4484 "\"kind\":\"List\"," |
| 4485 "\"id\":\"\",\"length\":0}", |
| 4467 buffer); | 4486 buffer); |
| 4468 } | 4487 } |
| 4469 // LinkedHashMap reference | 4488 // LinkedHashMap reference |
| 4470 { | 4489 { |
| 4471 JSONStream js; | 4490 JSONStream js; |
| 4472 const LinkedHashMap& array = | 4491 const LinkedHashMap& array = |
| 4473 LinkedHashMap::Handle(LinkedHashMap::NewDefault()); | 4492 LinkedHashMap::Handle(LinkedHashMap::NewDefault()); |
| 4474 array.PrintJSON(&js, true); | 4493 array.PrintJSON(&js, true); |
| 4475 elideSubstring("classes", js.ToCString(), buffer); | 4494 elideSubstring("classes", js.ToCString(), buffer); |
| 4476 elideSubstring("objects", buffer, buffer); | 4495 elideSubstring("objects", buffer, buffer); |
| 4477 elideSubstring("_InternalLinkedHashMap@", buffer, buffer); | 4496 elideSubstring("_InternalLinkedHashMap@", buffer, buffer); |
| 4478 EXPECT_STREQ( | 4497 EXPECT_STREQ( |
| 4479 "{\"type\":\"@Instance\",\"_vmType\":\"@LinkedHashMap\"," | 4498 "{\"type\":\"@Instance\"," |
| 4499 "\"_vmType\":\"LinkedHashMap\"," |
| 4480 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4500 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4481 "\"name\":\"_InternalLinkedHashMap\",\"_vmName\":\"\"},\"id\":\"\"}", | 4501 "\"name\":\"_InternalLinkedHashMap\",\"_vmName\":\"\"}," |
| 4502 "\"kind\":\"Map\"," |
| 4503 "\"id\":\"\"}", |
| 4482 buffer); | 4504 buffer); |
| 4483 } | 4505 } |
| 4484 // UserTag reference | 4506 // UserTag reference |
| 4485 { | 4507 { |
| 4486 JSONStream js; | 4508 JSONStream js; |
| 4487 Instance& tag = Instance::Handle(isolate->default_tag()); | 4509 Instance& tag = Instance::Handle(isolate->default_tag()); |
| 4488 tag.PrintJSON(&js, true); | 4510 tag.PrintJSON(&js, true); |
| 4489 elideSubstring("classes", js.ToCString(), buffer); | 4511 elideSubstring("classes", js.ToCString(), buffer); |
| 4490 elideSubstring("objects", buffer, buffer); | 4512 elideSubstring("objects", buffer, buffer); |
| 4491 elideSubstring("_UserTag@", buffer, buffer); | 4513 elideSubstring("_UserTag@", buffer, buffer); |
| 4492 EXPECT_STREQ( | 4514 EXPECT_STREQ( |
| 4493 "{\"type\":\"@Instance\",\"_vmType\":\"@UserTag\"," | 4515 "{\"type\":\"@Instance\"," |
| 4516 "\"_vmType\":\"UserTag\"," |
| 4494 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4517 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4495 "\"name\":\"_UserTag\",\"_vmName\":\"\"}," | 4518 "\"name\":\"_UserTag\",\"_vmName\":\"\"}," |
| 4519 "\"kind\":\"PlainInstance\"," |
| 4496 "\"id\":\"\"}", | 4520 "\"id\":\"\"}", |
| 4497 buffer); | 4521 buffer); |
| 4498 } | 4522 } |
| 4499 // Type reference | 4523 // Type reference |
| 4500 // TODO(turnidge): Add in all of the other Type siblings. | 4524 // TODO(turnidge): Add in all of the other Type siblings. |
| 4501 { | 4525 { |
| 4502 JSONStream js; | 4526 JSONStream js; |
| 4503 Instance& type = Instance::Handle(isolate->object_store()->bool_type()); | 4527 Instance& type = Instance::Handle(isolate->object_store()->bool_type()); |
| 4504 type.PrintJSON(&js, true); | 4528 type.PrintJSON(&js, true); |
| 4505 elideSubstring("classes", js.ToCString(), buffer); | 4529 elideSubstring("classes", js.ToCString(), buffer); |
| 4506 elideSubstring("objects", buffer, buffer); | 4530 elideSubstring("objects", buffer, buffer); |
| 4507 elideSubstring("_Type@", buffer, buffer); | 4531 elideSubstring("_Type@", buffer, buffer); |
| 4508 EXPECT_STREQ( | 4532 EXPECT_STREQ( |
| 4509 "{\"type\":\"@Type\"," | 4533 "{\"type\":\"@Instance\"," |
| 4534 "\"_vmType\":\"Type\"," |
| 4510 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4535 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4511 "\"name\":\"_Type\",\"_vmName\":\"\"},\"fixedId\":true,\"id\":\"\"," | 4536 "\"name\":\"_Type\",\"_vmName\":\"\"}," |
| 4537 "\"kind\":\"Type\"," |
| 4538 "\"fixedId\":true,\"id\":\"\"," |
| 4512 "\"typeClass\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," | 4539 "\"typeClass\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4513 "\"name\":\"bool\"},\"name\":\"bool\"}", | 4540 "\"name\":\"bool\"},\"name\":\"bool\"}", |
| 4514 buffer); | 4541 buffer); |
| 4515 } | 4542 } |
| 4516 // Null reference | 4543 // Null reference |
| 4517 { | 4544 { |
| 4518 JSONStream js; | 4545 JSONStream js; |
| 4519 Object::null_object().PrintJSON(&js, true); | 4546 Object::null_object().PrintJSON(&js, true); |
| 4520 EXPECT_STREQ( | 4547 EXPECT_STREQ( |
| 4521 "{\"type\":\"@null\",\"fixedId\":true," | 4548 "{\"type\":\"@Instance\"," |
| 4549 "\"_vmType\":\"null\"," |
| 4550 "\"kind\":\"Null\"," |
| 4551 "\"fixedId\":true," |
| 4522 "\"id\":\"objects\\/null\"," | 4552 "\"id\":\"objects\\/null\"," |
| 4523 "\"valueAsString\":\"null\"}", | 4553 "\"valueAsString\":\"null\"}", |
| 4524 js.ToCString()); | 4554 js.ToCString()); |
| 4525 } | 4555 } |
| 4526 // Sentinel reference | 4556 // Sentinel reference |
| 4527 { | 4557 { |
| 4528 JSONStream js; | 4558 JSONStream js; |
| 4529 Object::sentinel().PrintJSON(&js, true); | 4559 Object::sentinel().PrintJSON(&js, true); |
| 4530 EXPECT_STREQ( | 4560 EXPECT_STREQ( |
| 4531 "{\"type\":\"Sentinel\"," | 4561 "{\"type\":\"Sentinel\"," |
| (...skipping 13 matching lines...) Expand all Loading... |
| 4545 } | 4575 } |
| 4546 // LiteralToken reference. This is meant to be an example of a | 4576 // LiteralToken reference. This is meant to be an example of a |
| 4547 // "weird" type that isn't usually returned by the VM Service except | 4577 // "weird" type that isn't usually returned by the VM Service except |
| 4548 // when we are doing direct heap inspection. | 4578 // when we are doing direct heap inspection. |
| 4549 { | 4579 { |
| 4550 JSONStream js; | 4580 JSONStream js; |
| 4551 LiteralToken& tok = LiteralToken::Handle(LiteralToken::New()); | 4581 LiteralToken& tok = LiteralToken::Handle(LiteralToken::New()); |
| 4552 tok.PrintJSON(&js, true); | 4582 tok.PrintJSON(&js, true); |
| 4553 elideSubstring("objects", js.ToCString(), buffer); | 4583 elideSubstring("objects", js.ToCString(), buffer); |
| 4554 EXPECT_STREQ( | 4584 EXPECT_STREQ( |
| 4555 "{\"type\":\"@Object\",\"_vmType\":\"@LiteralToken\",\"id\":\"\"}", | 4585 "{\"type\":\"@Object\",\"_vmType\":\"LiteralToken\",\"id\":\"\"}", |
| 4556 buffer); | 4586 buffer); |
| 4557 } | 4587 } |
| 4558 } | 4588 } |
| 4559 | 4589 |
| 4560 | 4590 |
| 4561 TEST_CASE(InstanceEquality) { | 4591 TEST_CASE(InstanceEquality) { |
| 4562 // Test that Instance::OperatorEquals can call a user-defined operator==. | 4592 // Test that Instance::OperatorEquals can call a user-defined operator==. |
| 4563 const char* kScript = | 4593 const char* kScript = |
| 4564 "class A {\n" | 4594 "class A {\n" |
| 4565 " bool operator==(A other) { return true; }\n" | 4595 " bool operator==(A other) { return true; }\n" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4670 // 2. Create an empty internalized LinkedHashMap in C++. | 4700 // 2. Create an empty internalized LinkedHashMap in C++. |
| 4671 Instance& dart_map = Instance::Handle(); | 4701 Instance& dart_map = Instance::Handle(); |
| 4672 dart_map ^= Api::UnwrapHandle(h_result); | 4702 dart_map ^= Api::UnwrapHandle(h_result); |
| 4673 LinkedHashMap& cc_map = LinkedHashMap::Handle(LinkedHashMap::NewDefault()); | 4703 LinkedHashMap& cc_map = LinkedHashMap::Handle(LinkedHashMap::NewDefault()); |
| 4674 | 4704 |
| 4675 // 3. Expect them to have identical structure. | 4705 // 3. Expect them to have identical structure. |
| 4676 CheckIdenticalHashStructure(dart_map, cc_map); | 4706 CheckIdenticalHashStructure(dart_map, cc_map); |
| 4677 } | 4707 } |
| 4678 | 4708 |
| 4679 } // namespace dart | 4709 } // namespace dart |
| OLD | NEW |