| 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 17309 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 17320   v8::Isolate* isolate1 = v8::Isolate::New(); | 17320   v8::Isolate* isolate1 = v8::Isolate::New(); | 
| 17321   isolate1->Enter(); | 17321   isolate1->Enter(); | 
| 17322   v8::Persistent<v8::Context> context1; | 17322   v8::Persistent<v8::Context> context1; | 
| 17323   { | 17323   { | 
| 17324     v8::HandleScope scope(isolate1); | 17324     v8::HandleScope scope(isolate1); | 
| 17325     context1.Reset(isolate1, Context::New(isolate1)); | 17325     context1.Reset(isolate1, Context::New(isolate1)); | 
| 17326   } | 17326   } | 
| 17327 | 17327 | 
| 17328   { | 17328   { | 
| 17329     v8::HandleScope scope(isolate1); | 17329     v8::HandleScope scope(isolate1); | 
| 17330     v8::Context::Scope cscope(isolate1, context1); | 17330     v8::Local<v8::Context> context = | 
|  | 17331         v8::Local<v8::Context>::New(isolate1, context1); | 
|  | 17332     v8::Context::Scope context_scope(context); | 
| 17331     // Run something in new isolate. | 17333     // Run something in new isolate. | 
| 17332     CompileRun("var foo = 'isolate 1';"); | 17334     CompileRun("var foo = 'isolate 1';"); | 
| 17333     ExpectString("function f() { return foo; }; f()", "isolate 1"); | 17335     ExpectString("function f() { return foo; }; f()", "isolate 1"); | 
| 17334   } | 17336   } | 
| 17335 | 17337 | 
| 17336   // Run isolate 2. | 17338   // Run isolate 2. | 
| 17337   v8::Isolate* isolate2 = v8::Isolate::New(); | 17339   v8::Isolate* isolate2 = v8::Isolate::New(); | 
| 17338   v8::Persistent<v8::Context> context2; | 17340   v8::Persistent<v8::Context> context2; | 
| 17339 | 17341 | 
| 17340   { | 17342   { | 
| 17341     v8::Isolate::Scope iscope(isolate2); | 17343     v8::Isolate::Scope iscope(isolate2); | 
| 17342     v8::HandleScope scope(isolate2); | 17344     v8::HandleScope scope(isolate2); | 
| 17343     context2.Reset(isolate2, Context::New(isolate2)); | 17345     context2.Reset(isolate2, Context::New(isolate2)); | 
| 17344     v8::Context::Scope cscope(isolate2, context2); | 17346     v8::Local<v8::Context> context = | 
|  | 17347         v8::Local<v8::Context>::New(isolate2, context2); | 
|  | 17348     v8::Context::Scope context_scope(context); | 
| 17345 | 17349 | 
| 17346     // Run something in new isolate. | 17350     // Run something in new isolate. | 
| 17347     CompileRun("var foo = 'isolate 2';"); | 17351     CompileRun("var foo = 'isolate 2';"); | 
| 17348     ExpectString("function f() { return foo; }; f()", "isolate 2"); | 17352     ExpectString("function f() { return foo; }; f()", "isolate 2"); | 
| 17349   } | 17353   } | 
| 17350 | 17354 | 
| 17351   { | 17355   { | 
| 17352     v8::HandleScope scope(isolate1); | 17356     v8::HandleScope scope(isolate1); | 
| 17353     v8::Context::Scope cscope(isolate1, context1); | 17357     v8::Local<v8::Context> context = | 
|  | 17358         v8::Local<v8::Context>::New(isolate1, context1); | 
|  | 17359     v8::Context::Scope context_scope(context); | 
| 17354     // Now again in isolate 1 | 17360     // Now again in isolate 1 | 
| 17355     ExpectString("function f() { return foo; }; f()", "isolate 1"); | 17361     ExpectString("function f() { return foo; }; f()", "isolate 1"); | 
| 17356   } | 17362   } | 
| 17357 | 17363 | 
| 17358   isolate1->Exit(); | 17364   isolate1->Exit(); | 
| 17359 | 17365 | 
| 17360   // Run some stuff in default isolate. | 17366   // Run some stuff in default isolate. | 
| 17361   v8::Persistent<v8::Context> context_default; | 17367   v8::Persistent<v8::Context> context_default; | 
| 17362   { | 17368   { | 
| 17363     v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 17369     v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 
| 17364     v8::Isolate::Scope iscope(isolate); | 17370     v8::Isolate::Scope iscope(isolate); | 
| 17365     v8::HandleScope scope(isolate); | 17371     v8::HandleScope scope(isolate); | 
| 17366     context_default.Reset(isolate, Context::New(isolate)); | 17372     context_default.Reset(isolate, Context::New(isolate)); | 
| 17367   } | 17373   } | 
| 17368 | 17374 | 
| 17369   { | 17375   { | 
| 17370     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 17376     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 
| 17371     v8::Context::Scope cscope(v8::Isolate::GetCurrent(), context_default); | 17377     v8::Local<v8::Context> context = | 
|  | 17378         v8::Local<v8::Context>::New(v8::Isolate::GetCurrent(), context_default); | 
|  | 17379     v8::Context::Scope context_scope(context); | 
| 17372     // Variables in other isolates should be not available, verify there | 17380     // Variables in other isolates should be not available, verify there | 
| 17373     // is an exception. | 17381     // is an exception. | 
| 17374     ExpectTrue("function f() {" | 17382     ExpectTrue("function f() {" | 
| 17375                "  try {" | 17383                "  try {" | 
| 17376                "    foo;" | 17384                "    foo;" | 
| 17377                "    return false;" | 17385                "    return false;" | 
| 17378                "  } catch(e) {" | 17386                "  } catch(e) {" | 
| 17379                "    return true;" | 17387                "    return true;" | 
| 17380                "  }" | 17388                "  }" | 
| 17381                "};" | 17389                "};" | 
| 17382                "var isDefaultIsolate = true;" | 17390                "var isDefaultIsolate = true;" | 
| 17383                "f()"); | 17391                "f()"); | 
| 17384   } | 17392   } | 
| 17385 | 17393 | 
| 17386   isolate1->Enter(); | 17394   isolate1->Enter(); | 
| 17387 | 17395 | 
| 17388   { | 17396   { | 
| 17389     v8::Isolate::Scope iscope(isolate2); | 17397     v8::Isolate::Scope iscope(isolate2); | 
| 17390     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 17398     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 
| 17391     v8::Context::Scope cscope(isolate2, context2); | 17399     v8::Local<v8::Context> context = | 
|  | 17400         v8::Local<v8::Context>::New(isolate2, context2); | 
|  | 17401     v8::Context::Scope context_scope(context); | 
| 17392     ExpectString("function f() { return foo; }; f()", "isolate 2"); | 17402     ExpectString("function f() { return foo; }; f()", "isolate 2"); | 
| 17393   } | 17403   } | 
| 17394 | 17404 | 
| 17395   { | 17405   { | 
| 17396     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 17406     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 
| 17397     v8::Context::Scope cscope(v8::Isolate::GetCurrent(), context1); | 17407     v8::Local<v8::Context> context = | 
|  | 17408         v8::Local<v8::Context>::New(v8::Isolate::GetCurrent(), context1); | 
|  | 17409     v8::Context::Scope context_scope(context); | 
| 17398     ExpectString("function f() { return foo; }; f()", "isolate 1"); | 17410     ExpectString("function f() { return foo; }; f()", "isolate 1"); | 
| 17399   } | 17411   } | 
| 17400 | 17412 | 
| 17401   { | 17413   { | 
| 17402     v8::Isolate::Scope iscope(isolate2); | 17414     v8::Isolate::Scope iscope(isolate2); | 
| 17403     context2.Dispose(context2->GetIsolate()); | 17415     context2.Dispose(context2->GetIsolate()); | 
| 17404   } | 17416   } | 
| 17405 | 17417 | 
| 17406   context1.Dispose(context1->GetIsolate()); | 17418   context1.Dispose(context1->GetIsolate()); | 
| 17407   isolate1->Exit(); | 17419   isolate1->Exit(); | 
| 17408 | 17420 | 
| 17409   v8::V8::SetFatalErrorHandler(StoringErrorCallback); | 17421   v8::V8::SetFatalErrorHandler(StoringErrorCallback); | 
| 17410   last_location = last_message = NULL; | 17422   last_location = last_message = NULL; | 
| 17411 | 17423 | 
| 17412   isolate1->Dispose(); | 17424   isolate1->Dispose(); | 
| 17413   CHECK_EQ(last_location, NULL); | 17425   CHECK_EQ(last_location, NULL); | 
| 17414   CHECK_EQ(last_message, NULL); | 17426   CHECK_EQ(last_message, NULL); | 
| 17415 | 17427 | 
| 17416   isolate2->Dispose(); | 17428   isolate2->Dispose(); | 
| 17417   CHECK_EQ(last_location, NULL); | 17429   CHECK_EQ(last_location, NULL); | 
| 17418   CHECK_EQ(last_message, NULL); | 17430   CHECK_EQ(last_message, NULL); | 
| 17419 | 17431 | 
| 17420   // Check that default isolate still runs. | 17432   // Check that default isolate still runs. | 
| 17421   { | 17433   { | 
| 17422     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 17434     v8::HandleScope scope(v8::Isolate::GetCurrent()); | 
| 17423     v8::Context::Scope cscope(v8::Isolate::GetCurrent(), context_default); | 17435     v8::Local<v8::Context> context = | 
|  | 17436         v8::Local<v8::Context>::New(v8::Isolate::GetCurrent(), context_default); | 
|  | 17437     v8::Context::Scope context_scope(context); | 
| 17424     ExpectTrue("function f() { return isDefaultIsolate; }; f()"); | 17438     ExpectTrue("function f() { return isDefaultIsolate; }; f()"); | 
| 17425   } | 17439   } | 
| 17426 } | 17440 } | 
| 17427 | 17441 | 
| 17428 static int CalcFibonacci(v8::Isolate* isolate, int limit) { | 17442 static int CalcFibonacci(v8::Isolate* isolate, int limit) { | 
| 17429   v8::Isolate::Scope isolate_scope(isolate); | 17443   v8::Isolate::Scope isolate_scope(isolate); | 
| 17430   v8::HandleScope scope(isolate); | 17444   v8::HandleScope scope(isolate); | 
| 17431   LocalContext context; | 17445   LocalContext context; | 
| 17432   i::ScopedVector<char> code(1024); | 17446   i::ScopedVector<char> code(1024); | 
| 17433   i::OS::SNPrintF(code, "function fib(n) {" | 17447   i::OS::SNPrintF(code, "function fib(n) {" | 
| (...skipping 1894 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 19328   i::Semaphore* sem_; | 19342   i::Semaphore* sem_; | 
| 19329   volatile int sem_value_; | 19343   volatile int sem_value_; | 
| 19330 }; | 19344 }; | 
| 19331 | 19345 | 
| 19332 | 19346 | 
| 19333 THREADED_TEST(SemaphoreInterruption) { | 19347 THREADED_TEST(SemaphoreInterruption) { | 
| 19334   ThreadInterruptTest().RunTest(); | 19348   ThreadInterruptTest().RunTest(); | 
| 19335 } | 19349 } | 
| 19336 | 19350 | 
| 19337 #endif  // WIN32 | 19351 #endif  // WIN32 | 
| OLD | NEW | 
|---|