| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 519 CHECK(source->IsExternal()); | 519 CHECK(source->IsExternal()); |
| 520 CHECK_EQ(resource, | 520 CHECK_EQ(resource, |
| 521 static_cast<TestResource*>(source->GetExternalStringResource())); | 521 static_cast<TestResource*>(source->GetExternalStringResource())); |
| 522 String::Encoding encoding = String::UNKNOWN_ENCODING; | 522 String::Encoding encoding = String::UNKNOWN_ENCODING; |
| 523 CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), | 523 CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), |
| 524 source->GetExternalStringResourceBase(&encoding)); | 524 source->GetExternalStringResourceBase(&encoding)); |
| 525 CHECK_EQ(String::TWO_BYTE_ENCODING, encoding); | 525 CHECK_EQ(String::TWO_BYTE_ENCODING, encoding); |
| 526 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 526 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 527 CHECK_EQ(0, dispose_count); | 527 CHECK_EQ(0, dispose_count); |
| 528 } | 528 } |
| 529 v8::internal::Isolate::Current()->compilation_cache()->Clear(); | 529 CcTest::i_isolate()->compilation_cache()->Clear(); |
| 530 HEAP->CollectAllAvailableGarbage(); | 530 HEAP->CollectAllAvailableGarbage(); |
| 531 CHECK_EQ(1, dispose_count); | 531 CHECK_EQ(1, dispose_count); |
| 532 } | 532 } |
| 533 | 533 |
| 534 | 534 |
| 535 THREADED_TEST(ScriptUsingAsciiStringResource) { | 535 THREADED_TEST(ScriptUsingAsciiStringResource) { |
| 536 int dispose_count = 0; | 536 int dispose_count = 0; |
| 537 const char* c_source = "1 + 2 * 3"; | 537 const char* c_source = "1 + 2 * 3"; |
| 538 { | 538 { |
| 539 LocalContext env; | 539 LocalContext env; |
| 540 v8::HandleScope scope(env->GetIsolate()); | 540 v8::HandleScope scope(env->GetIsolate()); |
| 541 TestAsciiResource* resource = new TestAsciiResource(i::StrDup(c_source), | 541 TestAsciiResource* resource = new TestAsciiResource(i::StrDup(c_source), |
| 542 &dispose_count); | 542 &dispose_count); |
| 543 Local<String> source = String::NewExternal(resource); | 543 Local<String> source = String::NewExternal(resource); |
| 544 CHECK(source->IsExternalAscii()); | 544 CHECK(source->IsExternalAscii()); |
| 545 CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), | 545 CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), |
| 546 source->GetExternalAsciiStringResource()); | 546 source->GetExternalAsciiStringResource()); |
| 547 String::Encoding encoding = String::UNKNOWN_ENCODING; | 547 String::Encoding encoding = String::UNKNOWN_ENCODING; |
| 548 CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), | 548 CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), |
| 549 source->GetExternalStringResourceBase(&encoding)); | 549 source->GetExternalStringResourceBase(&encoding)); |
| 550 CHECK_EQ(String::ASCII_ENCODING, encoding); | 550 CHECK_EQ(String::ASCII_ENCODING, encoding); |
| 551 Local<Script> script = Script::Compile(source); | 551 Local<Script> script = Script::Compile(source); |
| 552 Local<Value> value = script->Run(); | 552 Local<Value> value = script->Run(); |
| 553 CHECK(value->IsNumber()); | 553 CHECK(value->IsNumber()); |
| 554 CHECK_EQ(7, value->Int32Value()); | 554 CHECK_EQ(7, value->Int32Value()); |
| 555 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 555 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 556 CHECK_EQ(0, dispose_count); | 556 CHECK_EQ(0, dispose_count); |
| 557 } | 557 } |
| 558 i::Isolate::Current()->compilation_cache()->Clear(); | 558 CcTest::i_isolate()->compilation_cache()->Clear(); |
| 559 HEAP->CollectAllAvailableGarbage(); | 559 HEAP->CollectAllAvailableGarbage(); |
| 560 CHECK_EQ(1, dispose_count); | 560 CHECK_EQ(1, dispose_count); |
| 561 } | 561 } |
| 562 | 562 |
| 563 | 563 |
| 564 THREADED_TEST(ScriptMakingExternalString) { | 564 THREADED_TEST(ScriptMakingExternalString) { |
| 565 int dispose_count = 0; | 565 int dispose_count = 0; |
| 566 uint16_t* two_byte_source = AsciiToTwoByteString("1 + 2 * 3"); | 566 uint16_t* two_byte_source = AsciiToTwoByteString("1 + 2 * 3"); |
| 567 { | 567 { |
| 568 LocalContext env; | 568 LocalContext env; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 579 bool success = source->MakeExternal(new TestResource(two_byte_source, | 579 bool success = source->MakeExternal(new TestResource(two_byte_source, |
| 580 &dispose_count)); | 580 &dispose_count)); |
| 581 CHECK(success); | 581 CHECK(success); |
| 582 Local<Script> script = Script::Compile(source); | 582 Local<Script> script = Script::Compile(source); |
| 583 Local<Value> value = script->Run(); | 583 Local<Value> value = script->Run(); |
| 584 CHECK(value->IsNumber()); | 584 CHECK(value->IsNumber()); |
| 585 CHECK_EQ(7, value->Int32Value()); | 585 CHECK_EQ(7, value->Int32Value()); |
| 586 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 586 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 587 CHECK_EQ(0, dispose_count); | 587 CHECK_EQ(0, dispose_count); |
| 588 } | 588 } |
| 589 i::Isolate::Current()->compilation_cache()->Clear(); | 589 CcTest::i_isolate()->compilation_cache()->Clear(); |
| 590 HEAP->CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 590 HEAP->CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); |
| 591 CHECK_EQ(1, dispose_count); | 591 CHECK_EQ(1, dispose_count); |
| 592 } | 592 } |
| 593 | 593 |
| 594 | 594 |
| 595 THREADED_TEST(ScriptMakingExternalAsciiString) { | 595 THREADED_TEST(ScriptMakingExternalAsciiString) { |
| 596 int dispose_count = 0; | 596 int dispose_count = 0; |
| 597 const char* c_source = "1 + 2 * 3"; | 597 const char* c_source = "1 + 2 * 3"; |
| 598 { | 598 { |
| 599 LocalContext env; | 599 LocalContext env; |
| 600 v8::HandleScope scope(env->GetIsolate()); | 600 v8::HandleScope scope(env->GetIsolate()); |
| 601 Local<String> source = v8_str(c_source); | 601 Local<String> source = v8_str(c_source); |
| 602 // Trigger GCs so that the newly allocated string moves to old gen. | 602 // Trigger GCs so that the newly allocated string moves to old gen. |
| 603 HEAP->CollectGarbage(i::NEW_SPACE); // in survivor space now | 603 HEAP->CollectGarbage(i::NEW_SPACE); // in survivor space now |
| 604 HEAP->CollectGarbage(i::NEW_SPACE); // in old gen now | 604 HEAP->CollectGarbage(i::NEW_SPACE); // in old gen now |
| 605 bool success = source->MakeExternal( | 605 bool success = source->MakeExternal( |
| 606 new TestAsciiResource(i::StrDup(c_source), &dispose_count)); | 606 new TestAsciiResource(i::StrDup(c_source), &dispose_count)); |
| 607 CHECK(success); | 607 CHECK(success); |
| 608 Local<Script> script = Script::Compile(source); | 608 Local<Script> script = Script::Compile(source); |
| 609 Local<Value> value = script->Run(); | 609 Local<Value> value = script->Run(); |
| 610 CHECK(value->IsNumber()); | 610 CHECK(value->IsNumber()); |
| 611 CHECK_EQ(7, value->Int32Value()); | 611 CHECK_EQ(7, value->Int32Value()); |
| 612 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 612 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 613 CHECK_EQ(0, dispose_count); | 613 CHECK_EQ(0, dispose_count); |
| 614 } | 614 } |
| 615 i::Isolate::Current()->compilation_cache()->Clear(); | 615 CcTest::i_isolate()->compilation_cache()->Clear(); |
| 616 HEAP->CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 616 HEAP->CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); |
| 617 CHECK_EQ(1, dispose_count); | 617 CHECK_EQ(1, dispose_count); |
| 618 } | 618 } |
| 619 | 619 |
| 620 | 620 |
| 621 TEST(MakingExternalStringConditions) { | 621 TEST(MakingExternalStringConditions) { |
| 622 LocalContext env; | 622 LocalContext env; |
| 623 v8::HandleScope scope(env->GetIsolate()); | 623 v8::HandleScope scope(env->GetIsolate()); |
| 624 | 624 |
| 625 // Free some space in the new space so that we can check freshness. | 625 // Free some space in the new space so that we can check freshness. |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 new TestAsciiResource(i::StrDup(c_slice) + 1, &dispose_count)); | 730 new TestAsciiResource(i::StrDup(c_slice) + 1, &dispose_count)); |
| 731 CHECK(success); | 731 CHECK(success); |
| 732 | 732 |
| 733 // Trigger GCs and force evacuation. | 733 // Trigger GCs and force evacuation. |
| 734 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 734 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 735 HEAP->CollectAllGarbage(i::Heap::kReduceMemoryFootprintMask); | 735 HEAP->CollectAllGarbage(i::Heap::kReduceMemoryFootprintMask); |
| 736 } | 736 } |
| 737 | 737 |
| 738 | 738 |
| 739 THREADED_TEST(UsingExternalString) { | 739 THREADED_TEST(UsingExternalString) { |
| 740 i::Factory* factory = i::Isolate::Current()->factory(); | 740 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 741 { | 741 { |
| 742 v8::HandleScope scope(CcTest::isolate()); | 742 v8::HandleScope scope(CcTest::isolate()); |
| 743 uint16_t* two_byte_string = AsciiToTwoByteString("test string"); | 743 uint16_t* two_byte_string = AsciiToTwoByteString("test string"); |
| 744 Local<String> string = | 744 Local<String> string = |
| 745 String::NewExternal(new TestResource(two_byte_string)); | 745 String::NewExternal(new TestResource(two_byte_string)); |
| 746 i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 746 i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); |
| 747 // Trigger GCs so that the newly allocated string moves to old gen. | 747 // Trigger GCs so that the newly allocated string moves to old gen. |
| 748 HEAP->CollectGarbage(i::NEW_SPACE); // in survivor space now | 748 HEAP->CollectGarbage(i::NEW_SPACE); // in survivor space now |
| 749 HEAP->CollectGarbage(i::NEW_SPACE); // in old gen now | 749 HEAP->CollectGarbage(i::NEW_SPACE); // in old gen now |
| 750 i::Handle<i::String> isymbol = | 750 i::Handle<i::String> isymbol = |
| 751 factory->InternalizedStringFromString(istring); | 751 factory->InternalizedStringFromString(istring); |
| 752 CHECK(isymbol->IsInternalizedString()); | 752 CHECK(isymbol->IsInternalizedString()); |
| 753 } | 753 } |
| 754 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 754 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 755 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 755 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 756 } | 756 } |
| 757 | 757 |
| 758 | 758 |
| 759 THREADED_TEST(UsingExternalAsciiString) { | 759 THREADED_TEST(UsingExternalAsciiString) { |
| 760 i::Factory* factory = i::Isolate::Current()->factory(); | 760 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 761 { | 761 { |
| 762 v8::HandleScope scope(CcTest::isolate()); | 762 v8::HandleScope scope(CcTest::isolate()); |
| 763 const char* one_byte_string = "test string"; | 763 const char* one_byte_string = "test string"; |
| 764 Local<String> string = String::NewExternal( | 764 Local<String> string = String::NewExternal( |
| 765 new TestAsciiResource(i::StrDup(one_byte_string))); | 765 new TestAsciiResource(i::StrDup(one_byte_string))); |
| 766 i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 766 i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); |
| 767 // Trigger GCs so that the newly allocated string moves to old gen. | 767 // Trigger GCs so that the newly allocated string moves to old gen. |
| 768 HEAP->CollectGarbage(i::NEW_SPACE); // in survivor space now | 768 HEAP->CollectGarbage(i::NEW_SPACE); // in survivor space now |
| 769 HEAP->CollectGarbage(i::NEW_SPACE); // in old gen now | 769 HEAP->CollectGarbage(i::NEW_SPACE); // in old gen now |
| 770 i::Handle<i::String> isymbol = | 770 i::Handle<i::String> isymbol = |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 LocalContext env; | 853 LocalContext env; |
| 854 v8::HandleScope scope(env->GetIsolate()); | 854 v8::HandleScope scope(env->GetIsolate()); |
| 855 Local<String> source = String::NewExternal(&res_stack); | 855 Local<String> source = String::NewExternal(&res_stack); |
| 856 Local<Script> script = Script::Compile(source); | 856 Local<Script> script = Script::Compile(source); |
| 857 Local<Value> value = script->Run(); | 857 Local<Value> value = script->Run(); |
| 858 CHECK(value->IsNumber()); | 858 CHECK(value->IsNumber()); |
| 859 CHECK_EQ(7, value->Int32Value()); | 859 CHECK_EQ(7, value->Int32Value()); |
| 860 HEAP->CollectAllAvailableGarbage(); | 860 HEAP->CollectAllAvailableGarbage(); |
| 861 CHECK_EQ(0, TestAsciiResourceWithDisposeControl::dispose_count); | 861 CHECK_EQ(0, TestAsciiResourceWithDisposeControl::dispose_count); |
| 862 } | 862 } |
| 863 i::Isolate::Current()->compilation_cache()->Clear(); | 863 CcTest::i_isolate()->compilation_cache()->Clear(); |
| 864 HEAP->CollectAllAvailableGarbage(); | 864 HEAP->CollectAllAvailableGarbage(); |
| 865 CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_calls); | 865 CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_calls); |
| 866 CHECK_EQ(0, TestAsciiResourceWithDisposeControl::dispose_count); | 866 CHECK_EQ(0, TestAsciiResourceWithDisposeControl::dispose_count); |
| 867 | 867 |
| 868 // Use a heap allocated external string resource allocated object. | 868 // Use a heap allocated external string resource allocated object. |
| 869 TestAsciiResourceWithDisposeControl::dispose_count = 0; | 869 TestAsciiResourceWithDisposeControl::dispose_count = 0; |
| 870 TestAsciiResourceWithDisposeControl::dispose_calls = 0; | 870 TestAsciiResourceWithDisposeControl::dispose_calls = 0; |
| 871 TestAsciiResource* res_heap = | 871 TestAsciiResource* res_heap = |
| 872 new TestAsciiResourceWithDisposeControl(i::StrDup(c_source), true); | 872 new TestAsciiResourceWithDisposeControl(i::StrDup(c_source), true); |
| 873 { | 873 { |
| 874 LocalContext env; | 874 LocalContext env; |
| 875 v8::HandleScope scope(env->GetIsolate()); | 875 v8::HandleScope scope(env->GetIsolate()); |
| 876 Local<String> source = String::NewExternal(res_heap); | 876 Local<String> source = String::NewExternal(res_heap); |
| 877 Local<Script> script = Script::Compile(source); | 877 Local<Script> script = Script::Compile(source); |
| 878 Local<Value> value = script->Run(); | 878 Local<Value> value = script->Run(); |
| 879 CHECK(value->IsNumber()); | 879 CHECK(value->IsNumber()); |
| 880 CHECK_EQ(7, value->Int32Value()); | 880 CHECK_EQ(7, value->Int32Value()); |
| 881 HEAP->CollectAllAvailableGarbage(); | 881 HEAP->CollectAllAvailableGarbage(); |
| 882 CHECK_EQ(0, TestAsciiResourceWithDisposeControl::dispose_count); | 882 CHECK_EQ(0, TestAsciiResourceWithDisposeControl::dispose_count); |
| 883 } | 883 } |
| 884 i::Isolate::Current()->compilation_cache()->Clear(); | 884 CcTest::i_isolate()->compilation_cache()->Clear(); |
| 885 HEAP->CollectAllAvailableGarbage(); | 885 HEAP->CollectAllAvailableGarbage(); |
| 886 CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_calls); | 886 CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_calls); |
| 887 CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_count); | 887 CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_count); |
| 888 } | 888 } |
| 889 | 889 |
| 890 | 890 |
| 891 THREADED_TEST(StringConcat) { | 891 THREADED_TEST(StringConcat) { |
| 892 { | 892 { |
| 893 LocalContext env; | 893 LocalContext env; |
| 894 v8::HandleScope scope(env->GetIsolate()); | 894 v8::HandleScope scope(env->GetIsolate()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 921 | 921 |
| 922 source = String::Concat(source, right); | 922 source = String::Concat(source, right); |
| 923 right = String::NewExternal( | 923 right = String::NewExternal( |
| 924 new TestResource(AsciiToTwoByteString(two_byte_extern_2))); | 924 new TestResource(AsciiToTwoByteString(two_byte_extern_2))); |
| 925 source = String::Concat(source, right); | 925 source = String::Concat(source, right); |
| 926 Local<Script> script = Script::Compile(source); | 926 Local<Script> script = Script::Compile(source); |
| 927 Local<Value> value = script->Run(); | 927 Local<Value> value = script->Run(); |
| 928 CHECK(value->IsNumber()); | 928 CHECK(value->IsNumber()); |
| 929 CHECK_EQ(68, value->Int32Value()); | 929 CHECK_EQ(68, value->Int32Value()); |
| 930 } | 930 } |
| 931 i::Isolate::Current()->compilation_cache()->Clear(); | 931 CcTest::i_isolate()->compilation_cache()->Clear(); |
| 932 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 932 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 933 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 933 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 934 } | 934 } |
| 935 | 935 |
| 936 | 936 |
| 937 THREADED_TEST(GlobalProperties) { | 937 THREADED_TEST(GlobalProperties) { |
| 938 LocalContext env; | 938 LocalContext env; |
| 939 v8::HandleScope scope(env->GetIsolate()); | 939 v8::HandleScope scope(env->GetIsolate()); |
| 940 v8::Handle<v8::Object> global = env->Global(); | 940 v8::Handle<v8::Object> global = env->Global(); |
| 941 global->Set(v8_str("pi"), v8_num(3.1415926)); | 941 global->Set(v8_str("pi"), v8_num(3.1415926)); |
| (...skipping 3723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4665 args[1], | 4665 args[1], |
| 4666 args[2], | 4666 args[2], |
| 4667 args[3] }; | 4667 args[3] }; |
| 4668 if (count % cInterval == 0) { | 4668 if (count % cInterval == 0) { |
| 4669 v8::TryCatch try_catch; | 4669 v8::TryCatch try_catch; |
| 4670 Local<Value> result = fun.As<Function>()->Call(global, 4, argv); | 4670 Local<Value> result = fun.As<Function>()->Call(global, 4, argv); |
| 4671 int expected = args[3]->Int32Value(); | 4671 int expected = args[3]->Int32Value(); |
| 4672 if (try_catch.HasCaught()) { | 4672 if (try_catch.HasCaught()) { |
| 4673 CHECK_EQ(expected, count); | 4673 CHECK_EQ(expected, count); |
| 4674 CHECK(result.IsEmpty()); | 4674 CHECK(result.IsEmpty()); |
| 4675 CHECK(!i::Isolate::Current()->has_scheduled_exception()); | 4675 CHECK(!CcTest::i_isolate()->has_scheduled_exception()); |
| 4676 } else { | 4676 } else { |
| 4677 CHECK_NE(expected, count); | 4677 CHECK_NE(expected, count); |
| 4678 } | 4678 } |
| 4679 args.GetReturnValue().Set(result); | 4679 args.GetReturnValue().Set(result); |
| 4680 return; | 4680 return; |
| 4681 } else { | 4681 } else { |
| 4682 args.GetReturnValue().Set(fun.As<Function>()->Call(global, 4, argv)); | 4682 args.GetReturnValue().Set(fun.As<Function>()->Call(global, 4, argv)); |
| 4683 return; | 4683 return; |
| 4684 } | 4684 } |
| 4685 } | 4685 } |
| (...skipping 4991 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9677 | 9677 |
| 9678 Local<v8::Object> o0 = t->GetFunction()->NewInstance(); | 9678 Local<v8::Object> o0 = t->GetFunction()->NewInstance(); |
| 9679 Local<v8::Object> o1 = t->GetFunction()->NewInstance(); | 9679 Local<v8::Object> o1 = t->GetFunction()->NewInstance(); |
| 9680 | 9680 |
| 9681 CHECK(o0->SetPrototype(o1)); | 9681 CHECK(o0->SetPrototype(o1)); |
| 9682 // If setting the prototype leads to the cycle, SetPrototype should | 9682 // If setting the prototype leads to the cycle, SetPrototype should |
| 9683 // return false and keep VM in sane state. | 9683 // return false and keep VM in sane state. |
| 9684 v8::TryCatch try_catch; | 9684 v8::TryCatch try_catch; |
| 9685 CHECK(!o1->SetPrototype(o0)); | 9685 CHECK(!o1->SetPrototype(o0)); |
| 9686 CHECK(!try_catch.HasCaught()); | 9686 CHECK(!try_catch.HasCaught()); |
| 9687 ASSERT(!i::Isolate::Current()->has_pending_exception()); | 9687 ASSERT(!CcTest::i_isolate()->has_pending_exception()); |
| 9688 | 9688 |
| 9689 CHECK_EQ(42, CompileRun("function f() { return 42; }; f()")->Int32Value()); | 9689 CHECK_EQ(42, CompileRun("function f() { return 42; }; f()")->Int32Value()); |
| 9690 } | 9690 } |
| 9691 | 9691 |
| 9692 | 9692 |
| 9693 THREADED_TEST(FunctionRemovePrototype) { | 9693 THREADED_TEST(FunctionRemovePrototype) { |
| 9694 LocalContext context; | 9694 LocalContext context; |
| 9695 v8::HandleScope handle_scope(context->GetIsolate()); | 9695 v8::HandleScope handle_scope(context->GetIsolate()); |
| 9696 | 9696 |
| 9697 Local<v8::FunctionTemplate> t1 = v8::FunctionTemplate::New(); | 9697 Local<v8::FunctionTemplate> t1 = v8::FunctionTemplate::New(); |
| (...skipping 2400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12098 | 12098 |
| 12099 | 12099 |
| 12100 static void ThrowingCallbackWithTryCatch( | 12100 static void ThrowingCallbackWithTryCatch( |
| 12101 const v8::FunctionCallbackInfo<v8::Value>& args) { | 12101 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 12102 TryCatch try_catch; | 12102 TryCatch try_catch; |
| 12103 // Verboseness is important: it triggers message delivery which can call into | 12103 // Verboseness is important: it triggers message delivery which can call into |
| 12104 // external code. | 12104 // external code. |
| 12105 try_catch.SetVerbose(true); | 12105 try_catch.SetVerbose(true); |
| 12106 CompileRun("throw 'from JS';"); | 12106 CompileRun("throw 'from JS';"); |
| 12107 CHECK(try_catch.HasCaught()); | 12107 CHECK(try_catch.HasCaught()); |
| 12108 CHECK(!i::Isolate::Current()->has_pending_exception()); | 12108 CHECK(!CcTest::i_isolate()->has_pending_exception()); |
| 12109 CHECK(!i::Isolate::Current()->has_scheduled_exception()); | 12109 CHECK(!CcTest::i_isolate()->has_scheduled_exception()); |
| 12110 } | 12110 } |
| 12111 | 12111 |
| 12112 | 12112 |
| 12113 static int call_depth; | 12113 static int call_depth; |
| 12114 | 12114 |
| 12115 | 12115 |
| 12116 static void WithTryCatch(Handle<Message> message, Handle<Value> data) { | 12116 static void WithTryCatch(Handle<Message> message, Handle<Value> data) { |
| 12117 TryCatch try_catch; | 12117 TryCatch try_catch; |
| 12118 } | 12118 } |
| 12119 | 12119 |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12604 Local<Script> script = v8_compile("(function () {" | 12604 Local<Script> script = v8_compile("(function () {" |
| 12605 " unlock_for_a_moment();" | 12605 " unlock_for_a_moment();" |
| 12606 " return 42;" | 12606 " return 42;" |
| 12607 "})();"); | 12607 "})();"); |
| 12608 CHECK_EQ(42, script->Run()->Int32Value()); | 12608 CHECK_EQ(42, script->Run()->Int32Value()); |
| 12609 } | 12609 } |
| 12610 } | 12610 } |
| 12611 | 12611 |
| 12612 | 12612 |
| 12613 static int GetGlobalObjectsCount() { | 12613 static int GetGlobalObjectsCount() { |
| 12614 i::Isolate::Current()->heap()->EnsureHeapIsIterable(); | 12614 CcTest::i_isolate()->heap()->EnsureHeapIsIterable(); |
| 12615 int count = 0; | 12615 int count = 0; |
| 12616 i::HeapIterator it(HEAP); | 12616 i::HeapIterator it(HEAP); |
| 12617 for (i::HeapObject* object = it.next(); object != NULL; object = it.next()) | 12617 for (i::HeapObject* object = it.next(); object != NULL; object = it.next()) |
| 12618 if (object->IsJSGlobalObject()) count++; | 12618 if (object->IsJSGlobalObject()) count++; |
| 12619 return count; | 12619 return count; |
| 12620 } | 12620 } |
| 12621 | 12621 |
| 12622 | 12622 |
| 12623 static void CheckSurvivingGlobalObjectsCount(int expected) { | 12623 static void CheckSurvivingGlobalObjectsCount(int expected) { |
| 12624 // We need to collect all garbage twice to be sure that everything | 12624 // We need to collect all garbage twice to be sure that everything |
| (...skipping 1900 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14525 | 14525 |
| 14526 // Test that we can still flatten a string if the components it is built up | 14526 // Test that we can still flatten a string if the components it is built up |
| 14527 // from have been turned into 16 bit strings in the mean time. | 14527 // from have been turned into 16 bit strings in the mean time. |
| 14528 THREADED_TEST(MorphCompositeStringTest) { | 14528 THREADED_TEST(MorphCompositeStringTest) { |
| 14529 char utf_buffer[129]; | 14529 char utf_buffer[129]; |
| 14530 const char* c_string = "Now is the time for all good men" | 14530 const char* c_string = "Now is the time for all good men" |
| 14531 " to come to the aid of the party"; | 14531 " to come to the aid of the party"; |
| 14532 uint16_t* two_byte_string = AsciiToTwoByteString(c_string); | 14532 uint16_t* two_byte_string = AsciiToTwoByteString(c_string); |
| 14533 { | 14533 { |
| 14534 LocalContext env; | 14534 LocalContext env; |
| 14535 i::Factory* factory = i::Isolate::Current()->factory(); | 14535 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 14536 v8::HandleScope scope(env->GetIsolate()); | 14536 v8::HandleScope scope(env->GetIsolate()); |
| 14537 AsciiVectorResource ascii_resource( | 14537 AsciiVectorResource ascii_resource( |
| 14538 i::Vector<const char>(c_string, i::StrLength(c_string))); | 14538 i::Vector<const char>(c_string, i::StrLength(c_string))); |
| 14539 UC16VectorResource uc16_resource( | 14539 UC16VectorResource uc16_resource( |
| 14540 i::Vector<const uint16_t>(two_byte_string, | 14540 i::Vector<const uint16_t>(two_byte_string, |
| 14541 i::StrLength(c_string))); | 14541 i::StrLength(c_string))); |
| 14542 | 14542 |
| 14543 Local<String> lhs(v8::Utils::ToLocal( | 14543 Local<String> lhs(v8::Utils::ToLocal( |
| 14544 factory->NewExternalStringFromAscii(&ascii_resource))); | 14544 factory->NewExternalStringFromAscii(&ascii_resource))); |
| 14545 Local<String> rhs(v8::Utils::ToLocal( | 14545 Local<String> rhs(v8::Utils::ToLocal( |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14623 class RegExpStringModificationTest { | 14623 class RegExpStringModificationTest { |
| 14624 public: | 14624 public: |
| 14625 RegExpStringModificationTest() | 14625 RegExpStringModificationTest() |
| 14626 : block_(0), | 14626 : block_(0), |
| 14627 morphs_(0), | 14627 morphs_(0), |
| 14628 morphs_during_regexp_(0), | 14628 morphs_during_regexp_(0), |
| 14629 ascii_resource_(i::Vector<const char>("aaaaaaaaaaaaaab", 15)), | 14629 ascii_resource_(i::Vector<const char>("aaaaaaaaaaaaaab", 15)), |
| 14630 uc16_resource_(i::Vector<const uint16_t>(two_byte_content_, 15)) {} | 14630 uc16_resource_(i::Vector<const uint16_t>(two_byte_content_, 15)) {} |
| 14631 ~RegExpStringModificationTest() {} | 14631 ~RegExpStringModificationTest() {} |
| 14632 void RunTest() { | 14632 void RunTest() { |
| 14633 i::Factory* factory = i::Isolate::Current()->factory(); | 14633 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 14634 | 14634 |
| 14635 regexp_success_ = false; | 14635 regexp_success_ = false; |
| 14636 morph_success_ = false; | 14636 morph_success_ = false; |
| 14637 | 14637 |
| 14638 // Initialize the contents of two_byte_content_ to be a uc16 representation | 14638 // Initialize the contents of two_byte_content_ to be a uc16 representation |
| 14639 // of "aaaaaaaaaaaaaab". | 14639 // of "aaaaaaaaaaaaaab". |
| 14640 for (int i = 0; i < 14; i++) { | 14640 for (int i = 0; i < 14; i++) { |
| 14641 two_byte_content_[i] = 'a'; | 14641 two_byte_content_[i] = 'a'; |
| 14642 } | 14642 } |
| 14643 two_byte_content_[14] = 'b'; | 14643 two_byte_content_[14] = 'b'; |
| 14644 | 14644 |
| 14645 // Create the input string for the regexp - the one we are going to change | 14645 // Create the input string for the regexp - the one we are going to change |
| 14646 // properties of. | 14646 // properties of. |
| 14647 input_ = factory->NewExternalStringFromAscii(&ascii_resource_); | 14647 input_ = factory->NewExternalStringFromAscii(&ascii_resource_); |
| 14648 | 14648 |
| 14649 // Inject the input as a global variable. | 14649 // Inject the input as a global variable. |
| 14650 i::Handle<i::String> input_name = | 14650 i::Handle<i::String> input_name = |
| 14651 factory->NewStringFromAscii(i::Vector<const char>("input", 5)); | 14651 factory->NewStringFromAscii(i::Vector<const char>("input", 5)); |
| 14652 i::JSReceiver::SetProperty( | 14652 i::JSReceiver::SetProperty( |
| 14653 i::handle(i::Isolate::Current()->native_context()->global_object()), | 14653 i::handle(CcTest::i_isolate()->native_context()->global_object()), |
| 14654 input_name, | 14654 input_name, |
| 14655 input_, | 14655 input_, |
| 14656 NONE, | 14656 NONE, |
| 14657 i::kNonStrictMode); | 14657 i::kNonStrictMode); |
| 14658 | 14658 |
| 14659 MorphThread morph_thread(this); | 14659 MorphThread morph_thread(this); |
| 14660 morph_thread.Start(); | 14660 morph_thread.Start(); |
| 14661 v8::Locker::StartPreemption(1); | 14661 v8::Locker::StartPreemption(1); |
| 14662 LongRunningRegExp(); | 14662 LongRunningRegExp(); |
| 14663 { | 14663 { |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15038 ApiTestFuzzer::Fuzz(); | 15038 ApiTestFuzzer::Fuzz(); |
| 15039 CHECK(Context::GetCurrent() == calling_context0); | 15039 CHECK(Context::GetCurrent() == calling_context0); |
| 15040 CHECK(args.GetIsolate()->GetCurrentContext() == calling_context0); | 15040 CHECK(args.GetIsolate()->GetCurrentContext() == calling_context0); |
| 15041 CHECK(Context::GetCalling() == calling_context1); | 15041 CHECK(Context::GetCalling() == calling_context1); |
| 15042 CHECK(Context::GetEntered() == calling_context2); | 15042 CHECK(Context::GetEntered() == calling_context2); |
| 15043 args.GetReturnValue().Set(42); | 15043 args.GetReturnValue().Set(42); |
| 15044 } | 15044 } |
| 15045 | 15045 |
| 15046 | 15046 |
| 15047 THREADED_TEST(GetCurrentContextWhenNotInContext) { | 15047 THREADED_TEST(GetCurrentContextWhenNotInContext) { |
| 15048 i::Isolate* isolate = i::Isolate::Current(); | 15048 i::Isolate* isolate = CcTest::i_isolate(); |
| 15049 CHECK(isolate != NULL); | 15049 CHECK(isolate != NULL); |
| 15050 CHECK(isolate->context() == NULL); | 15050 CHECK(isolate->context() == NULL); |
| 15051 v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); | 15051 v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); |
| 15052 v8::HandleScope scope(v8_isolate); | 15052 v8::HandleScope scope(v8_isolate); |
| 15053 // The following should not crash, but return an empty handle. | 15053 // The following should not crash, but return an empty handle. |
| 15054 v8::Local<v8::Context> current = v8_isolate->GetCurrentContext(); | 15054 v8::Local<v8::Context> current = v8_isolate->GetCurrentContext(); |
| 15055 CHECK(current.IsEmpty()); | 15055 CHECK(current.IsEmpty()); |
| 15056 } | 15056 } |
| 15057 | 15057 |
| 15058 | 15058 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15155 int expected, | 15155 int expected, |
| 15156 i::Handle<i::Object> obj, | 15156 i::Handle<i::Object> obj, |
| 15157 int offset) { | 15157 int offset) { |
| 15158 i::Object* element = obj->GetElement(isolate, offset)->ToObjectChecked(); | 15158 i::Object* element = obj->GetElement(isolate, offset)->ToObjectChecked(); |
| 15159 CHECK_EQ(expected, i::Smi::cast(element)->value()); | 15159 CHECK_EQ(expected, i::Smi::cast(element)->value()); |
| 15160 } | 15160 } |
| 15161 | 15161 |
| 15162 | 15162 |
| 15163 THREADED_TEST(PixelArray) { | 15163 THREADED_TEST(PixelArray) { |
| 15164 LocalContext context; | 15164 LocalContext context; |
| 15165 i::Isolate* isolate = i::Isolate::Current(); | 15165 i::Isolate* isolate = CcTest::i_isolate(); |
| 15166 i::Factory* factory = isolate->factory(); | 15166 i::Factory* factory = isolate->factory(); |
| 15167 v8::HandleScope scope(context->GetIsolate()); | 15167 v8::HandleScope scope(context->GetIsolate()); |
| 15168 const int kElementCount = 260; | 15168 const int kElementCount = 260; |
| 15169 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); | 15169 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); |
| 15170 i::Handle<i::ExternalPixelArray> pixels = | 15170 i::Handle<i::ExternalPixelArray> pixels = |
| 15171 i::Handle<i::ExternalPixelArray>::cast( | 15171 i::Handle<i::ExternalPixelArray>::cast( |
| 15172 factory->NewExternalArray(kElementCount, | 15172 factory->NewExternalArray(kElementCount, |
| 15173 v8::kExternalPixelArray, | 15173 v8::kExternalPixelArray, |
| 15174 pixel_data)); | 15174 pixel_data)); |
| 15175 // Force GC to trigger verification. | 15175 // Force GC to trigger verification. |
| (...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15569 static void NotHandledIndexedPropertySetter( | 15569 static void NotHandledIndexedPropertySetter( |
| 15570 uint32_t index, | 15570 uint32_t index, |
| 15571 Local<Value> value, | 15571 Local<Value> value, |
| 15572 const v8::PropertyCallbackInfo<v8::Value>& info) { | 15572 const v8::PropertyCallbackInfo<v8::Value>& info) { |
| 15573 ApiTestFuzzer::Fuzz(); | 15573 ApiTestFuzzer::Fuzz(); |
| 15574 } | 15574 } |
| 15575 | 15575 |
| 15576 | 15576 |
| 15577 THREADED_TEST(PixelArrayWithInterceptor) { | 15577 THREADED_TEST(PixelArrayWithInterceptor) { |
| 15578 LocalContext context; | 15578 LocalContext context; |
| 15579 i::Factory* factory = i::Isolate::Current()->factory(); | 15579 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 15580 v8::HandleScope scope(context->GetIsolate()); | 15580 v8::HandleScope scope(context->GetIsolate()); |
| 15581 const int kElementCount = 260; | 15581 const int kElementCount = 260; |
| 15582 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); | 15582 uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); |
| 15583 i::Handle<i::ExternalPixelArray> pixels = | 15583 i::Handle<i::ExternalPixelArray> pixels = |
| 15584 i::Handle<i::ExternalPixelArray>::cast( | 15584 i::Handle<i::ExternalPixelArray>::cast( |
| 15585 factory->NewExternalArray(kElementCount, | 15585 factory->NewExternalArray(kElementCount, |
| 15586 v8::kExternalPixelArray, | 15586 v8::kExternalPixelArray, |
| 15587 pixel_data)); | 15587 pixel_data)); |
| 15588 for (int i = 0; i < kElementCount; i++) { | 15588 for (int i = 0; i < kElementCount; i++) { |
| 15589 pixels->set(i, i % 256); | 15589 pixels->set(i, i % 256); |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15935 result = CompileRun("ext_array[1] = 23;"); | 15935 result = CompileRun("ext_array[1] = 23;"); |
| 15936 CHECK_EQ(23, result->Int32Value()); | 15936 CHECK_EQ(23, result->Int32Value()); |
| 15937 } | 15937 } |
| 15938 | 15938 |
| 15939 | 15939 |
| 15940 template <class ExternalArrayClass, class ElementType> | 15940 template <class ExternalArrayClass, class ElementType> |
| 15941 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, | 15941 static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, |
| 15942 int64_t low, | 15942 int64_t low, |
| 15943 int64_t high) { | 15943 int64_t high) { |
| 15944 LocalContext context; | 15944 LocalContext context; |
| 15945 i::Isolate* isolate = i::Isolate::Current(); | 15945 i::Isolate* isolate = CcTest::i_isolate(); |
| 15946 i::Factory* factory = isolate->factory(); | 15946 i::Factory* factory = isolate->factory(); |
| 15947 v8::HandleScope scope(context->GetIsolate()); | 15947 v8::HandleScope scope(context->GetIsolate()); |
| 15948 const int kElementCount = 40; | 15948 const int kElementCount = 40; |
| 15949 int element_size = ExternalArrayElementSize(array_type); | 15949 int element_size = ExternalArrayElementSize(array_type); |
| 15950 ElementType* array_data = | 15950 ElementType* array_data = |
| 15951 static_cast<ElementType*>(malloc(kElementCount * element_size)); | 15951 static_cast<ElementType*>(malloc(kElementCount * element_size)); |
| 15952 i::Handle<ExternalArrayClass> array = | 15952 i::Handle<ExternalArrayClass> array = |
| 15953 i::Handle<ExternalArrayClass>::cast( | 15953 i::Handle<ExternalArrayClass>::cast( |
| 15954 factory->NewExternalArray(kElementCount, array_type, array_data)); | 15954 factory->NewExternalArray(kElementCount, array_type, array_data)); |
| 15955 // Force GC to trigger verification. | 15955 // Force GC to trigger verification. |
| (...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16937 | 16937 |
| 16938 i::ScopedVector<char> code(1024); | 16938 i::ScopedVector<char> code(1024); |
| 16939 i::OS::SNPrintF(code, source, "//# sourceURL=source_url"); | 16939 i::OS::SNPrintF(code, source, "//# sourceURL=source_url"); |
| 16940 CHECK(CompileRunWithOrigin(code.start(), "url", 0, 0)->IsUndefined()); | 16940 CHECK(CompileRunWithOrigin(code.start(), "url", 0, 0)->IsUndefined()); |
| 16941 i::OS::SNPrintF(code, source, "//@ sourceURL=source_url"); | 16941 i::OS::SNPrintF(code, source, "//@ sourceURL=source_url"); |
| 16942 CHECK(CompileRunWithOrigin(code.start(), "url", 0, 0)->IsUndefined()); | 16942 CHECK(CompileRunWithOrigin(code.start(), "url", 0, 0)->IsUndefined()); |
| 16943 } | 16943 } |
| 16944 | 16944 |
| 16945 | 16945 |
| 16946 static void CreateGarbageInOldSpace() { | 16946 static void CreateGarbageInOldSpace() { |
| 16947 i::Factory* factory = i::Isolate::Current()->factory(); | 16947 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 16948 v8::HandleScope scope(CcTest::isolate()); | 16948 v8::HandleScope scope(CcTest::isolate()); |
| 16949 i::AlwaysAllocateScope always_allocate; | 16949 i::AlwaysAllocateScope always_allocate; |
| 16950 for (int i = 0; i < 1000; i++) { | 16950 for (int i = 0; i < 1000; i++) { |
| 16951 factory->NewFixedArray(1000, i::TENURED); | 16951 factory->NewFixedArray(1000, i::TENURED); |
| 16952 } | 16952 } |
| 16953 } | 16953 } |
| 16954 | 16954 |
| 16955 | 16955 |
| 16956 // Test that idle notification can be handled and eventually returns true. | 16956 // Test that idle notification can be handled and eventually returns true. |
| 16957 TEST(IdleNotification) { | 16957 TEST(IdleNotification) { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17044 } | 17044 } |
| 17045 intptr_t final_size = HEAP->SizeOfObjects(); | 17045 intptr_t final_size = HEAP->SizeOfObjects(); |
| 17046 CHECK_LT(final_size, initial_size + 1); | 17046 CHECK_LT(final_size, initial_size + 1); |
| 17047 } | 17047 } |
| 17048 | 17048 |
| 17049 static uint32_t* stack_limit; | 17049 static uint32_t* stack_limit; |
| 17050 | 17050 |
| 17051 static void GetStackLimitCallback( | 17051 static void GetStackLimitCallback( |
| 17052 const v8::FunctionCallbackInfo<v8::Value>& args) { | 17052 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 17053 stack_limit = reinterpret_cast<uint32_t*>( | 17053 stack_limit = reinterpret_cast<uint32_t*>( |
| 17054 i::Isolate::Current()->stack_guard()->real_climit()); | 17054 CcTest::i_isolate()->stack_guard()->real_climit()); |
| 17055 } | 17055 } |
| 17056 | 17056 |
| 17057 | 17057 |
| 17058 // Uses the address of a local variable to determine the stack top now. | 17058 // Uses the address of a local variable to determine the stack top now. |
| 17059 // Given a size, returns an address that is that far from the current | 17059 // Given a size, returns an address that is that far from the current |
| 17060 // top of stack. | 17060 // top of stack. |
| 17061 static uint32_t* ComputeStackLimit(uint32_t size) { | 17061 static uint32_t* ComputeStackLimit(uint32_t size) { |
| 17062 uint32_t* answer = &size - (size / sizeof(size)); | 17062 uint32_t* answer = &size - (size / sizeof(size)); |
| 17063 // If the size is very large and the stack is very near the bottom of | 17063 // If the size is very large and the stack is very near the bottom of |
| 17064 // memory then the calculation above may wrap around and give an address | 17064 // memory then the calculation above may wrap around and give an address |
| (...skipping 2229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19294 THREADED_TEST(Regress1516) { | 19294 THREADED_TEST(Regress1516) { |
| 19295 LocalContext context; | 19295 LocalContext context; |
| 19296 v8::HandleScope scope(context->GetIsolate()); | 19296 v8::HandleScope scope(context->GetIsolate()); |
| 19297 | 19297 |
| 19298 { v8::HandleScope temp_scope(context->GetIsolate()); | 19298 { v8::HandleScope temp_scope(context->GetIsolate()); |
| 19299 CompileRun("({'a': 0})"); | 19299 CompileRun("({'a': 0})"); |
| 19300 } | 19300 } |
| 19301 | 19301 |
| 19302 int elements; | 19302 int elements; |
| 19303 { i::MapCache* map_cache = | 19303 { i::MapCache* map_cache = |
| 19304 i::MapCache::cast(i::Isolate::Current()->context()->map_cache()); | 19304 i::MapCache::cast(CcTest::i_isolate()->context()->map_cache()); |
| 19305 elements = map_cache->NumberOfElements(); | 19305 elements = map_cache->NumberOfElements(); |
| 19306 CHECK_LE(1, elements); | 19306 CHECK_LE(1, elements); |
| 19307 } | 19307 } |
| 19308 | 19308 |
| 19309 i::Isolate::Current()->heap()->CollectAllGarbage( | 19309 CcTest::i_isolate()->heap()->CollectAllGarbage( |
| 19310 i::Heap::kAbortIncrementalMarkingMask); | 19310 i::Heap::kAbortIncrementalMarkingMask); |
| 19311 { i::Object* raw_map_cache = i::Isolate::Current()->context()->map_cache(); | 19311 { i::Object* raw_map_cache = CcTest::i_isolate()->context()->map_cache(); |
| 19312 if (raw_map_cache != i::Isolate::Current()->heap()->undefined_value()) { | 19312 if (raw_map_cache != CcTest::i_isolate()->heap()->undefined_value()) { |
| 19313 i::MapCache* map_cache = i::MapCache::cast(raw_map_cache); | 19313 i::MapCache* map_cache = i::MapCache::cast(raw_map_cache); |
| 19314 CHECK_GT(elements, map_cache->NumberOfElements()); | 19314 CHECK_GT(elements, map_cache->NumberOfElements()); |
| 19315 } | 19315 } |
| 19316 } | 19316 } |
| 19317 } | 19317 } |
| 19318 | 19318 |
| 19319 | 19319 |
| 19320 static bool BlockProtoNamedSecurityTestCallback(Local<v8::Object> global, | 19320 static bool BlockProtoNamedSecurityTestCallback(Local<v8::Object> global, |
| 19321 Local<Value> name, | 19321 Local<Value> name, |
| 19322 v8::AccessType type, | 19322 v8::AccessType type, |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19709 } | 19709 } |
| 19710 | 19710 |
| 19711 | 19711 |
| 19712 TEST(PrimaryStubCache) { | 19712 TEST(PrimaryStubCache) { |
| 19713 StubCacheHelper(false); | 19713 StubCacheHelper(false); |
| 19714 } | 19714 } |
| 19715 | 19715 |
| 19716 | 19716 |
| 19717 TEST(StaticGetters) { | 19717 TEST(StaticGetters) { |
| 19718 LocalContext context; | 19718 LocalContext context; |
| 19719 i::Factory* factory = i::Isolate::Current()->factory(); | 19719 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 19720 v8::Isolate* isolate = CcTest::isolate(); | 19720 v8::Isolate* isolate = CcTest::isolate(); |
| 19721 v8::HandleScope scope(isolate); | 19721 v8::HandleScope scope(isolate); |
| 19722 i::Handle<i::Object> undefined_value = factory->undefined_value(); | 19722 i::Handle<i::Object> undefined_value = factory->undefined_value(); |
| 19723 CHECK(*v8::Utils::OpenHandle(*v8::Undefined()) == *undefined_value); | 19723 CHECK(*v8::Utils::OpenHandle(*v8::Undefined()) == *undefined_value); |
| 19724 CHECK(*v8::Utils::OpenHandle(*v8::Undefined(isolate)) == *undefined_value); | 19724 CHECK(*v8::Utils::OpenHandle(*v8::Undefined(isolate)) == *undefined_value); |
| 19725 i::Handle<i::Object> null_value = factory->null_value(); | 19725 i::Handle<i::Object> null_value = factory->null_value(); |
| 19726 CHECK(*v8::Utils::OpenHandle(*v8::Null()) == *null_value); | 19726 CHECK(*v8::Utils::OpenHandle(*v8::Null()) == *null_value); |
| 19727 CHECK(*v8::Utils::OpenHandle(*v8::Null(isolate)) == *null_value); | 19727 CHECK(*v8::Utils::OpenHandle(*v8::Null(isolate)) == *null_value); |
| 19728 i::Handle<i::Object> true_value = factory->true_value(); | 19728 i::Handle<i::Object> true_value = factory->true_value(); |
| 19729 CHECK(*v8::Utils::OpenHandle(*v8::True()) == *true_value); | 19729 CHECK(*v8::Utils::OpenHandle(*v8::True()) == *true_value); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 19748 CHECK_EQ(data2, isolate->GetData()); | 19748 CHECK_EQ(data2, isolate->GetData()); |
| 19749 CHECK_EQ(data2, i_isolate->GetData()); | 19749 CHECK_EQ(data2, i_isolate->GetData()); |
| 19750 i_isolate->TearDown(); | 19750 i_isolate->TearDown(); |
| 19751 CHECK_EQ(data2, isolate->GetData()); | 19751 CHECK_EQ(data2, isolate->GetData()); |
| 19752 CHECK_EQ(data2, i_isolate->GetData()); | 19752 CHECK_EQ(data2, i_isolate->GetData()); |
| 19753 } | 19753 } |
| 19754 | 19754 |
| 19755 | 19755 |
| 19756 TEST(StringEmpty) { | 19756 TEST(StringEmpty) { |
| 19757 LocalContext context; | 19757 LocalContext context; |
| 19758 i::Factory* factory = i::Isolate::Current()->factory(); | 19758 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 19759 v8::Isolate* isolate = CcTest::isolate(); | 19759 v8::Isolate* isolate = CcTest::isolate(); |
| 19760 v8::HandleScope scope(isolate); | 19760 v8::HandleScope scope(isolate); |
| 19761 i::Handle<i::Object> empty_string = factory->empty_string(); | 19761 i::Handle<i::Object> empty_string = factory->empty_string(); |
| 19762 CHECK(*v8::Utils::OpenHandle(*v8::String::Empty()) == *empty_string); | 19762 CHECK(*v8::Utils::OpenHandle(*v8::String::Empty()) == *empty_string); |
| 19763 CHECK(*v8::Utils::OpenHandle(*v8::String::Empty(isolate)) == *empty_string); | 19763 CHECK(*v8::Utils::OpenHandle(*v8::String::Empty(isolate)) == *empty_string); |
| 19764 } | 19764 } |
| 19765 | 19765 |
| 19766 | 19766 |
| 19767 static int instance_checked_getter_count = 0; | 19767 static int instance_checked_getter_count = 0; |
| 19768 static void InstanceCheckedGetter( | 19768 static void InstanceCheckedGetter( |
| (...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20590 Local<Object> data2 = v8::Object::New(); | 20590 Local<Object> data2 = v8::Object::New(); |
| 20591 function_new_expected_env = data2; | 20591 function_new_expected_env = data2; |
| 20592 Local<Function> func2 = Function::New(isolate, FunctionNewCallback, data2); | 20592 Local<Function> func2 = Function::New(isolate, FunctionNewCallback, data2); |
| 20593 CHECK(!func2->IsNull()); | 20593 CHECK(!func2->IsNull()); |
| 20594 CHECK_NE(func, func2); | 20594 CHECK_NE(func, func2); |
| 20595 env->Global()->Set(v8_str("func2"), func2); | 20595 env->Global()->Set(v8_str("func2"), func2); |
| 20596 Local<Value> result2 = CompileRun("func2();"); | 20596 Local<Value> result2 = CompileRun("func2();"); |
| 20597 CHECK_EQ(v8::Integer::New(17, isolate), result2); | 20597 CHECK_EQ(v8::Integer::New(17, isolate), result2); |
| 20598 } | 20598 } |
| 20599 | 20599 |
| OLD | NEW |