| 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 12123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12134 | 12134 |
| 12135 env->Exit(); | 12135 env->Exit(); |
| 12136 } | 12136 } |
| 12137 | 12137 |
| 12138 | 12138 |
| 12139 void SetFunctionEntryHookTest::RunTest() { | 12139 void SetFunctionEntryHookTest::RunTest() { |
| 12140 // Work in a new isolate throughout. | 12140 // Work in a new isolate throughout. |
| 12141 v8::Isolate::CreateParams create_params; | 12141 v8::Isolate::CreateParams create_params; |
| 12142 create_params.entry_hook = EntryHook; | 12142 create_params.entry_hook = EntryHook; |
| 12143 create_params.code_event_handler = JitEvent; | 12143 create_params.code_event_handler = JitEvent; |
| 12144 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 12144 v8::Isolate* isolate = v8::Isolate::New(create_params); | 12145 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 12145 | 12146 |
| 12146 { | 12147 { |
| 12147 v8::Isolate::Scope scope(isolate); | 12148 v8::Isolate::Scope scope(isolate); |
| 12148 | 12149 |
| 12149 RunLoopInNewEnv(isolate); | 12150 RunLoopInNewEnv(isolate); |
| 12150 | 12151 |
| 12151 // Check the exepected invocation counts. | 12152 // Check the exepected invocation counts. |
| 12152 CHECK_EQ(2, CountInvocations(NULL, "bar")); | 12153 CHECK_EQ(2, CountInvocations(NULL, "bar")); |
| 12153 CHECK_EQ(200, CountInvocations("bar", "foo")); | 12154 CHECK_EQ(200, CountInvocations("bar", "foo")); |
| 12154 CHECK_EQ(200, CountInvocations(NULL, "foo")); | 12155 CHECK_EQ(200, CountInvocations(NULL, "foo")); |
| 12155 | 12156 |
| 12156 // Verify that we have an entry hook on some specific stubs. | 12157 // Verify that we have an entry hook on some specific stubs. |
| 12157 CHECK_NE(0, CountInvocations(NULL, "CEntryStub")); | 12158 CHECK_NE(0, CountInvocations(NULL, "CEntryStub")); |
| 12158 CHECK_NE(0, CountInvocations(NULL, "JSEntryStub")); | 12159 CHECK_NE(0, CountInvocations(NULL, "JSEntryStub")); |
| 12159 CHECK_NE(0, CountInvocations(NULL, "JSEntryTrampoline")); | 12160 CHECK_NE(0, CountInvocations(NULL, "JSEntryTrampoline")); |
| 12160 } | 12161 } |
| 12161 isolate->Dispose(); | 12162 isolate->Dispose(); |
| 12162 | 12163 |
| 12163 Reset(); | 12164 Reset(); |
| 12164 | 12165 |
| 12165 // Make sure a second isolate is unaffected by the previous entry hook. | 12166 // Make sure a second isolate is unaffected by the previous entry hook. |
| 12166 isolate = v8::Isolate::New(); | 12167 create_params = v8::Isolate::CreateParams(); |
| 12168 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 12169 isolate = v8::Isolate::New(create_params); |
| 12167 { | 12170 { |
| 12168 v8::Isolate::Scope scope(isolate); | 12171 v8::Isolate::Scope scope(isolate); |
| 12169 | 12172 |
| 12170 // Reset the entry count to zero and set the entry hook. | 12173 // Reset the entry count to zero and set the entry hook. |
| 12171 RunLoopInNewEnv(isolate); | 12174 RunLoopInNewEnv(isolate); |
| 12172 | 12175 |
| 12173 // We should record no invocations in this isolate. | 12176 // We should record no invocations in this isolate. |
| 12174 CHECK_EQ(0, static_cast<int>(invocations_.size())); | 12177 CHECK_EQ(0, static_cast<int>(invocations_.size())); |
| 12175 } | 12178 } |
| 12176 | 12179 |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12337 " var sum = 0;" | 12340 " var sum = 0;" |
| 12338 " for (i = 0; i < 10; ++i)" | 12341 " for (i = 0; i < 10; ++i)" |
| 12339 " sum = foo(i);" | 12342 " sum = foo(i);" |
| 12340 " return sum;" | 12343 " return sum;" |
| 12341 "}" | 12344 "}" |
| 12342 "function foo(i) { return i; };" | 12345 "function foo(i) { return i; };" |
| 12343 "bar();"; | 12346 "bar();"; |
| 12344 | 12347 |
| 12345 // Run this test in a new isolate to make sure we don't | 12348 // Run this test in a new isolate to make sure we don't |
| 12346 // have remnants of state from other code. | 12349 // have remnants of state from other code. |
| 12347 v8::Isolate* isolate = v8::Isolate::New(); | 12350 v8::Isolate::CreateParams create_params; |
| 12351 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 12352 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 12348 isolate->Enter(); | 12353 isolate->Enter(); |
| 12349 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 12354 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 12350 i::Heap* heap = i_isolate->heap(); | 12355 i::Heap* heap = i_isolate->heap(); |
| 12351 | 12356 |
| 12352 // Start with a clean slate. | 12357 // Start with a clean slate. |
| 12353 heap->CollectAllAvailableGarbage("TestSetJitCodeEventHandler_Prepare"); | 12358 heap->CollectAllAvailableGarbage("TestSetJitCodeEventHandler_Prepare"); |
| 12354 | 12359 |
| 12355 { | 12360 { |
| 12356 v8::HandleScope scope(isolate); | 12361 v8::HandleScope scope(isolate); |
| 12357 i::HashMap code(MatchPointers); | 12362 i::HashMap code(MatchPointers); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12393 CHECK_LT(0, move_events); | 12398 CHECK_LT(0, move_events); |
| 12394 | 12399 |
| 12395 code_map = NULL; | 12400 code_map = NULL; |
| 12396 jitcode_line_info = NULL; | 12401 jitcode_line_info = NULL; |
| 12397 } | 12402 } |
| 12398 | 12403 |
| 12399 isolate->Exit(); | 12404 isolate->Exit(); |
| 12400 isolate->Dispose(); | 12405 isolate->Dispose(); |
| 12401 | 12406 |
| 12402 // Do this in a new isolate. | 12407 // Do this in a new isolate. |
| 12403 isolate = v8::Isolate::New(); | 12408 isolate = v8::Isolate::New(create_params); |
| 12404 isolate->Enter(); | 12409 isolate->Enter(); |
| 12405 | 12410 |
| 12406 // Verify that we get callbacks for existing code objects when we | 12411 // Verify that we get callbacks for existing code objects when we |
| 12407 // request enumeration of existing code. | 12412 // request enumeration of existing code. |
| 12408 { | 12413 { |
| 12409 v8::HandleScope scope(isolate); | 12414 v8::HandleScope scope(isolate); |
| 12410 LocalContext env(isolate); | 12415 LocalContext env(isolate); |
| 12411 CompileRun(script); | 12416 CompileRun(script); |
| 12412 | 12417 |
| 12413 // Now get code through initial iteration. | 12418 // Now get code through initial iteration. |
| (...skipping 2833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15247 CHECK(string3->IsExternal()); | 15252 CHECK(string3->IsExternal()); |
| 15248 | 15253 |
| 15249 VisitorImpl visitor(resource); | 15254 VisitorImpl visitor(resource); |
| 15250 v8::V8::VisitExternalResources(&visitor); | 15255 v8::V8::VisitExternalResources(&visitor); |
| 15251 visitor.CheckVisitedResources(); | 15256 visitor.CheckVisitedResources(); |
| 15252 } | 15257 } |
| 15253 | 15258 |
| 15254 | 15259 |
| 15255 TEST(ExternalStringCollectedAtTearDown) { | 15260 TEST(ExternalStringCollectedAtTearDown) { |
| 15256 int destroyed = 0; | 15261 int destroyed = 0; |
| 15257 v8::Isolate* isolate = v8::Isolate::New(); | 15262 v8::Isolate::CreateParams create_params; |
| 15263 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 15264 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 15258 { v8::Isolate::Scope isolate_scope(isolate); | 15265 { v8::Isolate::Scope isolate_scope(isolate); |
| 15259 v8::HandleScope handle_scope(isolate); | 15266 v8::HandleScope handle_scope(isolate); |
| 15260 const char* s = "One string to test them all, one string to find them."; | 15267 const char* s = "One string to test them all, one string to find them."; |
| 15261 TestOneByteResource* inscription = | 15268 TestOneByteResource* inscription = |
| 15262 new TestOneByteResource(i::StrDup(s), &destroyed); | 15269 new TestOneByteResource(i::StrDup(s), &destroyed); |
| 15263 v8::Local<v8::String> ring = v8::String::NewExternal(isolate, inscription); | 15270 v8::Local<v8::String> ring = v8::String::NewExternal(isolate, inscription); |
| 15264 // Ring is still alive. Orcs are roaming freely across our lands. | 15271 // Ring is still alive. Orcs are roaming freely across our lands. |
| 15265 CHECK_EQ(0, destroyed); | 15272 CHECK_EQ(0, destroyed); |
| 15266 USE(ring); | 15273 USE(ring); |
| 15267 } | 15274 } |
| 15268 | 15275 |
| 15269 isolate->Dispose(); | 15276 isolate->Dispose(); |
| 15270 // Ring has been destroyed. Free Peoples of Middle-earth Rejoice. | 15277 // Ring has been destroyed. Free Peoples of Middle-earth Rejoice. |
| 15271 CHECK_EQ(1, destroyed); | 15278 CHECK_EQ(1, destroyed); |
| 15272 } | 15279 } |
| 15273 | 15280 |
| 15274 | 15281 |
| 15275 TEST(ExternalInternalizedStringCollectedAtTearDown) { | 15282 TEST(ExternalInternalizedStringCollectedAtTearDown) { |
| 15276 int destroyed = 0; | 15283 int destroyed = 0; |
| 15277 v8::Isolate* isolate = v8::Isolate::New(); | 15284 v8::Isolate::CreateParams create_params; |
| 15285 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 15286 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 15278 { v8::Isolate::Scope isolate_scope(isolate); | 15287 { v8::Isolate::Scope isolate_scope(isolate); |
| 15279 LocalContext env(isolate); | 15288 LocalContext env(isolate); |
| 15280 v8::HandleScope handle_scope(isolate); | 15289 v8::HandleScope handle_scope(isolate); |
| 15281 CompileRun("var ring = 'One string to test them all';"); | 15290 CompileRun("var ring = 'One string to test them all';"); |
| 15282 const char* s = "One string to test them all"; | 15291 const char* s = "One string to test them all"; |
| 15283 TestOneByteResource* inscription = | 15292 TestOneByteResource* inscription = |
| 15284 new TestOneByteResource(i::StrDup(s), &destroyed); | 15293 new TestOneByteResource(i::StrDup(s), &destroyed); |
| 15285 v8::Local<v8::String> ring = CompileRun("ring")->ToString(isolate); | 15294 v8::Local<v8::String> ring = CompileRun("ring")->ToString(isolate); |
| 15286 CHECK(v8::Utils::OpenHandle(*ring)->IsInternalizedString()); | 15295 CHECK(v8::Utils::OpenHandle(*ring)->IsInternalizedString()); |
| 15287 ring->MakeExternal(inscription); | 15296 ring->MakeExternal(inscription); |
| (...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16508 CHECK_EQ(false, global0->HasRealNamedCallbackProperty(v8_str("x"))); | 16517 CHECK_EQ(false, global0->HasRealNamedCallbackProperty(v8_str("x"))); |
| 16509 | 16518 |
| 16510 // Reset the failed access check callback so it does not influence | 16519 // Reset the failed access check callback so it does not influence |
| 16511 // the other tests. | 16520 // the other tests. |
| 16512 v8::V8::SetFailedAccessCheckCallbackFunction(NULL); | 16521 v8::V8::SetFailedAccessCheckCallbackFunction(NULL); |
| 16513 } | 16522 } |
| 16514 | 16523 |
| 16515 | 16524 |
| 16516 TEST(IsolateNewDispose) { | 16525 TEST(IsolateNewDispose) { |
| 16517 v8::Isolate* current_isolate = CcTest::isolate(); | 16526 v8::Isolate* current_isolate = CcTest::isolate(); |
| 16518 v8::Isolate* isolate = v8::Isolate::New(); | 16527 v8::Isolate::CreateParams create_params; |
| 16528 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 16529 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 16519 CHECK(isolate != NULL); | 16530 CHECK(isolate != NULL); |
| 16520 CHECK(current_isolate != isolate); | 16531 CHECK(current_isolate != isolate); |
| 16521 CHECK(current_isolate == CcTest::isolate()); | 16532 CHECK(current_isolate == CcTest::isolate()); |
| 16522 | 16533 |
| 16523 v8::V8::SetFatalErrorHandler(StoringErrorCallback); | 16534 v8::V8::SetFatalErrorHandler(StoringErrorCallback); |
| 16524 last_location = last_message = NULL; | 16535 last_location = last_message = NULL; |
| 16525 isolate->Dispose(); | 16536 isolate->Dispose(); |
| 16526 CHECK(!last_location); | 16537 CHECK(!last_location); |
| 16527 CHECK(!last_message); | 16538 CHECK(!last_message); |
| 16528 } | 16539 } |
| 16529 | 16540 |
| 16530 | 16541 |
| 16531 UNINITIALIZED_TEST(DisposeIsolateWhenInUse) { | 16542 UNINITIALIZED_TEST(DisposeIsolateWhenInUse) { |
| 16532 v8::Isolate* isolate = v8::Isolate::New(); | 16543 v8::Isolate::CreateParams create_params; |
| 16544 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 16545 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 16533 { | 16546 { |
| 16534 v8::Isolate::Scope i_scope(isolate); | 16547 v8::Isolate::Scope i_scope(isolate); |
| 16535 v8::HandleScope scope(isolate); | 16548 v8::HandleScope scope(isolate); |
| 16536 LocalContext context(isolate); | 16549 LocalContext context(isolate); |
| 16537 // Run something in this isolate. | 16550 // Run something in this isolate. |
| 16538 ExpectTrue("true"); | 16551 ExpectTrue("true"); |
| 16539 v8::V8::SetFatalErrorHandler(StoringErrorCallback); | 16552 v8::V8::SetFatalErrorHandler(StoringErrorCallback); |
| 16540 last_location = last_message = NULL; | 16553 last_location = last_message = NULL; |
| 16541 // Still entered, should fail. | 16554 // Still entered, should fail. |
| 16542 isolate->Dispose(); | 16555 isolate->Dispose(); |
| 16543 CHECK(last_location); | 16556 CHECK(last_location); |
| 16544 CHECK(last_message); | 16557 CHECK(last_message); |
| 16545 } | 16558 } |
| 16546 isolate->Dispose(); | 16559 isolate->Dispose(); |
| 16547 } | 16560 } |
| 16548 | 16561 |
| 16549 | 16562 |
| 16550 static void BreakArrayGuarantees(const char* script) { | 16563 static void BreakArrayGuarantees(const char* script) { |
| 16551 v8::Isolate* isolate1 = v8::Isolate::New(); | 16564 v8::Isolate::CreateParams create_params; |
| 16565 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 16566 v8::Isolate* isolate1 = v8::Isolate::New(create_params); |
| 16552 isolate1->Enter(); | 16567 isolate1->Enter(); |
| 16553 v8::Persistent<v8::Context> context1; | 16568 v8::Persistent<v8::Context> context1; |
| 16554 { | 16569 { |
| 16555 v8::HandleScope scope(isolate1); | 16570 v8::HandleScope scope(isolate1); |
| 16556 context1.Reset(isolate1, Context::New(isolate1)); | 16571 context1.Reset(isolate1, Context::New(isolate1)); |
| 16557 } | 16572 } |
| 16558 | 16573 |
| 16559 { | 16574 { |
| 16560 v8::HandleScope scope(isolate1); | 16575 v8::HandleScope scope(isolate1); |
| 16561 v8::Local<v8::Context> context = | 16576 v8::Local<v8::Context> context = |
| (...skipping 28 matching lines...) Expand all Loading... |
| 16590 "Object.defineProperty(Array.prototype, 0, {" | 16605 "Object.defineProperty(Array.prototype, 0, {" |
| 16591 " get: function() { return 3; }});"); | 16606 " get: function() { return 3; }});"); |
| 16592 BreakArrayGuarantees( | 16607 BreakArrayGuarantees( |
| 16593 "Object.defineProperty(Object.prototype, 0, {" | 16608 "Object.defineProperty(Object.prototype, 0, {" |
| 16594 " get: function() { return 3; }});"); | 16609 " get: function() { return 3; }});"); |
| 16595 } | 16610 } |
| 16596 | 16611 |
| 16597 | 16612 |
| 16598 TEST(RunTwoIsolatesOnSingleThread) { | 16613 TEST(RunTwoIsolatesOnSingleThread) { |
| 16599 // Run isolate 1. | 16614 // Run isolate 1. |
| 16600 v8::Isolate* isolate1 = v8::Isolate::New(); | 16615 v8::Isolate::CreateParams create_params; |
| 16616 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 16617 v8::Isolate* isolate1 = v8::Isolate::New(create_params); |
| 16601 isolate1->Enter(); | 16618 isolate1->Enter(); |
| 16602 v8::Persistent<v8::Context> context1; | 16619 v8::Persistent<v8::Context> context1; |
| 16603 { | 16620 { |
| 16604 v8::HandleScope scope(isolate1); | 16621 v8::HandleScope scope(isolate1); |
| 16605 context1.Reset(isolate1, Context::New(isolate1)); | 16622 context1.Reset(isolate1, Context::New(isolate1)); |
| 16606 } | 16623 } |
| 16607 | 16624 |
| 16608 { | 16625 { |
| 16609 v8::HandleScope scope(isolate1); | 16626 v8::HandleScope scope(isolate1); |
| 16610 v8::Local<v8::Context> context = | 16627 v8::Local<v8::Context> context = |
| 16611 v8::Local<v8::Context>::New(isolate1, context1); | 16628 v8::Local<v8::Context>::New(isolate1, context1); |
| 16612 v8::Context::Scope context_scope(context); | 16629 v8::Context::Scope context_scope(context); |
| 16613 // Run something in new isolate. | 16630 // Run something in new isolate. |
| 16614 CompileRun("var foo = 'isolate 1';"); | 16631 CompileRun("var foo = 'isolate 1';"); |
| 16615 ExpectString("function f() { return foo; }; f()", "isolate 1"); | 16632 ExpectString("function f() { return foo; }; f()", "isolate 1"); |
| 16616 } | 16633 } |
| 16617 | 16634 |
| 16618 // Run isolate 2. | 16635 // Run isolate 2. |
| 16619 v8::Isolate* isolate2 = v8::Isolate::New(); | 16636 v8::Isolate* isolate2 = v8::Isolate::New(create_params); |
| 16620 v8::Persistent<v8::Context> context2; | 16637 v8::Persistent<v8::Context> context2; |
| 16621 | 16638 |
| 16622 { | 16639 { |
| 16623 v8::Isolate::Scope iscope(isolate2); | 16640 v8::Isolate::Scope iscope(isolate2); |
| 16624 v8::HandleScope scope(isolate2); | 16641 v8::HandleScope scope(isolate2); |
| 16625 context2.Reset(isolate2, Context::New(isolate2)); | 16642 context2.Reset(isolate2, Context::New(isolate2)); |
| 16626 v8::Local<v8::Context> context = | 16643 v8::Local<v8::Context> context = |
| 16627 v8::Local<v8::Context>::New(isolate2, context2); | 16644 v8::Local<v8::Context>::New(isolate2, context2); |
| 16628 v8::Context::Scope context_scope(context); | 16645 v8::Context::Scope context_scope(context); |
| 16629 | 16646 |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16734 CHECK(value->IsNumber()); | 16751 CHECK(value->IsNumber()); |
| 16735 return static_cast<int>(value->NumberValue()); | 16752 return static_cast<int>(value->NumberValue()); |
| 16736 } | 16753 } |
| 16737 | 16754 |
| 16738 class IsolateThread : public v8::base::Thread { | 16755 class IsolateThread : public v8::base::Thread { |
| 16739 public: | 16756 public: |
| 16740 explicit IsolateThread(int fib_limit) | 16757 explicit IsolateThread(int fib_limit) |
| 16741 : Thread(Options("IsolateThread")), fib_limit_(fib_limit), result_(0) {} | 16758 : Thread(Options("IsolateThread")), fib_limit_(fib_limit), result_(0) {} |
| 16742 | 16759 |
| 16743 void Run() { | 16760 void Run() { |
| 16744 v8::Isolate* isolate = v8::Isolate::New(); | 16761 v8::Isolate::CreateParams create_params; |
| 16762 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 16763 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 16745 result_ = CalcFibonacci(isolate, fib_limit_); | 16764 result_ = CalcFibonacci(isolate, fib_limit_); |
| 16746 isolate->Dispose(); | 16765 isolate->Dispose(); |
| 16747 } | 16766 } |
| 16748 | 16767 |
| 16749 int result() { return result_; } | 16768 int result() { return result_; } |
| 16750 | 16769 |
| 16751 private: | 16770 private: |
| 16752 int fib_limit_; | 16771 int fib_limit_; |
| 16753 int result_; | 16772 int result_; |
| 16754 }; | 16773 }; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 16771 // Compare results. The actual fibonacci numbers for 12 and 21 are taken | 16790 // Compare results. The actual fibonacci numbers for 12 and 21 are taken |
| 16772 // (I'm lazy!) from http://en.wikipedia.org/wiki/Fibonacci_number | 16791 // (I'm lazy!) from http://en.wikipedia.org/wiki/Fibonacci_number |
| 16773 CHECK_EQ(result1, 10946); | 16792 CHECK_EQ(result1, 10946); |
| 16774 CHECK_EQ(result2, 144); | 16793 CHECK_EQ(result2, 144); |
| 16775 CHECK_EQ(result1, thread1.result()); | 16794 CHECK_EQ(result1, thread1.result()); |
| 16776 CHECK_EQ(result2, thread2.result()); | 16795 CHECK_EQ(result2, thread2.result()); |
| 16777 } | 16796 } |
| 16778 | 16797 |
| 16779 | 16798 |
| 16780 TEST(IsolateDifferentContexts) { | 16799 TEST(IsolateDifferentContexts) { |
| 16781 v8::Isolate* isolate = v8::Isolate::New(); | 16800 v8::Isolate::CreateParams create_params; |
| 16801 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 16802 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 16782 Local<v8::Context> context; | 16803 Local<v8::Context> context; |
| 16783 { | 16804 { |
| 16784 v8::Isolate::Scope isolate_scope(isolate); | 16805 v8::Isolate::Scope isolate_scope(isolate); |
| 16785 v8::HandleScope handle_scope(isolate); | 16806 v8::HandleScope handle_scope(isolate); |
| 16786 context = v8::Context::New(isolate); | 16807 context = v8::Context::New(isolate); |
| 16787 v8::Context::Scope context_scope(context); | 16808 v8::Context::Scope context_scope(context); |
| 16788 Local<Value> v = CompileRun("2"); | 16809 Local<Value> v = CompileRun("2"); |
| 16789 CHECK(v->IsNumber()); | 16810 CHECK(v->IsNumber()); |
| 16790 CHECK_EQ(2, static_cast<int>(v->NumberValue())); | 16811 CHECK_EQ(2, static_cast<int>(v->NumberValue())); |
| 16791 } | 16812 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 16811 SetAddHistogramSampleFunction | 16832 SetAddHistogramSampleFunction |
| 16812 }; | 16833 }; |
| 16813 | 16834 |
| 16814 explicit InitDefaultIsolateThread(TestCase testCase) | 16835 explicit InitDefaultIsolateThread(TestCase testCase) |
| 16815 : Thread(Options("InitDefaultIsolateThread")), | 16836 : Thread(Options("InitDefaultIsolateThread")), |
| 16816 testCase_(testCase), | 16837 testCase_(testCase), |
| 16817 result_(false) {} | 16838 result_(false) {} |
| 16818 | 16839 |
| 16819 void Run() { | 16840 void Run() { |
| 16820 v8::Isolate::CreateParams create_params; | 16841 v8::Isolate::CreateParams create_params; |
| 16842 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 16821 switch (testCase_) { | 16843 switch (testCase_) { |
| 16822 case SetResourceConstraints: { | 16844 case SetResourceConstraints: { |
| 16823 create_params.constraints.set_max_semi_space_size(1); | 16845 create_params.constraints.set_max_semi_space_size(1); |
| 16824 create_params.constraints.set_max_old_space_size(4); | 16846 create_params.constraints.set_max_old_space_size(4); |
| 16825 break; | 16847 break; |
| 16826 } | 16848 } |
| 16827 default: | 16849 default: |
| 16828 break; | 16850 break; |
| 16829 } | 16851 } |
| 16830 v8::Isolate* isolate = v8::Isolate::New(create_params); | 16852 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| (...skipping 1426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 18257 CHECK(*v8::Utils::OpenHandle(*v8::Null(isolate)) == *null_value); | 18279 CHECK(*v8::Utils::OpenHandle(*v8::Null(isolate)) == *null_value); |
| 18258 i::Handle<i::Object> true_value = factory->true_value(); | 18280 i::Handle<i::Object> true_value = factory->true_value(); |
| 18259 CHECK(*v8::Utils::OpenHandle(*v8::True(isolate)) == *true_value); | 18281 CHECK(*v8::Utils::OpenHandle(*v8::True(isolate)) == *true_value); |
| 18260 i::Handle<i::Object> false_value = factory->false_value(); | 18282 i::Handle<i::Object> false_value = factory->false_value(); |
| 18261 CHECK(*v8::Utils::OpenHandle(*v8::False(isolate)) == *false_value); | 18283 CHECK(*v8::Utils::OpenHandle(*v8::False(isolate)) == *false_value); |
| 18262 } | 18284 } |
| 18263 | 18285 |
| 18264 | 18286 |
| 18265 UNINITIALIZED_TEST(IsolateEmbedderData) { | 18287 UNINITIALIZED_TEST(IsolateEmbedderData) { |
| 18266 CcTest::DisableAutomaticDispose(); | 18288 CcTest::DisableAutomaticDispose(); |
| 18267 v8::Isolate* isolate = v8::Isolate::New(); | 18289 v8::Isolate::CreateParams create_params; |
| 18290 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
| 18291 v8::Isolate* isolate = v8::Isolate::New(create_params); |
| 18268 isolate->Enter(); | 18292 isolate->Enter(); |
| 18269 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 18293 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 18270 for (uint32_t slot = 0; slot < v8::Isolate::GetNumberOfDataSlots(); ++slot) { | 18294 for (uint32_t slot = 0; slot < v8::Isolate::GetNumberOfDataSlots(); ++slot) { |
| 18271 CHECK(!isolate->GetData(slot)); | 18295 CHECK(!isolate->GetData(slot)); |
| 18272 CHECK(!i_isolate->GetData(slot)); | 18296 CHECK(!i_isolate->GetData(slot)); |
| 18273 } | 18297 } |
| 18274 for (uint32_t slot = 0; slot < v8::Isolate::GetNumberOfDataSlots(); ++slot) { | 18298 for (uint32_t slot = 0; slot < v8::Isolate::GetNumberOfDataSlots(); ++slot) { |
| 18275 void* data = reinterpret_cast<void*>(0xacce55ed + slot); | 18299 void* data = reinterpret_cast<void*>(0xacce55ed + slot); |
| 18276 isolate->SetData(slot, data); | 18300 isolate->SetData(slot, data); |
| 18277 } | 18301 } |
| (...skipping 2694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20972 | 20996 |
| 20973 { | 20997 { |
| 20974 v8::HandleScope handle_scope(isolate); | 20998 v8::HandleScope handle_scope(isolate); |
| 20975 | 20999 |
| 20976 // Should work | 21000 // Should work |
| 20977 v8::Local<v8::Object> obj = v8::Object::New(isolate); | 21001 v8::Local<v8::Object> obj = v8::Object::New(isolate); |
| 20978 | 21002 |
| 20979 USE(obj); | 21003 USE(obj); |
| 20980 } | 21004 } |
| 20981 } | 21005 } |
| OLD | NEW |