Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2007-2010 the V8 project authors. All rights reserved. | 1 // Copyright 2007-2010 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 168 } | 168 } |
| 169 CopyChars(source + head.length() + repeats * body.length(), tail.start(), | 169 CopyChars(source + head.length() + repeats * body.length(), tail.start(), |
| 170 tail.length()); | 170 tail.length()); |
| 171 return Vector<const uint8_t>(const_cast<const uint8_t*>(source), | 171 return Vector<const uint8_t>(const_cast<const uint8_t*>(source), |
| 172 source_length); | 172 source_length); |
| 173 } | 173 } |
| 174 | 174 |
| 175 | 175 |
| 176 // Test that the whole heap can be serialized. | 176 // Test that the whole heap can be serialized. |
| 177 UNINITIALIZED_TEST(Serialize) { | 177 UNINITIALIZED_TEST(Serialize) { |
| 178 if (!Snapshot::HaveASnapshotToStartFrom()) { | 178 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 179 v8::Isolate::CreateParams params; | 179 v8::Isolate::CreateParams params; |
| 180 params.enable_serializer = true; | 180 params.enable_serializer = true; |
| 181 v8::Isolate* isolate = v8::Isolate::New(params); | 181 v8::Isolate* isolate = v8::Isolate::New(params); |
| 182 Serialize(isolate); | 182 Serialize(isolate); |
| 183 } | 183 } |
| 184 } | 184 } |
| 185 | 185 |
| 186 | 186 |
| 187 // Test that heap serialization is non-destructive. | 187 // Test that heap serialization is non-destructive. |
| 188 UNINITIALIZED_TEST(SerializeTwice) { | 188 UNINITIALIZED_TEST(SerializeTwice) { |
| 189 if (!Snapshot::HaveASnapshotToStartFrom()) { | 189 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 190 v8::Isolate::CreateParams params; | 190 v8::Isolate::CreateParams params; |
| 191 params.enable_serializer = true; | 191 params.enable_serializer = true; |
| 192 v8::Isolate* isolate = v8::Isolate::New(params); | 192 v8::Isolate* isolate = v8::Isolate::New(params); |
| 193 Serialize(isolate); | 193 Serialize(isolate); |
| 194 Serialize(isolate); | 194 Serialize(isolate); |
| 195 } | 195 } |
| 196 } | 196 } |
| 197 | 197 |
| 198 | 198 |
| 199 //---------------------------------------------------------------------------- | 199 //---------------------------------------------------------------------------- |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 234 CHECK(isolate->native_context()->IsContext()); | 234 CHECK(isolate->native_context()->IsContext()); |
| 235 CHECK(isolate->heap()->string_table()->IsStringTable()); | 235 CHECK(isolate->heap()->string_table()->IsStringTable()); |
| 236 isolate->factory()->InternalizeOneByteString(STATIC_CHAR_VECTOR("Empty")); | 236 isolate->factory()->InternalizeOneByteString(STATIC_CHAR_VECTOR("Empty")); |
| 237 } | 237 } |
| 238 | 238 |
| 239 | 239 |
| 240 UNINITIALIZED_DEPENDENT_TEST(Deserialize, Serialize) { | 240 UNINITIALIZED_DEPENDENT_TEST(Deserialize, Serialize) { |
| 241 // The serialize-deserialize tests only work if the VM is built without | 241 // The serialize-deserialize tests only work if the VM is built without |
| 242 // serialization. That doesn't matter. We don't need to be able to | 242 // serialization. That doesn't matter. We don't need to be able to |
| 243 // serialize a snapshot in a VM that is booted from a snapshot. | 243 // serialize a snapshot in a VM that is booted from a snapshot. |
| 244 if (!Snapshot::HaveASnapshotToStartFrom()) { | 244 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 245 v8::Isolate* isolate = Deserialize(); | 245 v8::Isolate* isolate = Deserialize(); |
| 246 { | 246 { |
| 247 v8::HandleScope handle_scope(isolate); | 247 v8::HandleScope handle_scope(isolate); |
| 248 v8::Isolate::Scope isolate_scope(isolate); | 248 v8::Isolate::Scope isolate_scope(isolate); |
| 249 | 249 |
| 250 v8::Local<v8::Context> env = v8::Context::New(isolate); | 250 v8::Local<v8::Context> env = v8::Context::New(isolate); |
| 251 env->Enter(); | 251 env->Enter(); |
| 252 | 252 |
| 253 SanityCheck(isolate); | 253 SanityCheck(isolate); |
| 254 } | 254 } |
| 255 isolate->Dispose(); | 255 isolate->Dispose(); |
| 256 } | 256 } |
| 257 } | 257 } |
| 258 | 258 |
| 259 | 259 |
| 260 UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerialization, | 260 UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerialization, |
| 261 SerializeTwice) { | 261 SerializeTwice) { |
| 262 if (!Snapshot::HaveASnapshotToStartFrom()) { | 262 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 263 v8::Isolate* isolate = Deserialize(); | 263 v8::Isolate* isolate = Deserialize(); |
| 264 { | 264 { |
| 265 v8::Isolate::Scope isolate_scope(isolate); | 265 v8::Isolate::Scope isolate_scope(isolate); |
| 266 v8::HandleScope handle_scope(isolate); | 266 v8::HandleScope handle_scope(isolate); |
| 267 | 267 |
| 268 v8::Local<v8::Context> env = v8::Context::New(isolate); | 268 v8::Local<v8::Context> env = v8::Context::New(isolate); |
| 269 env->Enter(); | 269 env->Enter(); |
| 270 | 270 |
| 271 SanityCheck(isolate); | 271 SanityCheck(isolate); |
| 272 } | 272 } |
| 273 isolate->Dispose(); | 273 isolate->Dispose(); |
| 274 } | 274 } |
| 275 } | 275 } |
| 276 | 276 |
| 277 | 277 |
| 278 UNINITIALIZED_DEPENDENT_TEST(DeserializeAndRunScript2, Serialize) { | 278 UNINITIALIZED_DEPENDENT_TEST(DeserializeAndRunScript2, Serialize) { |
| 279 if (!Snapshot::HaveASnapshotToStartFrom()) { | 279 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 280 v8::Isolate* isolate = Deserialize(); | 280 v8::Isolate* isolate = Deserialize(); |
| 281 { | 281 { |
| 282 v8::Isolate::Scope isolate_scope(isolate); | 282 v8::Isolate::Scope isolate_scope(isolate); |
| 283 v8::HandleScope handle_scope(isolate); | 283 v8::HandleScope handle_scope(isolate); |
| 284 | 284 |
| 285 | 285 |
| 286 v8::Local<v8::Context> env = v8::Context::New(isolate); | 286 v8::Local<v8::Context> env = v8::Context::New(isolate); |
| 287 env->Enter(); | 287 env->Enter(); |
| 288 | 288 |
| 289 const char* c_source = "\"1234\".length"; | 289 const char* c_source = "\"1234\".length"; |
| 290 v8::Local<v8::String> source = v8::String::NewFromUtf8(isolate, c_source); | 290 v8::Local<v8::String> source = v8::String::NewFromUtf8(isolate, c_source); |
| 291 v8::Local<v8::Script> script = v8::Script::Compile(source); | 291 v8::Local<v8::Script> script = v8::Script::Compile(source); |
| 292 CHECK_EQ(4, script->Run()->Int32Value()); | 292 CHECK_EQ(4, script->Run()->Int32Value()); |
| 293 } | 293 } |
| 294 isolate->Dispose(); | 294 isolate->Dispose(); |
| 295 } | 295 } |
| 296 } | 296 } |
| 297 | 297 |
| 298 | 298 |
| 299 UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerializationAndRunScript2, | 299 UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerializationAndRunScript2, |
| 300 SerializeTwice) { | 300 SerializeTwice) { |
| 301 if (!Snapshot::HaveASnapshotToStartFrom()) { | 301 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 302 v8::Isolate* isolate = Deserialize(); | 302 v8::Isolate* isolate = Deserialize(); |
| 303 { | 303 { |
| 304 v8::Isolate::Scope isolate_scope(isolate); | 304 v8::Isolate::Scope isolate_scope(isolate); |
| 305 v8::HandleScope handle_scope(isolate); | 305 v8::HandleScope handle_scope(isolate); |
| 306 | 306 |
| 307 v8::Local<v8::Context> env = v8::Context::New(isolate); | 307 v8::Local<v8::Context> env = v8::Context::New(isolate); |
| 308 env->Enter(); | 308 env->Enter(); |
| 309 | 309 |
| 310 const char* c_source = "\"1234\".length"; | 310 const char* c_source = "\"1234\".length"; |
| 311 v8::Local<v8::String> source = v8::String::NewFromUtf8(isolate, c_source); | 311 v8::Local<v8::String> source = v8::String::NewFromUtf8(isolate, c_source); |
| 312 v8::Local<v8::Script> script = v8::Script::Compile(source); | 312 v8::Local<v8::Script> script = v8::Script::Compile(source); |
| 313 CHECK_EQ(4, script->Run()->Int32Value()); | 313 CHECK_EQ(4, script->Run()->Int32Value()); |
| 314 } | 314 } |
| 315 isolate->Dispose(); | 315 isolate->Dispose(); |
| 316 } | 316 } |
| 317 } | 317 } |
| 318 | 318 |
| 319 | 319 |
| 320 UNINITIALIZED_TEST(PartialSerialization) { | 320 UNINITIALIZED_TEST(PartialSerialization) { |
| 321 if (!Snapshot::HaveASnapshotToStartFrom()) { | 321 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 322 v8::Isolate::CreateParams params; | 322 v8::Isolate::CreateParams params; |
| 323 params.enable_serializer = true; | 323 params.enable_serializer = true; |
| 324 v8::Isolate* v8_isolate = v8::Isolate::New(params); | 324 v8::Isolate* v8_isolate = v8::Isolate::New(params); |
| 325 Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); | 325 Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); |
| 326 v8_isolate->Enter(); | 326 v8_isolate->Enter(); |
| 327 { | 327 { |
| 328 Heap* heap = isolate->heap(); | 328 Heap* heap = isolate->heap(); |
| 329 | 329 |
| 330 v8::Persistent<v8::Context> env; | 330 v8::Persistent<v8::Context> env; |
| 331 { | 331 { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 384 | 384 |
| 385 startup_name.Dispose(); | 385 startup_name.Dispose(); |
| 386 } | 386 } |
| 387 v8_isolate->Exit(); | 387 v8_isolate->Exit(); |
| 388 v8_isolate->Dispose(); | 388 v8_isolate->Dispose(); |
| 389 } | 389 } |
| 390 } | 390 } |
| 391 | 391 |
| 392 | 392 |
| 393 UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) { | 393 UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) { |
| 394 if (!Snapshot::HaveASnapshotToStartFrom()) { | 394 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 395 int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; | 395 int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; |
| 396 Vector<char> startup_name = Vector<char>::New(file_name_length + 1); | 396 Vector<char> startup_name = Vector<char>::New(file_name_length + 1); |
| 397 SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); | 397 SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); |
| 398 | 398 |
| 399 v8::Isolate* v8_isolate = InitializeFromFile(startup_name.start()); | 399 v8::Isolate* v8_isolate = InitializeFromFile(startup_name.start()); |
| 400 CHECK(v8_isolate); | 400 CHECK(v8_isolate); |
| 401 startup_name.Dispose(); | 401 startup_name.Dispose(); |
| 402 { | 402 { |
| 403 v8::Isolate::Scope isolate_scope(v8_isolate); | 403 v8::Isolate::Scope isolate_scope(v8_isolate); |
| 404 | 404 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 434 CHECK(root2->IsString()); | 434 CHECK(root2->IsString()); |
| 435 CHECK(root.is_identical_to(root2)); | 435 CHECK(root.is_identical_to(root2)); |
| 436 } | 436 } |
| 437 } | 437 } |
| 438 v8_isolate->Dispose(); | 438 v8_isolate->Dispose(); |
| 439 } | 439 } |
| 440 } | 440 } |
| 441 | 441 |
| 442 | 442 |
| 443 UNINITIALIZED_TEST(ContextSerialization) { | 443 UNINITIALIZED_TEST(ContextSerialization) { |
| 444 if (!Snapshot::HaveASnapshotToStartFrom()) { | 444 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 445 v8::Isolate::CreateParams params; | 445 v8::Isolate::CreateParams params; |
| 446 params.enable_serializer = true; | 446 params.enable_serializer = true; |
| 447 v8::Isolate* v8_isolate = v8::Isolate::New(params); | 447 v8::Isolate* v8_isolate = v8::Isolate::New(params); |
| 448 Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); | 448 Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); |
| 449 Heap* heap = isolate->heap(); | 449 Heap* heap = isolate->heap(); |
| 450 { | 450 { |
| 451 v8::Isolate::Scope isolate_scope(v8_isolate); | 451 v8::Isolate::Scope isolate_scope(v8_isolate); |
| 452 | 452 |
| 453 v8::Persistent<v8::Context> env; | 453 v8::Persistent<v8::Context> env; |
| 454 { | 454 { |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 501 WritePayload(startup_snapshot.RawData(), startup_name.start()); | 501 WritePayload(startup_snapshot.RawData(), startup_name.start()); |
| 502 | 502 |
| 503 startup_name.Dispose(); | 503 startup_name.Dispose(); |
| 504 } | 504 } |
| 505 v8_isolate->Dispose(); | 505 v8_isolate->Dispose(); |
| 506 } | 506 } |
| 507 } | 507 } |
| 508 | 508 |
| 509 | 509 |
| 510 UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) { | 510 UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) { |
| 511 if (!Snapshot::HaveASnapshotToStartFrom()) { | 511 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 512 int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; | 512 int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; |
| 513 Vector<char> startup_name = Vector<char>::New(file_name_length + 1); | 513 Vector<char> startup_name = Vector<char>::New(file_name_length + 1); |
| 514 SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); | 514 SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); |
| 515 | 515 |
| 516 v8::Isolate* v8_isolate = InitializeFromFile(startup_name.start()); | 516 v8::Isolate* v8_isolate = InitializeFromFile(startup_name.start()); |
| 517 CHECK(v8_isolate); | 517 CHECK(v8_isolate); |
| 518 startup_name.Dispose(); | 518 startup_name.Dispose(); |
| 519 { | 519 { |
| 520 v8::Isolate::Scope isolate_scope(v8_isolate); | 520 v8::Isolate::Scope isolate_scope(v8_isolate); |
| 521 | 521 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 551 CHECK(root2->IsContext()); | 551 CHECK(root2->IsContext()); |
| 552 CHECK(!root.is_identical_to(root2)); | 552 CHECK(!root.is_identical_to(root2)); |
| 553 } | 553 } |
| 554 } | 554 } |
| 555 v8_isolate->Dispose(); | 555 v8_isolate->Dispose(); |
| 556 } | 556 } |
| 557 } | 557 } |
| 558 | 558 |
| 559 | 559 |
| 560 UNINITIALIZED_TEST(CustomContextSerialization) { | 560 UNINITIALIZED_TEST(CustomContextSerialization) { |
| 561 if (!Snapshot::HaveASnapshotToStartFrom()) { | 561 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 562 v8::Isolate::CreateParams params; | 562 v8::Isolate::CreateParams params; |
| 563 params.enable_serializer = true; | 563 params.enable_serializer = true; |
| 564 v8::Isolate* v8_isolate = v8::Isolate::New(params); | 564 v8::Isolate* v8_isolate = v8::Isolate::New(params); |
| 565 Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); | 565 Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); |
| 566 { | 566 { |
| 567 v8::Isolate::Scope isolate_scope(v8_isolate); | 567 v8::Isolate::Scope isolate_scope(v8_isolate); |
| 568 | 568 |
| 569 v8::Persistent<v8::Context> env; | 569 v8::Persistent<v8::Context> env; |
| 570 { | 570 { |
| 571 HandleScope scope(isolate); | 571 HandleScope scope(isolate); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 639 startup_name.Dispose(); | 639 startup_name.Dispose(); |
| 640 } | 640 } |
| 641 v8_isolate->Dispose(); | 641 v8_isolate->Dispose(); |
| 642 } | 642 } |
| 643 } | 643 } |
| 644 | 644 |
| 645 | 645 |
| 646 UNINITIALIZED_DEPENDENT_TEST(CustomContextDeserialization, | 646 UNINITIALIZED_DEPENDENT_TEST(CustomContextDeserialization, |
| 647 CustomContextSerialization) { | 647 CustomContextSerialization) { |
| 648 FLAG_crankshaft = false; | 648 FLAG_crankshaft = false; |
| 649 if (!Snapshot::HaveASnapshotToStartFrom()) { | 649 if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| 650 int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; | 650 int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; |
| 651 Vector<char> startup_name = Vector<char>::New(file_name_length + 1); | 651 Vector<char> startup_name = Vector<char>::New(file_name_length + 1); |
| 652 SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); | 652 SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); |
| 653 | 653 |
| 654 v8::Isolate* v8_isolate = InitializeFromFile(startup_name.start()); | 654 v8::Isolate* v8_isolate = InitializeFromFile(startup_name.start()); |
| 655 CHECK(v8_isolate); | 655 CHECK(v8_isolate); |
| 656 startup_name.Dispose(); | 656 startup_name.Dispose(); |
| 657 { | 657 { |
| 658 v8::Isolate::Scope isolate_scope(v8_isolate); | 658 v8::Isolate::Scope isolate_scope(v8_isolate); |
| 659 | 659 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 697 CHECK_EQ(100001, a); | 697 CHECK_EQ(100001, a); |
| 698 int b = CompileRun("b.length")->ToNumber(v8_isolate)->Int32Value(); | 698 int b = CompileRun("b.length")->ToNumber(v8_isolate)->Int32Value(); |
| 699 CHECK_EQ(100002, b); | 699 CHECK_EQ(100002, b); |
| 700 } | 700 } |
| 701 } | 701 } |
| 702 v8_isolate->Dispose(); | 702 v8_isolate->Dispose(); |
| 703 } | 703 } |
| 704 } | 704 } |
| 705 | 705 |
| 706 | 706 |
| 707 TEST(PerIsolateSnapshotBlobs) { | |
| 708 // Disable experimental natives that are loaded after desrialization. | |
|
vogelheim
2015/02/24 15:16:31
nitpick: desrialization => deserialization
Yang
2015/02/25 08:19:20
Done.
| |
| 709 FLAG_harmony_shipping = false; | |
| 710 FlagList::EnforceFlagImplications(); | |
| 711 | |
| 712 const char* source1 = "function f() { return 42; }"; | |
| 713 const char* source2 = | |
| 714 "function f() { return g() * 2; }" | |
| 715 "function g() { return 43; }"; | |
| 716 | |
| 717 v8::StartupData data1 = v8::V8::CreateSnapshotDataBlob(source1); | |
| 718 v8::StartupData data2 = v8::V8::CreateSnapshotDataBlob(source2); | |
| 719 | |
| 720 v8::Isolate::CreateParams params1; | |
| 721 params1.snapshot_blob = &data1; | |
| 722 v8::Isolate* isolate1 = v8::Isolate::New(params1); | |
| 723 { | |
| 724 v8::Isolate::Scope i_scope(isolate1); | |
| 725 v8::HandleScope h_scope(isolate1); | |
| 726 v8::Local<v8::Context> context = v8::Context::New(isolate1); | |
| 727 delete data1.data; // We can dispose of the snapshot blob now. | |
| 728 v8::Context::Scope c_scope(context); | |
| 729 CHECK_EQ(42, CompileRun("f()")->ToInt32(isolate1)->Int32Value()); | |
| 730 CHECK(CompileRun("this.g")->IsUndefined()); | |
| 731 } | |
| 732 isolate1->Dispose(); | |
| 733 | |
| 734 v8::Isolate::CreateParams params2; | |
| 735 params2.snapshot_blob = &data2; | |
| 736 v8::Isolate* isolate2 = v8::Isolate::New(params2); | |
| 737 { | |
| 738 v8::Isolate::Scope i_scope(isolate2); | |
| 739 v8::HandleScope h_scope(isolate2); | |
| 740 v8::Local<v8::Context> context = v8::Context::New(isolate2); | |
| 741 delete data2.data; // We can dispose of the snapshot blob now. | |
| 742 v8::Context::Scope c_scope(context); | |
| 743 CHECK_EQ(86, CompileRun("f()")->ToInt32(isolate2)->Int32Value()); | |
| 744 CHECK_EQ(43, CompileRun("g()")->ToInt32(isolate2)->Int32Value()); | |
| 745 } | |
| 746 isolate2->Dispose(); | |
| 747 } | |
| 748 | |
| 749 | |
| 707 TEST(TestThatAlwaysSucceeds) { | 750 TEST(TestThatAlwaysSucceeds) { |
| 708 } | 751 } |
| 709 | 752 |
| 710 | 753 |
| 711 TEST(TestThatAlwaysFails) { | 754 TEST(TestThatAlwaysFails) { |
| 712 bool ArtificialFailure = false; | 755 bool ArtificialFailure = false; |
| 713 CHECK(ArtificialFailure); | 756 CHECK(ArtificialFailure); |
| 714 } | 757 } |
| 715 | 758 |
| 716 | 759 |
| (...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1416 { | 1459 { |
| 1417 DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate2)); | 1460 DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate2)); |
| 1418 script = v8::ScriptCompiler::CompileUnbound( | 1461 script = v8::ScriptCompiler::CompileUnbound( |
| 1419 isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); | 1462 isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); |
| 1420 } | 1463 } |
| 1421 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); | 1464 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); |
| 1422 CHECK(result->ToString(isolate2)->Equals(v8_str("XY"))); | 1465 CHECK(result->ToString(isolate2)->Equals(v8_str("XY"))); |
| 1423 } | 1466 } |
| 1424 isolate2->Dispose(); | 1467 isolate2->Dispose(); |
| 1425 } | 1468 } |
| OLD | NEW |