| 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 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 Local<Context> local_env; | 197 Local<Context> local_env; |
| 198 { | 198 { |
| 199 LocalContext env; | 199 LocalContext env; |
| 200 local_env = env.local(); | 200 local_env = env.local(); |
| 201 } | 201 } |
| 202 | 202 |
| 203 // Local context should still be live. | 203 // Local context should still be live. |
| 204 CHECK(!local_env.IsEmpty()); | 204 CHECK(!local_env.IsEmpty()); |
| 205 local_env->Enter(); | 205 local_env->Enter(); |
| 206 | 206 |
| 207 v8::Handle<v8::Primitive> undef = v8::Undefined(); | 207 v8::Handle<v8::Primitive> undef = v8::Undefined(CcTest::isolate()); |
| 208 CHECK(!undef.IsEmpty()); | 208 CHECK(!undef.IsEmpty()); |
| 209 CHECK(undef->IsUndefined()); | 209 CHECK(undef->IsUndefined()); |
| 210 | 210 |
| 211 const char* c_source = "1 + 2 + 3"; | 211 const char* c_source = "1 + 2 + 3"; |
| 212 Local<String> source = String::New(c_source); | 212 Local<String> source = String::New(c_source); |
| 213 Local<Script> script = Script::Compile(source); | 213 Local<Script> script = Script::Compile(source); |
| 214 CHECK_EQ(6, script->Run()->Int32Value()); | 214 CHECK_EQ(6, script->Run()->Int32Value()); |
| 215 | 215 |
| 216 local_env->Exit(); | 216 local_env->Exit(); |
| 217 } | 217 } |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 CHECK(value7->IsTrue()); | 384 CHECK(value7->IsTrue()); |
| 385 | 385 |
| 386 v8::Handle<Value> value8 = CompileRun( | 386 v8::Handle<Value> value8 = CompileRun( |
| 387 "Fun2(new Cons1(), new Cons2()) == '[object Cons1],[object Cons2]'"); | 387 "Fun2(new Cons1(), new Cons2()) == '[object Cons1],[object Cons2]'"); |
| 388 CHECK(value8->IsTrue()); | 388 CHECK(value8->IsTrue()); |
| 389 } | 389 } |
| 390 | 390 |
| 391 | 391 |
| 392 THREADED_TEST(HulIgennem) { | 392 THREADED_TEST(HulIgennem) { |
| 393 LocalContext env; | 393 LocalContext env; |
| 394 v8::HandleScope scope(env->GetIsolate()); | 394 v8::Isolate* isolate = env->GetIsolate(); |
| 395 v8::Handle<v8::Primitive> undef = v8::Undefined(); | 395 v8::HandleScope scope(isolate); |
| 396 v8::Handle<v8::Primitive> undef = v8::Undefined(isolate); |
| 396 Local<String> undef_str = undef->ToString(); | 397 Local<String> undef_str = undef->ToString(); |
| 397 char* value = i::NewArray<char>(undef_str->Utf8Length() + 1); | 398 char* value = i::NewArray<char>(undef_str->Utf8Length() + 1); |
| 398 undef_str->WriteUtf8(value); | 399 undef_str->WriteUtf8(value); |
| 399 CHECK_EQ(0, strcmp(value, "undefined")); | 400 CHECK_EQ(0, strcmp(value, "undefined")); |
| 400 i::DeleteArray(value); | 401 i::DeleteArray(value); |
| 401 } | 402 } |
| 402 | 403 |
| 403 | 404 |
| 404 THREADED_TEST(Access) { | 405 THREADED_TEST(Access) { |
| 405 LocalContext env; | 406 LocalContext env; |
| 406 v8::HandleScope scope(env->GetIsolate()); | 407 v8::Isolate* isolate = env->GetIsolate(); |
| 408 v8::HandleScope scope(isolate); |
| 407 Local<v8::Object> obj = v8::Object::New(); | 409 Local<v8::Object> obj = v8::Object::New(); |
| 408 Local<Value> foo_before = obj->Get(v8_str("foo")); | 410 Local<Value> foo_before = obj->Get(v8_str("foo")); |
| 409 CHECK(foo_before->IsUndefined()); | 411 CHECK(foo_before->IsUndefined()); |
| 410 Local<String> bar_str = v8_str("bar"); | 412 Local<String> bar_str = v8_str("bar"); |
| 411 obj->Set(v8_str("foo"), bar_str); | 413 obj->Set(v8_str("foo"), bar_str); |
| 412 Local<Value> foo_after = obj->Get(v8_str("foo")); | 414 Local<Value> foo_after = obj->Get(v8_str("foo")); |
| 413 CHECK(!foo_after->IsUndefined()); | 415 CHECK(!foo_after->IsUndefined()); |
| 414 CHECK(foo_after->IsString()); | 416 CHECK(foo_after->IsString()); |
| 415 CHECK_EQ(bar_str, foo_after); | 417 CHECK_EQ(bar_str, foo_after); |
| 416 } | 418 } |
| (...skipping 1265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1682 LocalContext env; | 1684 LocalContext env; |
| 1683 v8::HandleScope scope(env->GetIsolate()); | 1685 v8::HandleScope scope(env->GetIsolate()); |
| 1684 double PI = 3.1415926; | 1686 double PI = 3.1415926; |
| 1685 Local<v8::Number> pi_obj = v8::Number::New(PI); | 1687 Local<v8::Number> pi_obj = v8::Number::New(PI); |
| 1686 CHECK_EQ(PI, pi_obj->NumberValue()); | 1688 CHECK_EQ(PI, pi_obj->NumberValue()); |
| 1687 } | 1689 } |
| 1688 | 1690 |
| 1689 | 1691 |
| 1690 THREADED_TEST(ToNumber) { | 1692 THREADED_TEST(ToNumber) { |
| 1691 LocalContext env; | 1693 LocalContext env; |
| 1692 v8::HandleScope scope(env->GetIsolate()); | 1694 v8::Isolate* isolate = CcTest::isolate(); |
| 1695 v8::HandleScope scope(isolate); |
| 1693 Local<String> str = v8_str("3.1415926"); | 1696 Local<String> str = v8_str("3.1415926"); |
| 1694 CHECK_EQ(3.1415926, str->NumberValue()); | 1697 CHECK_EQ(3.1415926, str->NumberValue()); |
| 1695 v8::Handle<v8::Boolean> t = v8::True(); | 1698 v8::Handle<v8::Boolean> t = v8::True(isolate); |
| 1696 CHECK_EQ(1.0, t->NumberValue()); | 1699 CHECK_EQ(1.0, t->NumberValue()); |
| 1697 v8::Handle<v8::Boolean> f = v8::False(); | 1700 v8::Handle<v8::Boolean> f = v8::False(isolate); |
| 1698 CHECK_EQ(0.0, f->NumberValue()); | 1701 CHECK_EQ(0.0, f->NumberValue()); |
| 1699 } | 1702 } |
| 1700 | 1703 |
| 1701 | 1704 |
| 1702 THREADED_TEST(Date) { | 1705 THREADED_TEST(Date) { |
| 1703 LocalContext env; | 1706 LocalContext env; |
| 1704 v8::HandleScope scope(env->GetIsolate()); | 1707 v8::HandleScope scope(env->GetIsolate()); |
| 1705 double PI = 3.1415926; | 1708 double PI = 3.1415926; |
| 1706 Local<Value> date = v8::Date::New(PI); | 1709 Local<Value> date = v8::Date::New(PI); |
| 1707 CHECK_EQ(3.0, date->NumberValue()); | 1710 CHECK_EQ(3.0, date->NumberValue()); |
| 1708 date.As<v8::Date>()->Set(v8_str("property"), v8::Integer::New(42)); | 1711 date.As<v8::Date>()->Set(v8_str("property"), v8::Integer::New(42)); |
| 1709 CHECK_EQ(42, date.As<v8::Date>()->Get(v8_str("property"))->Int32Value()); | 1712 CHECK_EQ(42, date.As<v8::Date>()->Get(v8_str("property"))->Int32Value()); |
| 1710 } | 1713 } |
| 1711 | 1714 |
| 1712 | 1715 |
| 1713 THREADED_TEST(Boolean) { | 1716 THREADED_TEST(Boolean) { |
| 1714 LocalContext env; | 1717 LocalContext env; |
| 1715 v8::HandleScope scope(env->GetIsolate()); | 1718 v8::HandleScope scope(env->GetIsolate()); |
| 1716 v8::Handle<v8::Boolean> t = v8::True(); | 1719 v8::Handle<v8::Boolean> t = v8::True(CcTest::isolate()); |
| 1717 CHECK(t->Value()); | 1720 CHECK(t->Value()); |
| 1718 v8::Handle<v8::Boolean> f = v8::False(); | 1721 v8::Handle<v8::Boolean> f = v8::False(CcTest::isolate()); |
| 1719 CHECK(!f->Value()); | 1722 CHECK(!f->Value()); |
| 1720 v8::Handle<v8::Primitive> u = v8::Undefined(); | 1723 v8::Handle<v8::Primitive> u = v8::Undefined(CcTest::isolate()); |
| 1721 CHECK(!u->BooleanValue()); | 1724 CHECK(!u->BooleanValue()); |
| 1722 v8::Handle<v8::Primitive> n = v8::Null(); | 1725 v8::Handle<v8::Primitive> n = v8::Null(CcTest::isolate()); |
| 1723 CHECK(!n->BooleanValue()); | 1726 CHECK(!n->BooleanValue()); |
| 1724 v8::Handle<String> str1 = v8_str(""); | 1727 v8::Handle<String> str1 = v8_str(""); |
| 1725 CHECK(!str1->BooleanValue()); | 1728 CHECK(!str1->BooleanValue()); |
| 1726 v8::Handle<String> str2 = v8_str("x"); | 1729 v8::Handle<String> str2 = v8_str("x"); |
| 1727 CHECK(str2->BooleanValue()); | 1730 CHECK(str2->BooleanValue()); |
| 1728 CHECK(!v8::Number::New(0)->BooleanValue()); | 1731 CHECK(!v8::Number::New(0)->BooleanValue()); |
| 1729 CHECK(v8::Number::New(-1)->BooleanValue()); | 1732 CHECK(v8::Number::New(-1)->BooleanValue()); |
| 1730 CHECK(v8::Number::New(1)->BooleanValue()); | 1733 CHECK(v8::Number::New(1)->BooleanValue()); |
| 1731 CHECK(v8::Number::New(42)->BooleanValue()); | 1734 CHECK(v8::Number::New(42)->BooleanValue()); |
| 1732 CHECK(!v8_compile("NaN")->Run()->BooleanValue()); | 1735 CHECK(!v8_compile("NaN")->Run()->BooleanValue()); |
| (...skipping 2022 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3755 static void check_message_3(v8::Handle<v8::Message> message, | 3758 static void check_message_3(v8::Handle<v8::Message> message, |
| 3756 v8::Handle<Value> data) { | 3759 v8::Handle<Value> data) { |
| 3757 CHECK(message->IsSharedCrossOrigin()); | 3760 CHECK(message->IsSharedCrossOrigin()); |
| 3758 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); | 3761 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); |
| 3759 message_received = true; | 3762 message_received = true; |
| 3760 } | 3763 } |
| 3761 | 3764 |
| 3762 | 3765 |
| 3763 TEST(MessageHandler3) { | 3766 TEST(MessageHandler3) { |
| 3764 message_received = false; | 3767 message_received = false; |
| 3765 v8::HandleScope scope(CcTest::isolate()); | 3768 v8::Isolate* isolate = CcTest::isolate(); |
| 3769 v8::HandleScope scope(isolate); |
| 3766 CHECK(!message_received); | 3770 CHECK(!message_received); |
| 3767 v8::V8::AddMessageListener(check_message_3); | 3771 v8::V8::AddMessageListener(check_message_3); |
| 3768 LocalContext context; | 3772 LocalContext context; |
| 3769 v8::ScriptOrigin origin = | 3773 v8::ScriptOrigin origin = |
| 3770 v8::ScriptOrigin(v8_str("6.75"), | 3774 v8::ScriptOrigin(v8_str("6.75"), |
| 3771 v8::Integer::New(1), | 3775 v8::Integer::New(1, isolate), |
| 3772 v8::Integer::New(2), | 3776 v8::Integer::New(2, isolate), |
| 3773 v8::True()); | 3777 v8::True(isolate)); |
| 3774 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), | 3778 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), |
| 3775 &origin); | 3779 &origin); |
| 3776 script->Run(); | 3780 script->Run(); |
| 3777 CHECK(message_received); | 3781 CHECK(message_received); |
| 3778 // clear out the message listener | 3782 // clear out the message listener |
| 3779 v8::V8::RemoveMessageListeners(check_message_3); | 3783 v8::V8::RemoveMessageListeners(check_message_3); |
| 3780 } | 3784 } |
| 3781 | 3785 |
| 3782 | 3786 |
| 3783 static void check_message_4(v8::Handle<v8::Message> message, | 3787 static void check_message_4(v8::Handle<v8::Message> message, |
| 3784 v8::Handle<Value> data) { | 3788 v8::Handle<Value> data) { |
| 3785 CHECK(!message->IsSharedCrossOrigin()); | 3789 CHECK(!message->IsSharedCrossOrigin()); |
| 3786 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); | 3790 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); |
| 3787 message_received = true; | 3791 message_received = true; |
| 3788 } | 3792 } |
| 3789 | 3793 |
| 3790 | 3794 |
| 3791 TEST(MessageHandler4) { | 3795 TEST(MessageHandler4) { |
| 3792 message_received = false; | 3796 message_received = false; |
| 3793 v8::HandleScope scope(CcTest::isolate()); | 3797 v8::Isolate* isolate = CcTest::isolate(); |
| 3798 v8::HandleScope scope(isolate); |
| 3794 CHECK(!message_received); | 3799 CHECK(!message_received); |
| 3795 v8::V8::AddMessageListener(check_message_4); | 3800 v8::V8::AddMessageListener(check_message_4); |
| 3796 LocalContext context; | 3801 LocalContext context; |
| 3797 v8::ScriptOrigin origin = | 3802 v8::ScriptOrigin origin = |
| 3798 v8::ScriptOrigin(v8_str("6.75"), | 3803 v8::ScriptOrigin(v8_str("6.75"), |
| 3799 v8::Integer::New(1), | 3804 v8::Integer::New(1, isolate), |
| 3800 v8::Integer::New(2), | 3805 v8::Integer::New(2, isolate), |
| 3801 v8::False()); | 3806 v8::False(isolate)); |
| 3802 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), | 3807 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), |
| 3803 &origin); | 3808 &origin); |
| 3804 script->Run(); | 3809 script->Run(); |
| 3805 CHECK(message_received); | 3810 CHECK(message_received); |
| 3806 // clear out the message listener | 3811 // clear out the message listener |
| 3807 v8::V8::RemoveMessageListeners(check_message_4); | 3812 v8::V8::RemoveMessageListeners(check_message_4); |
| 3808 } | 3813 } |
| 3809 | 3814 |
| 3810 | 3815 |
| 3811 static void check_message_5a(v8::Handle<v8::Message> message, | 3816 static void check_message_5a(v8::Handle<v8::Message> message, |
| 3812 v8::Handle<Value> data) { | 3817 v8::Handle<Value> data) { |
| 3813 CHECK(message->IsSharedCrossOrigin()); | 3818 CHECK(message->IsSharedCrossOrigin()); |
| 3814 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); | 3819 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); |
| 3815 message_received = true; | 3820 message_received = true; |
| 3816 } | 3821 } |
| 3817 | 3822 |
| 3818 | 3823 |
| 3819 static void check_message_5b(v8::Handle<v8::Message> message, | 3824 static void check_message_5b(v8::Handle<v8::Message> message, |
| 3820 v8::Handle<Value> data) { | 3825 v8::Handle<Value> data) { |
| 3821 CHECK(!message->IsSharedCrossOrigin()); | 3826 CHECK(!message->IsSharedCrossOrigin()); |
| 3822 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); | 3827 CHECK_EQ(6.75, message->GetScriptResourceName()->NumberValue()); |
| 3823 message_received = true; | 3828 message_received = true; |
| 3824 } | 3829 } |
| 3825 | 3830 |
| 3826 | 3831 |
| 3827 TEST(MessageHandler5) { | 3832 TEST(MessageHandler5) { |
| 3828 message_received = false; | 3833 message_received = false; |
| 3829 v8::HandleScope scope(CcTest::isolate()); | 3834 v8::Isolate* isolate = CcTest::isolate(); |
| 3835 v8::HandleScope scope(isolate); |
| 3830 CHECK(!message_received); | 3836 CHECK(!message_received); |
| 3831 v8::V8::AddMessageListener(check_message_5a); | 3837 v8::V8::AddMessageListener(check_message_5a); |
| 3832 LocalContext context; | 3838 LocalContext context; |
| 3833 v8::ScriptOrigin origin = | 3839 v8::ScriptOrigin origin = |
| 3834 v8::ScriptOrigin(v8_str("6.75"), | 3840 v8::ScriptOrigin(v8_str("6.75"), |
| 3835 v8::Integer::New(1), | 3841 v8::Integer::New(1, isolate), |
| 3836 v8::Integer::New(2), | 3842 v8::Integer::New(2, isolate), |
| 3837 v8::True()); | 3843 v8::True(isolate)); |
| 3838 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), | 3844 v8::Handle<v8::Script> script = Script::Compile(v8_str("throw 'error'"), |
| 3839 &origin); | 3845 &origin); |
| 3840 script->Run(); | 3846 script->Run(); |
| 3841 CHECK(message_received); | 3847 CHECK(message_received); |
| 3842 // clear out the message listener | 3848 // clear out the message listener |
| 3843 v8::V8::RemoveMessageListeners(check_message_5a); | 3849 v8::V8::RemoveMessageListeners(check_message_5a); |
| 3844 | 3850 |
| 3845 message_received = false; | 3851 message_received = false; |
| 3846 v8::V8::AddMessageListener(check_message_5b); | 3852 v8::V8::AddMessageListener(check_message_5b); |
| 3847 origin = | 3853 origin = |
| 3848 v8::ScriptOrigin(v8_str("6.75"), | 3854 v8::ScriptOrigin(v8_str("6.75"), |
| 3849 v8::Integer::New(1), | 3855 v8::Integer::New(1, isolate), |
| 3850 v8::Integer::New(2), | 3856 v8::Integer::New(2, isolate), |
| 3851 v8::False()); | 3857 v8::False(isolate)); |
| 3852 script = Script::Compile(v8_str("throw 'error'"), | 3858 script = Script::Compile(v8_str("throw 'error'"), |
| 3853 &origin); | 3859 &origin); |
| 3854 script->Run(); | 3860 script->Run(); |
| 3855 CHECK(message_received); | 3861 CHECK(message_received); |
| 3856 // clear out the message listener | 3862 // clear out the message listener |
| 3857 v8::V8::RemoveMessageListeners(check_message_5b); | 3863 v8::V8::RemoveMessageListeners(check_message_5b); |
| 3858 } | 3864 } |
| 3859 | 3865 |
| 3860 | 3866 |
| 3861 THREADED_TEST(GetSetProperty) { | 3867 THREADED_TEST(GetSetProperty) { |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4314 // Positive zero | 4320 // Positive zero |
| 4315 CompileRun("var obj = -0.0;"); | 4321 CompileRun("var obj = -0.0;"); |
| 4316 obj = env->Global()->Get(v8_str("obj")); | 4322 obj = env->Global()->Get(v8_str("obj")); |
| 4317 CHECK(!obj->IsInt32()); | 4323 CHECK(!obj->IsInt32()); |
| 4318 CHECK(!obj->IsUint32()); | 4324 CHECK(!obj->IsUint32()); |
| 4319 } | 4325 } |
| 4320 | 4326 |
| 4321 | 4327 |
| 4322 THREADED_TEST(ConversionException) { | 4328 THREADED_TEST(ConversionException) { |
| 4323 LocalContext env; | 4329 LocalContext env; |
| 4324 v8::HandleScope scope(env->GetIsolate()); | 4330 v8::Isolate* isolate = env->GetIsolate(); |
| 4331 v8::HandleScope scope(isolate); |
| 4325 CompileRun( | 4332 CompileRun( |
| 4326 "function TestClass() { };" | 4333 "function TestClass() { };" |
| 4327 "TestClass.prototype.toString = function () { throw 'uncle?'; };" | 4334 "TestClass.prototype.toString = function () { throw 'uncle?'; };" |
| 4328 "var obj = new TestClass();"); | 4335 "var obj = new TestClass();"); |
| 4329 Local<Value> obj = env->Global()->Get(v8_str("obj")); | 4336 Local<Value> obj = env->Global()->Get(v8_str("obj")); |
| 4330 | 4337 |
| 4331 v8::TryCatch try_catch; | 4338 v8::TryCatch try_catch; |
| 4332 | 4339 |
| 4333 Local<Value> to_string_result = obj->ToString(); | 4340 Local<Value> to_string_result = obj->ToString(); |
| 4334 CHECK(to_string_result.IsEmpty()); | 4341 CHECK(to_string_result.IsEmpty()); |
| 4335 CheckUncle(&try_catch); | 4342 CheckUncle(&try_catch); |
| 4336 | 4343 |
| 4337 Local<Value> to_number_result = obj->ToNumber(); | 4344 Local<Value> to_number_result = obj->ToNumber(); |
| 4338 CHECK(to_number_result.IsEmpty()); | 4345 CHECK(to_number_result.IsEmpty()); |
| 4339 CheckUncle(&try_catch); | 4346 CheckUncle(&try_catch); |
| 4340 | 4347 |
| 4341 Local<Value> to_integer_result = obj->ToInteger(); | 4348 Local<Value> to_integer_result = obj->ToInteger(); |
| 4342 CHECK(to_integer_result.IsEmpty()); | 4349 CHECK(to_integer_result.IsEmpty()); |
| 4343 CheckUncle(&try_catch); | 4350 CheckUncle(&try_catch); |
| 4344 | 4351 |
| 4345 Local<Value> to_uint32_result = obj->ToUint32(); | 4352 Local<Value> to_uint32_result = obj->ToUint32(); |
| 4346 CHECK(to_uint32_result.IsEmpty()); | 4353 CHECK(to_uint32_result.IsEmpty()); |
| 4347 CheckUncle(&try_catch); | 4354 CheckUncle(&try_catch); |
| 4348 | 4355 |
| 4349 Local<Value> to_int32_result = obj->ToInt32(); | 4356 Local<Value> to_int32_result = obj->ToInt32(); |
| 4350 CHECK(to_int32_result.IsEmpty()); | 4357 CHECK(to_int32_result.IsEmpty()); |
| 4351 CheckUncle(&try_catch); | 4358 CheckUncle(&try_catch); |
| 4352 | 4359 |
| 4353 Local<Value> to_object_result = v8::Undefined()->ToObject(); | 4360 Local<Value> to_object_result = v8::Undefined(isolate)->ToObject(); |
| 4354 CHECK(to_object_result.IsEmpty()); | 4361 CHECK(to_object_result.IsEmpty()); |
| 4355 CHECK(try_catch.HasCaught()); | 4362 CHECK(try_catch.HasCaught()); |
| 4356 try_catch.Reset(); | 4363 try_catch.Reset(); |
| 4357 | 4364 |
| 4358 int32_t int32_value = obj->Int32Value(); | 4365 int32_t int32_value = obj->Int32Value(); |
| 4359 CHECK_EQ(0, int32_value); | 4366 CHECK_EQ(0, int32_value); |
| 4360 CheckUncle(&try_catch); | 4367 CheckUncle(&try_catch); |
| 4361 | 4368 |
| 4362 uint32_t uint32_value = obj->Uint32Value(); | 4369 uint32_t uint32_value = obj->Uint32Value(); |
| 4363 CHECK_EQ(0, uint32_value); | 4370 CHECK_EQ(0, uint32_value); |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4969 | 4976 |
| 4970 // Assume String is not internalized. | 4977 // Assume String is not internalized. |
| 4971 CHECK(v8_str("a")->StrictEquals(v8_str("a"))); | 4978 CHECK(v8_str("a")->StrictEquals(v8_str("a"))); |
| 4972 CHECK(!v8_str("a")->StrictEquals(v8_str("b"))); | 4979 CHECK(!v8_str("a")->StrictEquals(v8_str("b"))); |
| 4973 CHECK(!v8_str("5")->StrictEquals(v8_num(5))); | 4980 CHECK(!v8_str("5")->StrictEquals(v8_num(5))); |
| 4974 CHECK(v8_num(1)->StrictEquals(v8_num(1))); | 4981 CHECK(v8_num(1)->StrictEquals(v8_num(1))); |
| 4975 CHECK(!v8_num(1)->StrictEquals(v8_num(2))); | 4982 CHECK(!v8_num(1)->StrictEquals(v8_num(2))); |
| 4976 CHECK(v8_num(0.0)->StrictEquals(v8_num(-0.0))); | 4983 CHECK(v8_num(0.0)->StrictEquals(v8_num(-0.0))); |
| 4977 Local<Value> not_a_number = v8_num(i::OS::nan_value()); | 4984 Local<Value> not_a_number = v8_num(i::OS::nan_value()); |
| 4978 CHECK(!not_a_number->StrictEquals(not_a_number)); | 4985 CHECK(!not_a_number->StrictEquals(not_a_number)); |
| 4979 CHECK(v8::False()->StrictEquals(v8::False())); | 4986 CHECK(v8::False(isolate)->StrictEquals(v8::False(isolate))); |
| 4980 CHECK(!v8::False()->StrictEquals(v8::Undefined())); | 4987 CHECK(!v8::False(isolate)->StrictEquals(v8::Undefined(isolate))); |
| 4981 | 4988 |
| 4982 v8::Handle<v8::Object> obj = v8::Object::New(); | 4989 v8::Handle<v8::Object> obj = v8::Object::New(); |
| 4983 v8::Persistent<v8::Object> alias(isolate, obj); | 4990 v8::Persistent<v8::Object> alias(isolate, obj); |
| 4984 CHECK(v8::Local<v8::Object>::New(isolate, alias)->StrictEquals(obj)); | 4991 CHECK(v8::Local<v8::Object>::New(isolate, alias)->StrictEquals(obj)); |
| 4985 alias.Dispose(); | 4992 alias.Dispose(); |
| 4986 | 4993 |
| 4987 CHECK(v8_str("a")->SameValue(v8_str("a"))); | 4994 CHECK(v8_str("a")->SameValue(v8_str("a"))); |
| 4988 CHECK(!v8_str("a")->SameValue(v8_str("b"))); | 4995 CHECK(!v8_str("a")->SameValue(v8_str("b"))); |
| 4989 CHECK(!v8_str("5")->SameValue(v8_num(5))); | 4996 CHECK(!v8_str("5")->SameValue(v8_num(5))); |
| 4990 CHECK(v8_num(1)->SameValue(v8_num(1))); | 4997 CHECK(v8_num(1)->SameValue(v8_num(1))); |
| 4991 CHECK(!v8_num(1)->SameValue(v8_num(2))); | 4998 CHECK(!v8_num(1)->SameValue(v8_num(2))); |
| 4992 CHECK(!v8_num(0.0)->SameValue(v8_num(-0.0))); | 4999 CHECK(!v8_num(0.0)->SameValue(v8_num(-0.0))); |
| 4993 CHECK(not_a_number->SameValue(not_a_number)); | 5000 CHECK(not_a_number->SameValue(not_a_number)); |
| 4994 CHECK(v8::False()->SameValue(v8::False())); | 5001 CHECK(v8::False(isolate)->SameValue(v8::False(isolate))); |
| 4995 CHECK(!v8::False()->SameValue(v8::Undefined())); | 5002 CHECK(!v8::False(isolate)->SameValue(v8::Undefined(isolate))); |
| 4996 } | 5003 } |
| 4997 | 5004 |
| 4998 | 5005 |
| 4999 THREADED_TEST(MultiRun) { | 5006 THREADED_TEST(MultiRun) { |
| 5000 LocalContext context; | 5007 LocalContext context; |
| 5001 v8::HandleScope scope(context->GetIsolate()); | 5008 v8::HandleScope scope(context->GetIsolate()); |
| 5002 Local<Script> script = Script::Compile(v8_str("x")); | 5009 Local<Script> script = Script::Compile(v8_str("x")); |
| 5003 for (int i = 0; i < 10; i++) | 5010 for (int i = 0; i < 10; i++) |
| 5004 script->Run(); | 5011 script->Run(); |
| 5005 } | 5012 } |
| (...skipping 1660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6666 last_location = NULL; | 6673 last_location = NULL; |
| 6667 script->Run(); | 6674 script->Run(); |
| 6668 | 6675 |
| 6669 CHECK(false); // Should not return. | 6676 CHECK(false); // Should not return. |
| 6670 } | 6677 } |
| 6671 | 6678 |
| 6672 | 6679 |
| 6673 static void MissingScriptInfoMessageListener(v8::Handle<v8::Message> message, | 6680 static void MissingScriptInfoMessageListener(v8::Handle<v8::Message> message, |
| 6674 v8::Handle<Value> data) { | 6681 v8::Handle<Value> data) { |
| 6675 CHECK(message->GetScriptResourceName()->IsUndefined()); | 6682 CHECK(message->GetScriptResourceName()->IsUndefined()); |
| 6676 CHECK_EQ(v8::Undefined(), message->GetScriptResourceName()); | 6683 CHECK_EQ(v8::Undefined(CcTest::isolate()), message->GetScriptResourceName()); |
| 6677 message->GetLineNumber(); | 6684 message->GetLineNumber(); |
| 6678 message->GetSourceLine(); | 6685 message->GetSourceLine(); |
| 6679 } | 6686 } |
| 6680 | 6687 |
| 6681 | 6688 |
| 6682 THREADED_TEST(ErrorWithMissingScriptInfo) { | 6689 THREADED_TEST(ErrorWithMissingScriptInfo) { |
| 6683 LocalContext context; | 6690 LocalContext context; |
| 6684 v8::HandleScope scope(context->GetIsolate()); | 6691 v8::HandleScope scope(context->GetIsolate()); |
| 6685 v8::V8::AddMessageListener(MissingScriptInfoMessageListener); | 6692 v8::V8::AddMessageListener(MissingScriptInfoMessageListener); |
| 6686 Script::Compile(v8_str("throw Error()"))->Run(); | 6693 Script::Compile(v8_str("throw Error()"))->Run(); |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6903 } | 6910 } |
| 6904 } | 6911 } |
| 6905 | 6912 |
| 6906 | 6913 |
| 6907 v8::Handle<Function> args_fun; | 6914 v8::Handle<Function> args_fun; |
| 6908 | 6915 |
| 6909 | 6916 |
| 6910 static void ArgumentsTestCallback( | 6917 static void ArgumentsTestCallback( |
| 6911 const v8::FunctionCallbackInfo<v8::Value>& args) { | 6918 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 6912 ApiTestFuzzer::Fuzz(); | 6919 ApiTestFuzzer::Fuzz(); |
| 6920 v8::Isolate* isolate = args.GetIsolate(); |
| 6913 CHECK_EQ(args_fun, args.Callee()); | 6921 CHECK_EQ(args_fun, args.Callee()); |
| 6914 CHECK_EQ(3, args.Length()); | 6922 CHECK_EQ(3, args.Length()); |
| 6915 CHECK_EQ(v8::Integer::New(1), args[0]); | 6923 CHECK_EQ(v8::Integer::New(1, isolate), args[0]); |
| 6916 CHECK_EQ(v8::Integer::New(2), args[1]); | 6924 CHECK_EQ(v8::Integer::New(2, isolate), args[1]); |
| 6917 CHECK_EQ(v8::Integer::New(3), args[2]); | 6925 CHECK_EQ(v8::Integer::New(3, isolate), args[2]); |
| 6918 CHECK_EQ(v8::Undefined(), args[3]); | 6926 CHECK_EQ(v8::Undefined(isolate), args[3]); |
| 6919 v8::HandleScope scope(args.GetIsolate()); | 6927 v8::HandleScope scope(args.GetIsolate()); |
| 6920 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); | 6928 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 6921 } | 6929 } |
| 6922 | 6930 |
| 6923 | 6931 |
| 6924 THREADED_TEST(Arguments) { | 6932 THREADED_TEST(Arguments) { |
| 6925 v8::HandleScope scope(CcTest::isolate()); | 6933 v8::HandleScope scope(CcTest::isolate()); |
| 6926 v8::Handle<v8::ObjectTemplate> global = ObjectTemplate::New(); | 6934 v8::Handle<v8::ObjectTemplate> global = ObjectTemplate::New(); |
| 6927 global->Set(v8_str("f"), v8::FunctionTemplate::New(ArgumentsTestCallback)); | 6935 global->Set(v8_str("f"), v8::FunctionTemplate::New(ArgumentsTestCallback)); |
| 6928 LocalContext context(NULL, global); | 6936 LocalContext context(NULL, global); |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7156 v8::HandleScope scope(CcTest::isolate()); | 7164 v8::HandleScope scope(CcTest::isolate()); |
| 7157 v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New(); | 7165 v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New(); |
| 7158 obj->SetNamedPropertyHandler(PGetter2); | 7166 obj->SetNamedPropertyHandler(PGetter2); |
| 7159 p_getter_count2 = 0; | 7167 p_getter_count2 = 0; |
| 7160 RunHolderTest(obj); | 7168 RunHolderTest(obj); |
| 7161 CHECK_EQ(40, p_getter_count2); | 7169 CHECK_EQ(40, p_getter_count2); |
| 7162 } | 7170 } |
| 7163 | 7171 |
| 7164 | 7172 |
| 7165 THREADED_TEST(ObjectInstantiation) { | 7173 THREADED_TEST(ObjectInstantiation) { |
| 7166 v8::HandleScope scope(CcTest::isolate()); | 7174 v8::Isolate* isolate = CcTest::isolate(); |
| 7175 v8::HandleScope scope(isolate); |
| 7167 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New(); | 7176 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New(); |
| 7168 templ->SetAccessor(v8_str("t"), PGetter2); | 7177 templ->SetAccessor(v8_str("t"), PGetter2); |
| 7169 LocalContext context; | 7178 LocalContext context; |
| 7170 context->Global()->Set(v8_str("o"), templ->NewInstance()); | 7179 context->Global()->Set(v8_str("o"), templ->NewInstance()); |
| 7171 for (int i = 0; i < 100; i++) { | 7180 for (int i = 0; i < 100; i++) { |
| 7172 v8::HandleScope inner_scope(CcTest::isolate()); | 7181 v8::HandleScope inner_scope(CcTest::isolate()); |
| 7173 v8::Handle<v8::Object> obj = templ->NewInstance(); | 7182 v8::Handle<v8::Object> obj = templ->NewInstance(); |
| 7174 CHECK_NE(obj, context->Global()->Get(v8_str("o"))); | 7183 CHECK_NE(obj, context->Global()->Get(v8_str("o"))); |
| 7175 context->Global()->Set(v8_str("o2"), obj); | 7184 context->Global()->Set(v8_str("o2"), obj); |
| 7176 v8::Handle<Value> value = | 7185 v8::Handle<Value> value = |
| 7177 Script::Compile(v8_str("o.__proto__ === o2.__proto__"))->Run(); | 7186 Script::Compile(v8_str("o.__proto__ === o2.__proto__"))->Run(); |
| 7178 CHECK_EQ(v8::True(), value); | 7187 CHECK_EQ(v8::True(isolate), value); |
| 7179 context->Global()->Set(v8_str("o"), obj); | 7188 context->Global()->Set(v8_str("o"), obj); |
| 7180 } | 7189 } |
| 7181 } | 7190 } |
| 7182 | 7191 |
| 7183 | 7192 |
| 7184 static int StrCmp16(uint16_t* a, uint16_t* b) { | 7193 static int StrCmp16(uint16_t* a, uint16_t* b) { |
| 7185 while (true) { | 7194 while (true) { |
| 7186 if (*a == 0 && *b == 0) return 0; | 7195 if (*a == 0 && *b == 0) return 0; |
| 7187 if (*a != *b) return 0 + *a - *b; | 7196 if (*a != *b) return 0 + *a - *b; |
| 7188 a++; | 7197 a++; |
| (...skipping 2598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9787 | 9796 |
| 9788 static void FakeConstructorCallback( | 9797 static void FakeConstructorCallback( |
| 9789 const v8::FunctionCallbackInfo<v8::Value>& args) { | 9798 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 9790 ApiTestFuzzer::Fuzz(); | 9799 ApiTestFuzzer::Fuzz(); |
| 9791 args.GetReturnValue().Set(args[0]); | 9800 args.GetReturnValue().Set(args[0]); |
| 9792 } | 9801 } |
| 9793 | 9802 |
| 9794 | 9803 |
| 9795 THREADED_TEST(ConstructorForObject) { | 9804 THREADED_TEST(ConstructorForObject) { |
| 9796 LocalContext context; | 9805 LocalContext context; |
| 9797 v8::HandleScope handle_scope(context->GetIsolate()); | 9806 v8::Isolate* isolate = context->GetIsolate(); |
| 9807 v8::HandleScope handle_scope(isolate); |
| 9798 | 9808 |
| 9799 { Local<ObjectTemplate> instance_template = ObjectTemplate::New(); | 9809 { Local<ObjectTemplate> instance_template = ObjectTemplate::New(); |
| 9800 instance_template->SetCallAsFunctionHandler(ConstructorCallback); | 9810 instance_template->SetCallAsFunctionHandler(ConstructorCallback); |
| 9801 Local<Object> instance = instance_template->NewInstance(); | 9811 Local<Object> instance = instance_template->NewInstance(); |
| 9802 context->Global()->Set(v8_str("obj"), instance); | 9812 context->Global()->Set(v8_str("obj"), instance); |
| 9803 v8::TryCatch try_catch; | 9813 v8::TryCatch try_catch; |
| 9804 Local<Value> value; | 9814 Local<Value> value; |
| 9805 CHECK(!try_catch.HasCaught()); | 9815 CHECK(!try_catch.HasCaught()); |
| 9806 | 9816 |
| 9807 // Call the Object's constructor with a 32-bit signed integer. | 9817 // Call the Object's constructor with a 32-bit signed integer. |
| (...skipping 28 matching lines...) Expand all Loading... |
| 9836 CHECK(value->IsString()); | 9846 CHECK(value->IsString()); |
| 9837 String::Utf8Value string_value2(value->ToString()); | 9847 String::Utf8Value string_value2(value->ToString()); |
| 9838 CHECK_EQ("tipli", *string_value2); | 9848 CHECK_EQ("tipli", *string_value2); |
| 9839 | 9849 |
| 9840 // Call the Object's constructor with a Boolean. | 9850 // Call the Object's constructor with a Boolean. |
| 9841 value = CompileRun("(function() { var o = new obj(true); return o.a; })()"); | 9851 value = CompileRun("(function() { var o = new obj(true); return o.a; })()"); |
| 9842 CHECK(!try_catch.HasCaught()); | 9852 CHECK(!try_catch.HasCaught()); |
| 9843 CHECK(value->IsBoolean()); | 9853 CHECK(value->IsBoolean()); |
| 9844 CHECK_EQ(true, value->BooleanValue()); | 9854 CHECK_EQ(true, value->BooleanValue()); |
| 9845 | 9855 |
| 9846 Handle<Value> args3[] = { v8::True() }; | 9856 Handle<Value> args3[] = { v8::True(isolate) }; |
| 9847 Local<Value> value_obj3 = instance->CallAsConstructor(1, args3); | 9857 Local<Value> value_obj3 = instance->CallAsConstructor(1, args3); |
| 9848 CHECK(value_obj3->IsObject()); | 9858 CHECK(value_obj3->IsObject()); |
| 9849 Local<Object> object3 = Local<Object>::Cast(value_obj3); | 9859 Local<Object> object3 = Local<Object>::Cast(value_obj3); |
| 9850 value = object3->Get(v8_str("a")); | 9860 value = object3->Get(v8_str("a")); |
| 9851 CHECK(!try_catch.HasCaught()); | 9861 CHECK(!try_catch.HasCaught()); |
| 9852 CHECK(value->IsBoolean()); | 9862 CHECK(value->IsBoolean()); |
| 9853 CHECK_EQ(true, value->BooleanValue()); | 9863 CHECK_EQ(true, value->BooleanValue()); |
| 9854 | 9864 |
| 9855 // Call the Object's constructor with undefined. | 9865 // Call the Object's constructor with undefined. |
| 9856 Handle<Value> args4[] = { v8::Undefined() }; | 9866 Handle<Value> args4[] = { v8::Undefined(isolate) }; |
| 9857 Local<Value> value_obj4 = instance->CallAsConstructor(1, args4); | 9867 Local<Value> value_obj4 = instance->CallAsConstructor(1, args4); |
| 9858 CHECK(value_obj4->IsObject()); | 9868 CHECK(value_obj4->IsObject()); |
| 9859 Local<Object> object4 = Local<Object>::Cast(value_obj4); | 9869 Local<Object> object4 = Local<Object>::Cast(value_obj4); |
| 9860 value = object4->Get(v8_str("a")); | 9870 value = object4->Get(v8_str("a")); |
| 9861 CHECK(!try_catch.HasCaught()); | 9871 CHECK(!try_catch.HasCaught()); |
| 9862 CHECK(value->IsUndefined()); | 9872 CHECK(value->IsUndefined()); |
| 9863 | 9873 |
| 9864 // Call the Object's constructor with null. | 9874 // Call the Object's constructor with null. |
| 9865 Handle<Value> args5[] = { v8::Null() }; | 9875 Handle<Value> args5[] = { v8::Null(isolate) }; |
| 9866 Local<Value> value_obj5 = instance->CallAsConstructor(1, args5); | 9876 Local<Value> value_obj5 = instance->CallAsConstructor(1, args5); |
| 9867 CHECK(value_obj5->IsObject()); | 9877 CHECK(value_obj5->IsObject()); |
| 9868 Local<Object> object5 = Local<Object>::Cast(value_obj5); | 9878 Local<Object> object5 = Local<Object>::Cast(value_obj5); |
| 9869 value = object5->Get(v8_str("a")); | 9879 value = object5->Get(v8_str("a")); |
| 9870 CHECK(!try_catch.HasCaught()); | 9880 CHECK(!try_catch.HasCaught()); |
| 9871 CHECK(value->IsNull()); | 9881 CHECK(value->IsNull()); |
| 9872 } | 9882 } |
| 9873 | 9883 |
| 9874 // Check exception handling when there is no constructor set for the Object. | 9884 // Check exception handling when there is no constructor set for the Object. |
| 9875 { Local<ObjectTemplate> instance_template = ObjectTemplate::New(); | 9885 { Local<ObjectTemplate> instance_template = ObjectTemplate::New(); |
| (...skipping 3849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13725 static bool IndexedSetAccessBlocker(Local<v8::Object> obj, | 13735 static bool IndexedSetAccessBlocker(Local<v8::Object> obj, |
| 13726 uint32_t key, | 13736 uint32_t key, |
| 13727 v8::AccessType type, | 13737 v8::AccessType type, |
| 13728 Local<Value> data) { | 13738 Local<Value> data) { |
| 13729 return type != v8::ACCESS_SET; | 13739 return type != v8::ACCESS_SET; |
| 13730 } | 13740 } |
| 13731 | 13741 |
| 13732 | 13742 |
| 13733 THREADED_TEST(DisableAccessChecksWhileConfiguring) { | 13743 THREADED_TEST(DisableAccessChecksWhileConfiguring) { |
| 13734 LocalContext context; | 13744 LocalContext context; |
| 13735 v8::HandleScope scope(context->GetIsolate()); | 13745 v8::Isolate* isolate = context->GetIsolate(); |
| 13746 v8::HandleScope scope(isolate); |
| 13736 Local<ObjectTemplate> templ = ObjectTemplate::New(); | 13747 Local<ObjectTemplate> templ = ObjectTemplate::New(); |
| 13737 templ->SetAccessCheckCallbacks(NamedSetAccessBlocker, | 13748 templ->SetAccessCheckCallbacks(NamedSetAccessBlocker, |
| 13738 IndexedSetAccessBlocker); | 13749 IndexedSetAccessBlocker); |
| 13739 templ->Set(v8_str("x"), v8::True()); | 13750 templ->Set(v8_str("x"), v8::True(isolate)); |
| 13740 Local<v8::Object> instance = templ->NewInstance(); | 13751 Local<v8::Object> instance = templ->NewInstance(); |
| 13741 context->Global()->Set(v8_str("obj"), instance); | 13752 context->Global()->Set(v8_str("obj"), instance); |
| 13742 Local<Value> value = CompileRun("obj.x"); | 13753 Local<Value> value = CompileRun("obj.x"); |
| 13743 CHECK(value->BooleanValue()); | 13754 CHECK(value->BooleanValue()); |
| 13744 } | 13755 } |
| 13745 | 13756 |
| 13746 | 13757 |
| 13747 static bool NamedGetAccessBlocker(Local<v8::Object> obj, | 13758 static bool NamedGetAccessBlocker(Local<v8::Object> obj, |
| 13748 Local<Value> name, | 13759 Local<Value> name, |
| 13749 v8::AccessType type, | 13760 v8::AccessType type, |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14146 // This tests that we do not allow dictionary load/call inline caches | 14157 // This tests that we do not allow dictionary load/call inline caches |
| 14147 // to use functions that have not yet been compiled. The potential | 14158 // to use functions that have not yet been compiled. The potential |
| 14148 // problem of loading a function that has not yet been compiled can | 14159 // problem of loading a function that has not yet been compiled can |
| 14149 // arise because we share code between contexts via the compilation | 14160 // arise because we share code between contexts via the compilation |
| 14150 // cache. | 14161 // cache. |
| 14151 THREADED_TEST(DictionaryICLoadedFunction) { | 14162 THREADED_TEST(DictionaryICLoadedFunction) { |
| 14152 v8::HandleScope scope(CcTest::isolate()); | 14163 v8::HandleScope scope(CcTest::isolate()); |
| 14153 // Test LoadIC. | 14164 // Test LoadIC. |
| 14154 for (int i = 0; i < 2; i++) { | 14165 for (int i = 0; i < 2; i++) { |
| 14155 LocalContext context; | 14166 LocalContext context; |
| 14156 context->Global()->Set(v8_str("tmp"), v8::True()); | 14167 context->Global()->Set(v8_str("tmp"), v8::True(CcTest::isolate())); |
| 14157 context->Global()->Delete(v8_str("tmp")); | 14168 context->Global()->Delete(v8_str("tmp")); |
| 14158 CompileRun("for (var j = 0; j < 10; j++) new RegExp('');"); | 14169 CompileRun("for (var j = 0; j < 10; j++) new RegExp('');"); |
| 14159 } | 14170 } |
| 14160 // Test CallIC. | 14171 // Test CallIC. |
| 14161 for (int i = 0; i < 2; i++) { | 14172 for (int i = 0; i < 2; i++) { |
| 14162 LocalContext context; | 14173 LocalContext context; |
| 14163 context->Global()->Set(v8_str("tmp"), v8::True()); | 14174 context->Global()->Set(v8_str("tmp"), v8::True(CcTest::isolate())); |
| 14164 context->Global()->Delete(v8_str("tmp")); | 14175 context->Global()->Delete(v8_str("tmp")); |
| 14165 CompileRun("for (var j = 0; j < 10; j++) RegExp('')"); | 14176 CompileRun("for (var j = 0; j < 10; j++) RegExp('')"); |
| 14166 } | 14177 } |
| 14167 } | 14178 } |
| 14168 | 14179 |
| 14169 | 14180 |
| 14170 // Test that cross-context new calls use the context of the callee to | 14181 // Test that cross-context new calls use the context of the callee to |
| 14171 // create the new JavaScript object. | 14182 // create the new JavaScript object. |
| 14172 THREADED_TEST(CrossContextNew) { | 14183 THREADED_TEST(CrossContextNew) { |
| 14173 v8::Isolate* isolate = CcTest::isolate(); | 14184 v8::Isolate* isolate = CcTest::isolate(); |
| (...skipping 5213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19387 global_template->Set(v8_str("proxy"), proxy_object); | 19398 global_template->Set(v8_str("proxy"), proxy_object); |
| 19388 global_template->Set(v8_str("hidden"), object_with_hidden); | 19399 global_template->Set(v8_str("hidden"), object_with_hidden); |
| 19389 global_template->Set(v8_str("phidden"), object_with_protected_hidden); | 19400 global_template->Set(v8_str("phidden"), object_with_protected_hidden); |
| 19390 | 19401 |
| 19391 LocalContext context2(NULL, global_template); | 19402 LocalContext context2(NULL, global_template); |
| 19392 | 19403 |
| 19393 Local<Value> result1 = CompileRun("Object.getPrototypeOf(simple)"); | 19404 Local<Value> result1 = CompileRun("Object.getPrototypeOf(simple)"); |
| 19394 CHECK(result1->Equals(simple_object->GetPrototype())); | 19405 CHECK(result1->Equals(simple_object->GetPrototype())); |
| 19395 | 19406 |
| 19396 Local<Value> result2 = CompileRun("Object.getPrototypeOf(protected)"); | 19407 Local<Value> result2 = CompileRun("Object.getPrototypeOf(protected)"); |
| 19397 CHECK(result2->Equals(Undefined())); | 19408 CHECK(result2->Equals(Undefined(isolate))); |
| 19398 | 19409 |
| 19399 Local<Value> result3 = CompileRun("Object.getPrototypeOf(global)"); | 19410 Local<Value> result3 = CompileRun("Object.getPrototypeOf(global)"); |
| 19400 CHECK(result3->Equals(global_object->GetPrototype())); | 19411 CHECK(result3->Equals(global_object->GetPrototype())); |
| 19401 | 19412 |
| 19402 Local<Value> result4 = CompileRun("Object.getPrototypeOf(proxy)"); | 19413 Local<Value> result4 = CompileRun("Object.getPrototypeOf(proxy)"); |
| 19403 CHECK(result4->Equals(Undefined())); | 19414 CHECK(result4->Equals(Undefined(isolate))); |
| 19404 | 19415 |
| 19405 Local<Value> result5 = CompileRun("Object.getPrototypeOf(hidden)"); | 19416 Local<Value> result5 = CompileRun("Object.getPrototypeOf(hidden)"); |
| 19406 CHECK(result5->Equals( | 19417 CHECK(result5->Equals( |
| 19407 object_with_hidden->GetPrototype()->ToObject()->GetPrototype())); | 19418 object_with_hidden->GetPrototype()->ToObject()->GetPrototype())); |
| 19408 | 19419 |
| 19409 Local<Value> result6 = CompileRun("Object.getPrototypeOf(phidden)"); | 19420 Local<Value> result6 = CompileRun("Object.getPrototypeOf(phidden)"); |
| 19410 CHECK(result6->Equals(Undefined())); | 19421 CHECK(result6->Equals(Undefined(isolate))); |
| 19411 } | 19422 } |
| 19412 | 19423 |
| 19413 | 19424 |
| 19414 THREADED_TEST(Regress125988) { | 19425 THREADED_TEST(Regress125988) { |
| 19415 v8::HandleScope scope(CcTest::isolate()); | 19426 v8::HandleScope scope(CcTest::isolate()); |
| 19416 Handle<FunctionTemplate> intercept = FunctionTemplate::New(); | 19427 Handle<FunctionTemplate> intercept = FunctionTemplate::New(); |
| 19417 AddInterceptor(intercept, EmptyInterceptorGetter, EmptyInterceptorSetter); | 19428 AddInterceptor(intercept, EmptyInterceptorGetter, EmptyInterceptorSetter); |
| 19418 LocalContext env; | 19429 LocalContext env; |
| 19419 env->Global()->Set(v8_str("Intercept"), intercept->GetFunction()); | 19430 env->Global()->Set(v8_str("Intercept"), intercept->GetFunction()); |
| 19420 CompileRun("var a = new Object();" | 19431 CompileRun("var a = new Object();" |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19699 StubCacheHelper(false); | 19710 StubCacheHelper(false); |
| 19700 } | 19711 } |
| 19701 | 19712 |
| 19702 | 19713 |
| 19703 TEST(StaticGetters) { | 19714 TEST(StaticGetters) { |
| 19704 LocalContext context; | 19715 LocalContext context; |
| 19705 i::Factory* factory = CcTest::i_isolate()->factory(); | 19716 i::Factory* factory = CcTest::i_isolate()->factory(); |
| 19706 v8::Isolate* isolate = CcTest::isolate(); | 19717 v8::Isolate* isolate = CcTest::isolate(); |
| 19707 v8::HandleScope scope(isolate); | 19718 v8::HandleScope scope(isolate); |
| 19708 i::Handle<i::Object> undefined_value = factory->undefined_value(); | 19719 i::Handle<i::Object> undefined_value = factory->undefined_value(); |
| 19709 CHECK(*v8::Utils::OpenHandle(*v8::Undefined()) == *undefined_value); | |
| 19710 CHECK(*v8::Utils::OpenHandle(*v8::Undefined(isolate)) == *undefined_value); | 19720 CHECK(*v8::Utils::OpenHandle(*v8::Undefined(isolate)) == *undefined_value); |
| 19711 i::Handle<i::Object> null_value = factory->null_value(); | 19721 i::Handle<i::Object> null_value = factory->null_value(); |
| 19712 CHECK(*v8::Utils::OpenHandle(*v8::Null()) == *null_value); | |
| 19713 CHECK(*v8::Utils::OpenHandle(*v8::Null(isolate)) == *null_value); | 19722 CHECK(*v8::Utils::OpenHandle(*v8::Null(isolate)) == *null_value); |
| 19714 i::Handle<i::Object> true_value = factory->true_value(); | 19723 i::Handle<i::Object> true_value = factory->true_value(); |
| 19715 CHECK(*v8::Utils::OpenHandle(*v8::True()) == *true_value); | |
| 19716 CHECK(*v8::Utils::OpenHandle(*v8::True(isolate)) == *true_value); | 19724 CHECK(*v8::Utils::OpenHandle(*v8::True(isolate)) == *true_value); |
| 19717 i::Handle<i::Object> false_value = factory->false_value(); | 19725 i::Handle<i::Object> false_value = factory->false_value(); |
| 19718 CHECK(*v8::Utils::OpenHandle(*v8::False()) == *false_value); | |
| 19719 CHECK(*v8::Utils::OpenHandle(*v8::False(isolate)) == *false_value); | 19726 CHECK(*v8::Utils::OpenHandle(*v8::False(isolate)) == *false_value); |
| 19720 } | 19727 } |
| 19721 | 19728 |
| 19722 | 19729 |
| 19723 UNINITIALIZED_TEST(IsolateEmbedderData) { | 19730 UNINITIALIZED_TEST(IsolateEmbedderData) { |
| 19724 CcTest::DisableAutomaticDispose(); | 19731 CcTest::DisableAutomaticDispose(); |
| 19725 v8::Isolate* isolate = v8::Isolate::New(); | 19732 v8::Isolate* isolate = v8::Isolate::New(); |
| 19726 isolate->Enter(); | 19733 isolate->Enter(); |
| 19727 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 19734 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 19728 CHECK_EQ(NULL, isolate->GetData()); | 19735 CHECK_EQ(NULL, isolate->GetData()); |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20151 Local<Object> set_object(Local<Object>::Cast(set_value)); | 20158 Local<Object> set_object(Local<Object>::Cast(set_value)); |
| 20152 CHECK_EQ(0, set_object->InternalFieldCount()); | 20159 CHECK_EQ(0, set_object->InternalFieldCount()); |
| 20153 Local<Value> map_value = CompileRun("new Map();"); | 20160 Local<Value> map_value = CompileRun("new Map();"); |
| 20154 Local<Object> map_object(Local<Object>::Cast(map_value)); | 20161 Local<Object> map_object(Local<Object>::Cast(map_value)); |
| 20155 CHECK_EQ(0, map_object->InternalFieldCount()); | 20162 CHECK_EQ(0, map_object->InternalFieldCount()); |
| 20156 } | 20163 } |
| 20157 | 20164 |
| 20158 | 20165 |
| 20159 THREADED_TEST(Regress2746) { | 20166 THREADED_TEST(Regress2746) { |
| 20160 LocalContext context; | 20167 LocalContext context; |
| 20161 v8::HandleScope scope(context->GetIsolate()); | 20168 v8::Isolate* isolate = context->GetIsolate(); |
| 20169 v8::HandleScope scope(isolate); |
| 20162 Local<Object> obj = Object::New(); | 20170 Local<Object> obj = Object::New(); |
| 20163 Local<String> key = String::New("key"); | 20171 Local<String> key = String::New("key"); |
| 20164 obj->SetHiddenValue(key, v8::Undefined()); | 20172 obj->SetHiddenValue(key, v8::Undefined(isolate)); |
| 20165 Local<Value> value = obj->GetHiddenValue(key); | 20173 Local<Value> value = obj->GetHiddenValue(key); |
| 20166 CHECK(!value.IsEmpty()); | 20174 CHECK(!value.IsEmpty()); |
| 20167 CHECK(value->IsUndefined()); | 20175 CHECK(value->IsUndefined()); |
| 20168 } | 20176 } |
| 20169 | 20177 |
| 20170 | 20178 |
| 20171 THREADED_TEST(Regress260106) { | 20179 THREADED_TEST(Regress260106) { |
| 20172 LocalContext context; | 20180 LocalContext context; |
| 20173 v8::HandleScope scope(context->GetIsolate()); | 20181 v8::HandleScope scope(context->GetIsolate()); |
| 20174 Local<FunctionTemplate> templ = FunctionTemplate::New(DummyCallHandler); | 20182 Local<FunctionTemplate> templ = FunctionTemplate::New(DummyCallHandler); |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20578 Local<Object> data2 = v8::Object::New(); | 20586 Local<Object> data2 = v8::Object::New(); |
| 20579 function_new_expected_env = data2; | 20587 function_new_expected_env = data2; |
| 20580 Local<Function> func2 = Function::New(isolate, FunctionNewCallback, data2); | 20588 Local<Function> func2 = Function::New(isolate, FunctionNewCallback, data2); |
| 20581 CHECK(!func2->IsNull()); | 20589 CHECK(!func2->IsNull()); |
| 20582 CHECK_NE(func, func2); | 20590 CHECK_NE(func, func2); |
| 20583 env->Global()->Set(v8_str("func2"), func2); | 20591 env->Global()->Set(v8_str("func2"), func2); |
| 20584 Local<Value> result2 = CompileRun("func2();"); | 20592 Local<Value> result2 = CompileRun("func2();"); |
| 20585 CHECK_EQ(v8::Integer::New(17, isolate), result2); | 20593 CHECK_EQ(v8::Integer::New(17, isolate), result2); |
| 20586 } | 20594 } |
| 20587 | 20595 |
| OLD | NEW |