| 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 4296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4307 char buffer[1024]; | 4307 char buffer[1024]; |
| 4308 Isolate* isolate = Isolate::Current(); | 4308 Isolate* isolate = Isolate::Current(); |
| 4309 | 4309 |
| 4310 // Class reference | 4310 // Class reference |
| 4311 { | 4311 { |
| 4312 JSONStream js; | 4312 JSONStream js; |
| 4313 Class& cls = Class::Handle(isolate->object_store()->bool_class()); | 4313 Class& cls = Class::Handle(isolate->object_store()->bool_class()); |
| 4314 cls.PrintJSON(&js, true); | 4314 cls.PrintJSON(&js, true); |
| 4315 elideSubstring("classes", js.ToCString(), buffer); | 4315 elideSubstring("classes", js.ToCString(), buffer); |
| 4316 EXPECT_STREQ( | 4316 EXPECT_STREQ( |
| 4317 "{\"type\":\"@Class\",\"id\":\"\",\"name\":\"bool\"}", | 4317 "{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\",\"name\":\"bool\"}", |
| 4318 buffer); | 4318 buffer); |
| 4319 } | 4319 } |
| 4320 // Function reference | 4320 // Function reference |
| 4321 { | 4321 { |
| 4322 JSONStream js; | 4322 JSONStream js; |
| 4323 Class& cls = Class::Handle(isolate->object_store()->bool_class()); | 4323 Class& cls = Class::Handle(isolate->object_store()->bool_class()); |
| 4324 const String& func_name = String::Handle(String::New("toString")); | 4324 const String& func_name = String::Handle(String::New("toString")); |
| 4325 Function& func = Function::Handle(cls.LookupFunction(func_name)); | 4325 Function& func = Function::Handle(cls.LookupFunction(func_name)); |
| 4326 ASSERT(!func.IsNull()); | 4326 ASSERT(!func.IsNull()); |
| 4327 func.PrintJSON(&js, true); | 4327 func.PrintJSON(&js, true); |
| 4328 elideSubstring("classes", js.ToCString(), buffer); | 4328 elideSubstring("classes", js.ToCString(), buffer); |
| 4329 EXPECT_STREQ( | 4329 EXPECT_STREQ( |
| 4330 "{\"type\":\"@Function\",\"id\":\"\",\"name\":\"toString\"," | 4330 "{\"type\":\"@Function\",\"fixedId\":true," |
| 4331 "\"owner\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"bool\"}," | 4331 "\"id\":\"\",\"name\":\"toString\"," |
| 4332 "\"owner\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4333 "\"name\":\"bool\"}," |
| 4332 "\"kind\":\"RegularFunction\"}", | 4334 "\"kind\":\"RegularFunction\"}", |
| 4333 buffer); | 4335 buffer); |
| 4334 } | 4336 } |
| 4335 // Library reference | 4337 // Library reference |
| 4336 { | 4338 { |
| 4337 JSONStream js; | 4339 JSONStream js; |
| 4338 Library& lib = Library::Handle(isolate->object_store()->core_library()); | 4340 Library& lib = Library::Handle(isolate->object_store()->core_library()); |
| 4339 lib.PrintJSON(&js, true); | 4341 lib.PrintJSON(&js, true); |
| 4340 elideSubstring("libraries", js.ToCString(), buffer); | 4342 elideSubstring("libraries", js.ToCString(), buffer); |
| 4341 EXPECT_STREQ( | 4343 EXPECT_STREQ( |
| 4342 "{\"type\":\"@Library\",\"id\":\"\",\"name\":\"dart.core\"," | 4344 "{\"type\":\"@Library\",\"fixedId\":true,\"id\":\"\"," |
| 4343 "\"uri\":\"dart:core\"}", | 4345 "\"name\":\"dart.core\",\"uri\":\"dart:core\"}", |
| 4344 buffer); | 4346 buffer); |
| 4345 } | 4347 } |
| 4346 // Bool reference | 4348 // Bool reference |
| 4347 { | 4349 { |
| 4348 JSONStream js; | 4350 JSONStream js; |
| 4349 Bool::True().PrintJSON(&js, true); | 4351 Bool::True().PrintJSON(&js, true); |
| 4350 elideSubstring("classes", js.ToCString(), buffer); | 4352 elideSubstring("classes", js.ToCString(), buffer); |
| 4351 EXPECT_STREQ( | 4353 EXPECT_STREQ( |
| 4352 "{\"type\":\"@bool\"," | 4354 "{\"type\":\"@bool\"," |
| 4353 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"bool\"}," | 4355 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4356 "\"name\":\"bool\"},\"fixedId\":true," |
| 4354 "\"id\":\"objects\\/bool-true\",\"valueAsString\":\"true\"}", | 4357 "\"id\":\"objects\\/bool-true\",\"valueAsString\":\"true\"}", |
| 4355 buffer); | 4358 buffer); |
| 4356 } | 4359 } |
| 4357 // Smi reference | 4360 // Smi reference |
| 4358 { | 4361 { |
| 4359 JSONStream js; | 4362 JSONStream js; |
| 4360 const Integer& smi = Integer::Handle(Integer::New(7)); | 4363 const Integer& smi = Integer::Handle(Integer::New(7)); |
| 4361 smi.PrintJSON(&js, true); | 4364 smi.PrintJSON(&js, true); |
| 4362 elideSubstring("classes", js.ToCString(), buffer); | 4365 elideSubstring("classes", js.ToCString(), buffer); |
| 4363 elideSubstring("_Smi@", buffer, buffer); | 4366 elideSubstring("_Smi@", buffer, buffer); |
| 4364 EXPECT_STREQ( | 4367 EXPECT_STREQ( |
| 4365 "{\"type\":\"@int\",\"_vmType\":\"@Smi\"," | 4368 "{\"type\":\"@int\",\"_vmType\":\"@Smi\"," |
| 4366 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_Smi\"," | 4369 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4367 "\"_vmName\":\"\"}," | 4370 "\"name\":\"_Smi\"," |
| 4371 "\"_vmName\":\"\"},\"fixedId\":true," |
| 4368 "\"id\":\"objects\\/int-7\",\"valueAsString\":\"7\"}", | 4372 "\"id\":\"objects\\/int-7\",\"valueAsString\":\"7\"}", |
| 4369 buffer); | 4373 buffer); |
| 4370 } | 4374 } |
| 4371 // Mint reference | 4375 // Mint reference |
| 4372 { | 4376 { |
| 4373 JSONStream js; | 4377 JSONStream js; |
| 4374 const Integer& smi = Integer::Handle(Integer::New(Mint::kMinValue)); | 4378 const Integer& smi = Integer::Handle(Integer::New(Mint::kMinValue)); |
| 4375 smi.PrintJSON(&js, true); | 4379 smi.PrintJSON(&js, true); |
| 4376 elideSubstring("classes", js.ToCString(), buffer); | 4380 elideSubstring("classes", js.ToCString(), buffer); |
| 4377 elideSubstring("objects", buffer, buffer); | 4381 elideSubstring("objects", buffer, buffer); |
| 4378 elideSubstring("_Mint@", buffer, buffer); | 4382 elideSubstring("_Mint@", buffer, buffer); |
| 4379 EXPECT_STREQ( | 4383 EXPECT_STREQ( |
| 4380 "{\"type\":\"@int\",\"_vmType\":\"@Mint\"," | 4384 "{\"type\":\"@int\",\"_vmType\":\"@Mint\"," |
| 4381 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_Mint\"," | 4385 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4382 "\"_vmName\":\"\"}," | 4386 "\"name\":\"_Mint\",\"_vmName\":\"\"}," |
| 4383 "\"id\":\"\",\"valueAsString\":\"-9223372036854775808\"}", | 4387 "\"id\":\"\",\"valueAsString\":\"-9223372036854775808\"}", |
| 4384 buffer); | 4388 buffer); |
| 4385 } | 4389 } |
| 4386 // Bigint reference | 4390 // Bigint reference |
| 4387 { | 4391 { |
| 4388 JSONStream js; | 4392 JSONStream js; |
| 4389 const String& bigint_str = | 4393 const String& bigint_str = |
| 4390 String::Handle(String::New("44444444444444444444444444444444")); | 4394 String::Handle(String::New("44444444444444444444444444444444")); |
| 4391 const Integer& bigint = Integer::Handle(Integer::New(bigint_str)); | 4395 const Integer& bigint = Integer::Handle(Integer::New(bigint_str)); |
| 4392 bigint.PrintJSON(&js, true); | 4396 bigint.PrintJSON(&js, true); |
| 4393 elideSubstring("classes", js.ToCString(), buffer); | 4397 elideSubstring("classes", js.ToCString(), buffer); |
| 4394 elideSubstring("objects", buffer, buffer); | 4398 elideSubstring("objects", buffer, buffer); |
| 4395 elideSubstring("_Bigint@", buffer, buffer); | 4399 elideSubstring("_Bigint@", buffer, buffer); |
| 4396 EXPECT_STREQ( | 4400 EXPECT_STREQ( |
| 4397 "{\"type\":\"@int\",\"_vmType\":\"@Bigint\"," | 4401 "{\"type\":\"@int\",\"_vmType\":\"@Bigint\"," |
| 4398 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_Bigint\"," | 4402 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4399 "\"_vmName\":\"\"}," | 4403 "\"name\":\"_Bigint\",\"_vmName\":\"\"}," |
| 4400 "\"id\":\"\",\"valueAsString\":\"44444444444444444444444444444444\"}", | 4404 "\"id\":\"\",\"valueAsString\":\"44444444444444444444444444444444\"}", |
| 4401 buffer); | 4405 buffer); |
| 4402 } | 4406 } |
| 4403 // Double reference | 4407 // Double reference |
| 4404 { | 4408 { |
| 4405 JSONStream js; | 4409 JSONStream js; |
| 4406 const Double& dub = Double::Handle(Double::New(0.1234)); | 4410 const Double& dub = Double::Handle(Double::New(0.1234)); |
| 4407 dub.PrintJSON(&js, true); | 4411 dub.PrintJSON(&js, true); |
| 4408 elideSubstring("classes", js.ToCString(), buffer); | 4412 elideSubstring("classes", js.ToCString(), buffer); |
| 4409 elideSubstring("objects", buffer, buffer); | 4413 elideSubstring("objects", buffer, buffer); |
| 4410 elideSubstring("_Double@", buffer, buffer); | 4414 elideSubstring("_Double@", buffer, buffer); |
| 4411 EXPECT_STREQ( | 4415 EXPECT_STREQ( |
| 4412 "{\"type\":\"@double\"," | 4416 "{\"type\":\"@double\"," |
| 4413 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_Double\"," | 4417 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4414 "\"_vmName\":\"\"}," | 4418 "\"name\":\"_Double\",\"_vmName\":\"\"}," |
| 4415 "\"id\":\"\",\"valueAsString\":\"0.1234\"}", | 4419 "\"id\":\"\",\"valueAsString\":\"0.1234\"}", |
| 4416 buffer); | 4420 buffer); |
| 4417 } | 4421 } |
| 4418 // String reference | 4422 // String reference |
| 4419 { | 4423 { |
| 4420 JSONStream js; | 4424 JSONStream js; |
| 4421 const String& str = String::Handle(String::New("dw")); | 4425 const String& str = String::Handle(String::New("dw")); |
| 4422 str.PrintJSON(&js, true); | 4426 str.PrintJSON(&js, true); |
| 4423 elideSubstring("classes", js.ToCString(), buffer); | 4427 elideSubstring("classes", js.ToCString(), buffer); |
| 4424 elideSubstring("objects", buffer, buffer); | 4428 elideSubstring("objects", buffer, buffer); |
| 4425 elideSubstring("_OneByteString@", buffer, buffer); | 4429 elideSubstring("_OneByteString@", buffer, buffer); |
| 4426 EXPECT_STREQ( | 4430 EXPECT_STREQ( |
| 4427 "{\"type\":\"@String\"," | 4431 "{\"type\":\"@String\"," |
| 4428 "\"class\":{\"type\":\"@Class\",\"id\":\"\"," | 4432 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4429 "\"name\":\"_OneByteString\",\"_vmName\":\"\"}," | 4433 "\"name\":\"_OneByteString\",\"_vmName\":\"\"}," |
| 4430 "\"id\":\"\",\"valueAsString\":\"dw\"}", | 4434 "\"id\":\"\",\"valueAsString\":\"dw\"}", |
| 4431 buffer); | 4435 buffer); |
| 4432 } | 4436 } |
| 4433 // Array reference | 4437 // Array reference |
| 4434 { | 4438 { |
| 4435 JSONStream js; | 4439 JSONStream js; |
| 4436 const Array& array = Array::Handle(Array::New(0)); | 4440 const Array& array = Array::Handle(Array::New(0)); |
| 4437 array.PrintJSON(&js, true); | 4441 array.PrintJSON(&js, true); |
| 4438 elideSubstring("classes", js.ToCString(), buffer); | 4442 elideSubstring("classes", js.ToCString(), buffer); |
| 4439 elideSubstring("objects", buffer, buffer); | 4443 elideSubstring("objects", buffer, buffer); |
| 4440 elideSubstring("_List@", buffer, buffer); | 4444 elideSubstring("_List@", buffer, buffer); |
| 4441 EXPECT_STREQ( | 4445 EXPECT_STREQ( |
| 4442 "{\"type\":\"@List\",\"_vmType\":\"@Array\"," | 4446 "{\"type\":\"@List\",\"_vmType\":\"@Array\"," |
| 4443 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_List\"," | 4447 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4444 "\"_vmName\":\"\"}," | 4448 "\"name\":\"_List\",\"_vmName\":\"\"}," |
| 4445 "\"id\":\"\",\"length\":0}", | 4449 "\"id\":\"\",\"length\":0}", |
| 4446 buffer); | 4450 buffer); |
| 4447 } | 4451 } |
| 4448 // GrowableObjectArray reference | 4452 // GrowableObjectArray reference |
| 4449 { | 4453 { |
| 4450 JSONStream js; | 4454 JSONStream js; |
| 4451 const GrowableObjectArray& array = | 4455 const GrowableObjectArray& array = |
| 4452 GrowableObjectArray::Handle(GrowableObjectArray::New()); | 4456 GrowableObjectArray::Handle(GrowableObjectArray::New()); |
| 4453 array.PrintJSON(&js, true); | 4457 array.PrintJSON(&js, true); |
| 4454 elideSubstring("classes", js.ToCString(), buffer); | 4458 elideSubstring("classes", js.ToCString(), buffer); |
| 4455 elideSubstring("objects", buffer, buffer); | 4459 elideSubstring("objects", buffer, buffer); |
| 4456 elideSubstring("_GrowableList@", buffer, buffer); | 4460 elideSubstring("_GrowableList@", buffer, buffer); |
| 4457 EXPECT_STREQ( | 4461 EXPECT_STREQ( |
| 4458 "{\"type\":\"@List\",\"_vmType\":\"@GrowableObjectArray\"," | 4462 "{\"type\":\"@List\",\"_vmType\":\"@GrowableObjectArray\"," |
| 4459 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_GrowableList\"," | 4463 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4464 "\"name\":\"_GrowableList\"," |
| 4460 "\"_vmName\":\"\"},\"id\":\"\",\"length\":0}", | 4465 "\"_vmName\":\"\"},\"id\":\"\",\"length\":0}", |
| 4461 buffer); | 4466 buffer); |
| 4462 } | 4467 } |
| 4463 // LinkedHashMap reference | 4468 // LinkedHashMap reference |
| 4464 { | 4469 { |
| 4465 JSONStream js; | 4470 JSONStream js; |
| 4466 const LinkedHashMap& array = LinkedHashMap::Handle(LinkedHashMap::New()); | 4471 const LinkedHashMap& array = LinkedHashMap::Handle(LinkedHashMap::New()); |
| 4467 array.PrintJSON(&js, true); | 4472 array.PrintJSON(&js, true); |
| 4468 elideSubstring("classes", js.ToCString(), buffer); | 4473 elideSubstring("classes", js.ToCString(), buffer); |
| 4469 elideSubstring("objects", buffer, buffer); | 4474 elideSubstring("objects", buffer, buffer); |
| 4470 elideSubstring("_InternalLinkedHashMap@", buffer, buffer); | 4475 elideSubstring("_InternalLinkedHashMap@", buffer, buffer); |
| 4471 EXPECT_STREQ( | 4476 EXPECT_STREQ( |
| 4472 "{\"type\":\"@Instance\",\"_vmType\":\"@LinkedHashMap\"," | 4477 "{\"type\":\"@Instance\",\"_vmType\":\"@LinkedHashMap\"," |
| 4473 "\"class\":{\"type\":\"@Class\",\"id\":\"\"," | 4478 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4474 "\"name\":\"_InternalLinkedHashMap\",\"_vmName\":\"\"},\"id\":\"\"}", | 4479 "\"name\":\"_InternalLinkedHashMap\",\"_vmName\":\"\"},\"id\":\"\"}", |
| 4475 buffer); | 4480 buffer); |
| 4476 } | 4481 } |
| 4477 // UserTag reference | 4482 // UserTag reference |
| 4478 { | 4483 { |
| 4479 JSONStream js; | 4484 JSONStream js; |
| 4480 Instance& tag = Instance::Handle(isolate->default_tag()); | 4485 Instance& tag = Instance::Handle(isolate->default_tag()); |
| 4481 tag.PrintJSON(&js, true); | 4486 tag.PrintJSON(&js, true); |
| 4482 elideSubstring("classes", js.ToCString(), buffer); | 4487 elideSubstring("classes", js.ToCString(), buffer); |
| 4483 elideSubstring("objects", buffer, buffer); | 4488 elideSubstring("objects", buffer, buffer); |
| 4484 elideSubstring("_UserTag@", buffer, buffer); | 4489 elideSubstring("_UserTag@", buffer, buffer); |
| 4485 EXPECT_STREQ( | 4490 EXPECT_STREQ( |
| 4486 "{\"type\":\"@Instance\",\"_vmType\":\"@UserTag\"," | 4491 "{\"type\":\"@Instance\",\"_vmType\":\"@UserTag\"," |
| 4487 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_UserTag\"," | 4492 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4488 "\"_vmName\":\"\"}," | 4493 "\"name\":\"_UserTag\",\"_vmName\":\"\"}," |
| 4489 "\"id\":\"\"}", | 4494 "\"id\":\"\"}", |
| 4490 buffer); | 4495 buffer); |
| 4491 } | 4496 } |
| 4492 // Type reference | 4497 // Type reference |
| 4493 // TODO(turnidge): Add in all of the other Type siblings. | 4498 // TODO(turnidge): Add in all of the other Type siblings. |
| 4494 { | 4499 { |
| 4495 JSONStream js; | 4500 JSONStream js; |
| 4496 Instance& type = Instance::Handle(isolate->object_store()->bool_type()); | 4501 Instance& type = Instance::Handle(isolate->object_store()->bool_type()); |
| 4497 type.PrintJSON(&js, true); | 4502 type.PrintJSON(&js, true); |
| 4498 elideSubstring("classes", js.ToCString(), buffer); | 4503 elideSubstring("classes", js.ToCString(), buffer); |
| 4499 elideSubstring("objects", buffer, buffer); | 4504 elideSubstring("objects", buffer, buffer); |
| 4500 elideSubstring("_Type@", buffer, buffer); | 4505 elideSubstring("_Type@", buffer, buffer); |
| 4501 EXPECT_STREQ( | 4506 EXPECT_STREQ( |
| 4502 "{\"type\":\"@Type\"," | 4507 "{\"type\":\"@Type\"," |
| 4503 "\"class\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"_Type\"," | 4508 "\"class\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4504 "\"_vmName\":\"\"},\"id\":\"\"," | 4509 "\"name\":\"_Type\",\"_vmName\":\"\"},\"fixedId\":true,\"id\":\"\"," |
| 4505 "\"typeClass\":{\"type\":\"@Class\",\"id\":\"\",\"name\":\"bool\"}," | 4510 "\"typeClass\":{\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\"," |
| 4506 "\"name\":\"bool\"}", | 4511 "\"name\":\"bool\"},\"name\":\"bool\"}", |
| 4507 buffer); | 4512 buffer); |
| 4508 } | 4513 } |
| 4509 // Null reference | 4514 // Null reference |
| 4510 { | 4515 { |
| 4511 JSONStream js; | 4516 JSONStream js; |
| 4512 Object::null_object().PrintJSON(&js, true); | 4517 Object::null_object().PrintJSON(&js, true); |
| 4513 EXPECT_STREQ( | 4518 EXPECT_STREQ( |
| 4514 "{\"type\":\"@null\",\"id\":\"objects\\/null\"," | 4519 "{\"type\":\"@null\",\"fixedId\":true," |
| 4520 "\"id\":\"objects\\/null\"," |
| 4515 "\"valueAsString\":\"null\"}", | 4521 "\"valueAsString\":\"null\"}", |
| 4516 js.ToCString()); | 4522 js.ToCString()); |
| 4517 } | 4523 } |
| 4518 // Sentinel reference | 4524 // Sentinel reference |
| 4519 { | 4525 { |
| 4520 JSONStream js; | 4526 JSONStream js; |
| 4521 Object::sentinel().PrintJSON(&js, true); | 4527 Object::sentinel().PrintJSON(&js, true); |
| 4522 EXPECT_STREQ( | 4528 EXPECT_STREQ( |
| 4523 "{\"type\":\"Sentinel\",\"id\":\"objects\\/not-initialized\"," | 4529 "{\"type\":\"Sentinel\",\"fixedId\":true," |
| 4530 "\"id\":\"objects\\/not-initialized\"," |
| 4524 "\"valueAsString\":\"<not initialized>\"}", | 4531 "\"valueAsString\":\"<not initialized>\"}", |
| 4525 js.ToCString()); | 4532 js.ToCString()); |
| 4526 } | 4533 } |
| 4527 // Transition sentinel reference | 4534 // Transition sentinel reference |
| 4528 { | 4535 { |
| 4529 JSONStream js; | 4536 JSONStream js; |
| 4530 Object::transition_sentinel().PrintJSON(&js, true); | 4537 Object::transition_sentinel().PrintJSON(&js, true); |
| 4531 EXPECT_STREQ( | 4538 EXPECT_STREQ( |
| 4532 "{\"type\":\"Sentinel\",\"id\":\"objects\\/being-initialized\"," | 4539 "{\"type\":\"Sentinel\",\"fixedId\":true," |
| 4540 "\"id\":\"objects\\/being-initialized\"," |
| 4533 "\"valueAsString\":\"<being initialized>\"}", | 4541 "\"valueAsString\":\"<being initialized>\"}", |
| 4534 js.ToCString()); | 4542 js.ToCString()); |
| 4535 } | 4543 } |
| 4536 // LiteralToken reference. This is meant to be an example of a | 4544 // LiteralToken reference. This is meant to be an example of a |
| 4537 // "weird" type that isn't usually returned by the VM Service except | 4545 // "weird" type that isn't usually returned by the VM Service except |
| 4538 // when we are doing direct heap inspection. | 4546 // when we are doing direct heap inspection. |
| 4539 { | 4547 { |
| 4540 JSONStream js; | 4548 JSONStream js; |
| 4541 LiteralToken& tok = LiteralToken::Handle(LiteralToken::New()); | 4549 LiteralToken& tok = LiteralToken::Handle(LiteralToken::New()); |
| 4542 tok.PrintJSON(&js, true); | 4550 tok.PrintJSON(&js, true); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4593 EXPECT_VALID(h_result); | 4601 EXPECT_VALID(h_result); |
| 4594 Integer& result = Integer::Handle(); | 4602 Integer& result = Integer::Handle(); |
| 4595 result ^= Api::UnwrapHandle(h_result); | 4603 result ^= Api::UnwrapHandle(h_result); |
| 4596 String& foo = String::Handle(String::New("foo")); | 4604 String& foo = String::Handle(String::New("foo")); |
| 4597 Integer& expected = Integer::Handle(); | 4605 Integer& expected = Integer::Handle(); |
| 4598 expected ^= foo.HashCode(); | 4606 expected ^= foo.HashCode(); |
| 4599 EXPECT(result.IsIdenticalTo(expected)); | 4607 EXPECT(result.IsIdenticalTo(expected)); |
| 4600 } | 4608 } |
| 4601 | 4609 |
| 4602 } // namespace dart | 4610 } // namespace dart |
| OLD | NEW |