Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(329)

Side by Side Diff: test/cctest/test-api.cc

Issue 24538002: add isolate parameter to ThrowException (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/cctest/test-accessors.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 2433 matching lines...) Expand 10 before | Expand all | Expand 10 after
2444 2444
2445 env->Global()->Set(v8_str("depth"), v8::Integer::New(0)); 2445 env->Global()->Set(v8_str("depth"), v8::Integer::New(0));
2446 Script::Compile(v8_str("callFunctionRecursively()"))->Run(); 2446 Script::Compile(v8_str("callFunctionRecursively()"))->Run();
2447 } 2447 }
2448 2448
2449 2449
2450 static void ThrowingPropertyHandlerGet( 2450 static void ThrowingPropertyHandlerGet(
2451 Local<String> key, 2451 Local<String> key,
2452 const v8::PropertyCallbackInfo<v8::Value>& info) { 2452 const v8::PropertyCallbackInfo<v8::Value>& info) {
2453 ApiTestFuzzer::Fuzz(); 2453 ApiTestFuzzer::Fuzz();
2454 info.GetReturnValue().Set(v8::ThrowException(key)); 2454 info.GetReturnValue().Set(info.GetIsolate()->ThrowException(key));
2455 } 2455 }
2456 2456
2457 2457
2458 static void ThrowingPropertyHandlerSet( 2458 static void ThrowingPropertyHandlerSet(
2459 Local<String> key, 2459 Local<String> key,
2460 Local<Value>, 2460 Local<Value>,
2461 const v8::PropertyCallbackInfo<v8::Value>& info) { 2461 const v8::PropertyCallbackInfo<v8::Value>& info) {
2462 v8::ThrowException(key); 2462 info.GetIsolate()->ThrowException(key);
2463 info.GetReturnValue().SetUndefined(); // not the same as empty handle 2463 info.GetReturnValue().SetUndefined(); // not the same as empty handle
2464 } 2464 }
2465 2465
2466 2466
2467 THREADED_TEST(CallbackExceptionRegression) { 2467 THREADED_TEST(CallbackExceptionRegression) {
2468 v8::HandleScope scope(CcTest::isolate()); 2468 v8::HandleScope scope(CcTest::isolate());
2469 v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New(); 2469 v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New();
2470 obj->SetNamedPropertyHandler(ThrowingPropertyHandlerGet, 2470 obj->SetNamedPropertyHandler(ThrowingPropertyHandlerGet,
2471 ThrowingPropertyHandlerSet); 2471 ThrowingPropertyHandlerSet);
2472 LocalContext env; 2472 LocalContext env;
(...skipping 1895 matching lines...) Expand 10 before | Expand all | Expand 10 after
4368 CheckUncle(&try_catch); 4368 CheckUncle(&try_catch);
4369 4369
4370 int64_t integer_value = obj->IntegerValue(); 4370 int64_t integer_value = obj->IntegerValue();
4371 CHECK_EQ(0.0, static_cast<double>(integer_value)); 4371 CHECK_EQ(0.0, static_cast<double>(integer_value));
4372 CheckUncle(&try_catch); 4372 CheckUncle(&try_catch);
4373 } 4373 }
4374 4374
4375 4375
4376 void ThrowFromC(const v8::FunctionCallbackInfo<v8::Value>& args) { 4376 void ThrowFromC(const v8::FunctionCallbackInfo<v8::Value>& args) {
4377 ApiTestFuzzer::Fuzz(); 4377 ApiTestFuzzer::Fuzz();
4378 v8::ThrowException(v8_str("konto")); 4378 args.GetIsolate()->ThrowException(v8_str("konto"));
4379 } 4379 }
4380 4380
4381 4381
4382 void CCatcher(const v8::FunctionCallbackInfo<v8::Value>& args) { 4382 void CCatcher(const v8::FunctionCallbackInfo<v8::Value>& args) {
4383 if (args.Length() < 1) { 4383 if (args.Length() < 1) {
4384 args.GetReturnValue().Set(false); 4384 args.GetReturnValue().Set(false);
4385 return; 4385 return;
4386 } 4386 }
4387 v8::HandleScope scope(args.GetIsolate()); 4387 v8::HandleScope scope(args.GetIsolate());
4388 v8::TryCatch try_catch; 4388 v8::TryCatch try_catch;
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
4651 } 4651 }
4652 4652
4653 4653
4654 4654
4655 void CThrowCountDown(const v8::FunctionCallbackInfo<v8::Value>& args) { 4655 void CThrowCountDown(const v8::FunctionCallbackInfo<v8::Value>& args) {
4656 ApiTestFuzzer::Fuzz(); 4656 ApiTestFuzzer::Fuzz();
4657 CHECK_EQ(4, args.Length()); 4657 CHECK_EQ(4, args.Length());
4658 int count = args[0]->Int32Value(); 4658 int count = args[0]->Int32Value();
4659 int cInterval = args[2]->Int32Value(); 4659 int cInterval = args[2]->Int32Value();
4660 if (count == 0) { 4660 if (count == 0) {
4661 v8::ThrowException(v8_str("FromC")); 4661 args.GetIsolate()->ThrowException(v8_str("FromC"));
4662 return; 4662 return;
4663 } else { 4663 } else {
4664 Local<v8::Object> global = 4664 Local<v8::Object> global =
4665 args.GetIsolate()->GetCurrentContext()->Global(); 4665 args.GetIsolate()->GetCurrentContext()->Global();
4666 Local<Value> fun = global->Get(v8_str("JSThrowCountDown")); 4666 Local<Value> fun = global->Get(v8_str("JSThrowCountDown"));
4667 v8::Handle<Value> argv[] = { v8_num(count - 1), 4667 v8::Handle<Value> argv[] = { v8_num(count - 1),
4668 args[1], 4668 args[1],
4669 args[2], 4669 args[2],
4670 args[3] }; 4670 args[3] };
4671 if (count % cInterval == 0) { 4671 if (count % cInterval == 0) {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
4791 4791
4792 // JS[6] C[5] *JS[4] @C[3] JS[2] C[1] JS[0] 4792 // JS[6] C[5] *JS[4] @C[3] JS[2] C[1] JS[0]
4793 v8::Handle<Value> a5[argc] = { v8_num(6), v8_num(4), v8_num(3), v8_num(3) }; 4793 v8::Handle<Value> a5[argc] = { v8_num(6), v8_num(4), v8_num(3), v8_num(3) };
4794 fun->Call(fun, argc, a5); 4794 fun->Call(fun, argc, a5);
4795 } 4795 }
4796 4796
4797 4797
4798 void ThrowValue(const v8::FunctionCallbackInfo<v8::Value>& args) { 4798 void ThrowValue(const v8::FunctionCallbackInfo<v8::Value>& args) {
4799 ApiTestFuzzer::Fuzz(); 4799 ApiTestFuzzer::Fuzz();
4800 CHECK_EQ(1, args.Length()); 4800 CHECK_EQ(1, args.Length());
4801 v8::ThrowException(args[0]); 4801 args.GetIsolate()->ThrowException(args[0]);
4802 } 4802 }
4803 4803
4804 4804
4805 THREADED_TEST(ThrowValues) { 4805 THREADED_TEST(ThrowValues) {
4806 v8::HandleScope scope(CcTest::isolate()); 4806 v8::HandleScope scope(CcTest::isolate());
4807 Local<ObjectTemplate> templ = ObjectTemplate::New(); 4807 Local<ObjectTemplate> templ = ObjectTemplate::New();
4808 templ->Set(v8_str("Throw"), v8::FunctionTemplate::New(ThrowValue)); 4808 templ->Set(v8_str("Throw"), v8::FunctionTemplate::New(ThrowValue));
4809 LocalContext context(0, templ); 4809 LocalContext context(0, templ);
4810 v8::Handle<v8::Array> result = v8::Handle<v8::Array>::Cast(CompileRun( 4810 v8::Handle<v8::Array> result = v8::Handle<v8::Array>::Cast(CompileRun(
4811 "function Run(obj) {" 4811 "function Run(obj) {"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
4889 4889
4890 4890
4891 static void TryCatchNestedHelper(int depth) { 4891 static void TryCatchNestedHelper(int depth) {
4892 if (depth > 0) { 4892 if (depth > 0) {
4893 v8::TryCatch try_catch; 4893 v8::TryCatch try_catch;
4894 try_catch.SetVerbose(true); 4894 try_catch.SetVerbose(true);
4895 TryCatchNestedHelper(depth - 1); 4895 TryCatchNestedHelper(depth - 1);
4896 CHECK(try_catch.HasCaught()); 4896 CHECK(try_catch.HasCaught());
4897 try_catch.ReThrow(); 4897 try_catch.ReThrow();
4898 } else { 4898 } else {
4899 v8::ThrowException(v8_str("back")); 4899 CcTest::isolate()->ThrowException(v8_str("back"));
4900 } 4900 }
4901 } 4901 }
4902 4902
4903 4903
4904 TEST(TryCatchNested) { 4904 TEST(TryCatchNested) {
4905 v8::V8::Initialize(); 4905 v8::V8::Initialize();
4906 LocalContext context; 4906 LocalContext context;
4907 v8::HandleScope scope(context->GetIsolate()); 4907 v8::HandleScope scope(context->GetIsolate());
4908 v8::TryCatch try_catch; 4908 v8::TryCatch try_catch;
4909 TryCatchNestedHelper(5); 4909 TryCatchNestedHelper(5);
(...skipping 6342 matching lines...) Expand 10 before | Expand all | Expand 10 after
11252 " for (var i = 1; i <= 30; i++) {" 11252 " for (var i = 1; i <= 30; i++) {"
11253 " nativeobject.callback();" 11253 " nativeobject.callback();"
11254 " }" 11254 " }"
11255 "}" 11255 "}"
11256 "f();"); 11256 "f();");
11257 } 11257 }
11258 11258
11259 11259
11260 void ThrowingDirectApiCallback( 11260 void ThrowingDirectApiCallback(
11261 const v8::FunctionCallbackInfo<v8::Value>& args) { 11261 const v8::FunctionCallbackInfo<v8::Value>& args) {
11262 v8::ThrowException(v8_str("g")); 11262 args.GetIsolate()->ThrowException(v8_str("g"));
11263 } 11263 }
11264 11264
11265 11265
11266 THREADED_TEST(CallICFastApi_DirectCall_Throw) { 11266 THREADED_TEST(CallICFastApi_DirectCall_Throw) {
11267 LocalContext context; 11267 LocalContext context;
11268 v8::HandleScope scope(context->GetIsolate()); 11268 v8::HandleScope scope(context->GetIsolate());
11269 v8::Handle<v8::ObjectTemplate> nativeobject_templ = v8::ObjectTemplate::New(); 11269 v8::Handle<v8::ObjectTemplate> nativeobject_templ = v8::ObjectTemplate::New();
11270 nativeobject_templ->Set("callback", 11270 nativeobject_templ->Set("callback",
11271 v8::FunctionTemplate::New(ThrowingDirectApiCallback)); 11271 v8::FunctionTemplate::New(ThrowingDirectApiCallback));
11272 v8::Local<v8::Object> nativeobject_obj = nativeobject_templ->NewInstance(); 11272 v8::Local<v8::Object> nativeobject_obj = nativeobject_templ->NewInstance();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
11320 11320
11321 11321
11322 THREADED_PROFILED_TEST(LoadICFastApi_DirectCall_GCMoveStub) { 11322 THREADED_PROFILED_TEST(LoadICFastApi_DirectCall_GCMoveStub) {
11323 LoadICFastApi_DirectCall_GCMoveStub(DirectGetterCallback); 11323 LoadICFastApi_DirectCall_GCMoveStub(DirectGetterCallback);
11324 } 11324 }
11325 11325
11326 11326
11327 void ThrowingDirectGetterCallback( 11327 void ThrowingDirectGetterCallback(
11328 Local<String> name, 11328 Local<String> name,
11329 const v8::PropertyCallbackInfo<v8::Value>& info) { 11329 const v8::PropertyCallbackInfo<v8::Value>& info) {
11330 v8::ThrowException(v8_str("g")); 11330 info.GetIsolate()->ThrowException(v8_str("g"));
11331 } 11331 }
11332 11332
11333 11333
11334 THREADED_TEST(LoadICFastApi_DirectCall_Throw) { 11334 THREADED_TEST(LoadICFastApi_DirectCall_Throw) {
11335 LocalContext context; 11335 LocalContext context;
11336 v8::HandleScope scope(context->GetIsolate()); 11336 v8::HandleScope scope(context->GetIsolate());
11337 v8::Handle<v8::ObjectTemplate> obj = v8::ObjectTemplate::New(); 11337 v8::Handle<v8::ObjectTemplate> obj = v8::ObjectTemplate::New();
11338 obj->SetAccessor(v8_str("p1"), ThrowingDirectGetterCallback); 11338 obj->SetAccessor(v8_str("p1"), ThrowingDirectGetterCallback);
11339 context->Global()->Set(v8_str("o1"), obj->NewInstance()); 11339 context->Global()->Set(v8_str("o1"), obj->NewInstance());
11340 v8::Handle<Value> result = CompileRun( 11340 v8::Handle<Value> result = CompileRun(
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
11931 static int interceptor_ic_exception_get_count = 0; 11931 static int interceptor_ic_exception_get_count = 0;
11932 11932
11933 static void InterceptorICExceptionGetter( 11933 static void InterceptorICExceptionGetter(
11934 Local<String> name, 11934 Local<String> name,
11935 const v8::PropertyCallbackInfo<v8::Value>& info) { 11935 const v8::PropertyCallbackInfo<v8::Value>& info) {
11936 ApiTestFuzzer::Fuzz(); 11936 ApiTestFuzzer::Fuzz();
11937 if (v8_str("x")->Equals(name) && ++interceptor_ic_exception_get_count < 20) { 11937 if (v8_str("x")->Equals(name) && ++interceptor_ic_exception_get_count < 20) {
11938 info.GetReturnValue().Set(call_ic_function3); 11938 info.GetReturnValue().Set(call_ic_function3);
11939 } 11939 }
11940 if (interceptor_ic_exception_get_count == 20) { 11940 if (interceptor_ic_exception_get_count == 20) {
11941 v8::ThrowException(v8_num(42)); 11941 info.GetIsolate()->ThrowException(v8_num(42));
11942 return; 11942 return;
11943 } 11943 }
11944 } 11944 }
11945 11945
11946 11946
11947 // Test interceptor load/call IC where the interceptor throws an 11947 // Test interceptor load/call IC where the interceptor throws an
11948 // exception once in a while. 11948 // exception once in a while.
11949 THREADED_TEST(InterceptorICGetterExceptions) { 11949 THREADED_TEST(InterceptorICGetterExceptions) {
11950 interceptor_ic_exception_get_count = 0; 11950 interceptor_ic_exception_get_count = 0;
11951 v8::HandleScope scope(CcTest::isolate()); 11951 v8::HandleScope scope(CcTest::isolate());
(...skipping 24 matching lines...) Expand all
11976 11976
11977 11977
11978 static int interceptor_ic_exception_set_count = 0; 11978 static int interceptor_ic_exception_set_count = 0;
11979 11979
11980 static void InterceptorICExceptionSetter( 11980 static void InterceptorICExceptionSetter(
11981 Local<String> key, 11981 Local<String> key,
11982 Local<Value> value, 11982 Local<Value> value,
11983 const v8::PropertyCallbackInfo<v8::Value>& info) { 11983 const v8::PropertyCallbackInfo<v8::Value>& info) {
11984 ApiTestFuzzer::Fuzz(); 11984 ApiTestFuzzer::Fuzz();
11985 if (++interceptor_ic_exception_set_count > 20) { 11985 if (++interceptor_ic_exception_set_count > 20) {
11986 v8::ThrowException(v8_num(42)); 11986 info.GetIsolate()->ThrowException(v8_num(42));
11987 } 11987 }
11988 } 11988 }
11989 11989
11990 11990
11991 // Test interceptor store IC where the interceptor throws an exception 11991 // Test interceptor store IC where the interceptor throws an exception
11992 // once in a while. 11992 // once in a while.
11993 THREADED_TEST(InterceptorICSetterExceptions) { 11993 THREADED_TEST(InterceptorICSetterExceptions) {
11994 interceptor_ic_exception_set_count = 0; 11994 interceptor_ic_exception_set_count = 0;
11995 v8::HandleScope scope(CcTest::isolate()); 11995 v8::HandleScope scope(CcTest::isolate());
11996 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New(); 11996 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
12048 env->Global()->Set(v8_str("obj"), 12048 env->Global()->Set(v8_str("obj"),
12049 templ->GetFunction()->NewInstance()); 12049 templ->GetFunction()->NewInstance());
12050 ExpectTrue("obj.x === 42"); 12050 ExpectTrue("obj.x === 42");
12051 ExpectTrue("!obj.propertyIsEnumerable('x')"); 12051 ExpectTrue("!obj.propertyIsEnumerable('x')");
12052 } 12052 }
12053 12053
12054 12054
12055 static void ThrowingGetter(Local<String> name, 12055 static void ThrowingGetter(Local<String> name,
12056 const v8::PropertyCallbackInfo<v8::Value>& info) { 12056 const v8::PropertyCallbackInfo<v8::Value>& info) {
12057 ApiTestFuzzer::Fuzz(); 12057 ApiTestFuzzer::Fuzz();
12058 ThrowException(Handle<Value>()); 12058 info.GetIsolate()->ThrowException(Handle<Value>());
12059 info.GetReturnValue().SetUndefined(); 12059 info.GetReturnValue().SetUndefined();
12060 } 12060 }
12061 12061
12062 12062
12063 THREADED_TEST(VariousGetPropertiesAndThrowingCallbacks) { 12063 THREADED_TEST(VariousGetPropertiesAndThrowingCallbacks) {
12064 LocalContext context; 12064 LocalContext context;
12065 HandleScope scope(context->GetIsolate()); 12065 HandleScope scope(context->GetIsolate());
12066 12066
12067 Local<FunctionTemplate> templ = FunctionTemplate::New(); 12067 Local<FunctionTemplate> templ = FunctionTemplate::New();
12068 Local<ObjectTemplate> instance_templ = templ->InstanceTemplate(); 12068 Local<ObjectTemplate> instance_templ = templ->InstanceTemplate();
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
12133 TryCatch try_catch; 12133 TryCatch try_catch;
12134 } 12134 }
12135 12135
12136 12136
12137 static void ThrowFromJS(Handle<Message> message, Handle<Value> data) { 12137 static void ThrowFromJS(Handle<Message> message, Handle<Value> data) {
12138 if (--call_depth) CompileRun("throw 'ThrowInJS';"); 12138 if (--call_depth) CompileRun("throw 'ThrowInJS';");
12139 } 12139 }
12140 12140
12141 12141
12142 static void ThrowViaApi(Handle<Message> message, Handle<Value> data) { 12142 static void ThrowViaApi(Handle<Message> message, Handle<Value> data) {
12143 if (--call_depth) ThrowException(v8_str("ThrowViaApi")); 12143 if (--call_depth) CcTest::isolate()->ThrowException(v8_str("ThrowViaApi"));
12144 } 12144 }
12145 12145
12146 12146
12147 static void WebKitLike(Handle<Message> message, Handle<Value> data) { 12147 static void WebKitLike(Handle<Message> message, Handle<Value> data) {
12148 Handle<String> errorMessageString = message->Get(); 12148 Handle<String> errorMessageString = message->Get();
12149 CHECK(!errorMessageString.IsEmpty()); 12149 CHECK(!errorMessageString.IsEmpty());
12150 message->GetStackTrace(); 12150 message->GetStackTrace();
12151 message->GetScriptResourceName(); 12151 message->GetScriptResourceName();
12152 } 12152 }
12153 12153
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
12492 v8::Isolate::Scope scope(CcTest::isolate()); 12492 v8::Isolate::Scope scope(CcTest::isolate());
12493 if (kLogThreading) 12493 if (kLogThreading)
12494 printf("Start test %d\n", test_number_); 12494 printf("Start test %d\n", test_number_);
12495 CallTestNumber(test_number_); 12495 CallTestNumber(test_number_);
12496 if (kLogThreading) 12496 if (kLogThreading)
12497 printf("End test %d\n", test_number_); 12497 printf("End test %d\n", test_number_);
12498 } 12498 }
12499 12499
12500 12500
12501 static void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) { 12501 static void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) {
12502 CHECK(v8::Locker::IsLocked(CcTest::isolate())); 12502 CHECK(v8::Locker::IsLocked(args.GetIsolate()));
12503 ApiTestFuzzer::Fuzz(); 12503 ApiTestFuzzer::Fuzz();
12504 v8::Unlocker unlocker(CcTest::isolate()); 12504 v8::Unlocker unlocker(args.GetIsolate());
12505 const char* code = "throw 7;"; 12505 const char* code = "throw 7;";
12506 { 12506 {
12507 v8::Locker nested_locker(CcTest::isolate()); 12507 v8::Locker nested_locker(args.GetIsolate());
12508 v8::HandleScope scope(args.GetIsolate()); 12508 v8::HandleScope scope(args.GetIsolate());
12509 v8::Handle<Value> exception; 12509 v8::Handle<Value> exception;
12510 { v8::TryCatch try_catch; 12510 { v8::TryCatch try_catch;
12511 v8::Handle<Value> value = CompileRun(code); 12511 v8::Handle<Value> value = CompileRun(code);
12512 CHECK(value.IsEmpty()); 12512 CHECK(value.IsEmpty());
12513 CHECK(try_catch.HasCaught()); 12513 CHECK(try_catch.HasCaught());
12514 // Make sure to wrap the exception in a new handle because 12514 // Make sure to wrap the exception in a new handle because
12515 // the handle returned from the TryCatch is destroyed 12515 // the handle returned from the TryCatch is destroyed
12516 // when the TryCatch is destroyed. 12516 // when the TryCatch is destroyed.
12517 exception = Local<Value>::New(try_catch.Exception()); 12517 exception = Local<Value>::New(try_catch.Exception());
12518 } 12518 }
12519 v8::ThrowException(exception); 12519 args.GetIsolate()->ThrowException(exception);
12520 } 12520 }
12521 } 12521 }
12522 12522
12523 12523
12524 static void ThrowInJSNoCatch(const v8::FunctionCallbackInfo<v8::Value>& args) { 12524 static void ThrowInJSNoCatch(const v8::FunctionCallbackInfo<v8::Value>& args) {
12525 CHECK(v8::Locker::IsLocked(CcTest::isolate())); 12525 CHECK(v8::Locker::IsLocked(CcTest::isolate()));
12526 ApiTestFuzzer::Fuzz(); 12526 ApiTestFuzzer::Fuzz();
12527 v8::Unlocker unlocker(CcTest::isolate()); 12527 v8::Unlocker unlocker(CcTest::isolate());
12528 const char* code = "throw 7;"; 12528 const char* code = "throw 7;";
12529 { 12529 {
(...skipping 7804 matching lines...) Expand 10 before | Expand all | Expand 10 after
20334 bool access_check_fail_thrown = false; 20334 bool access_check_fail_thrown = false;
20335 bool catch_callback_called = false; 20335 bool catch_callback_called = false;
20336 20336
20337 20337
20338 // Failed access check callback that performs a GC on each invocation. 20338 // Failed access check callback that performs a GC on each invocation.
20339 void FailedAccessCheckThrows(Local<v8::Object> target, 20339 void FailedAccessCheckThrows(Local<v8::Object> target,
20340 v8::AccessType type, 20340 v8::AccessType type,
20341 Local<v8::Value> data) { 20341 Local<v8::Value> data) {
20342 access_check_fail_thrown = true; 20342 access_check_fail_thrown = true;
20343 i::PrintF("Access check failed. Error thrown.\n"); 20343 i::PrintF("Access check failed. Error thrown.\n");
20344 v8::ThrowException(v8::Exception::Error(v8_str("cross context"))); 20344 CcTest::isolate()->ThrowException(
20345 v8::Exception::Error(v8_str("cross context")));
20345 } 20346 }
20346 20347
20347 20348
20348 void CatcherCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { 20349 void CatcherCallback(const v8::FunctionCallbackInfo<v8::Value>& args) {
20349 for (int i = 0; i < args.Length(); i++) { 20350 for (int i = 0; i < args.Length(); i++) {
20350 i::PrintF("%s\n", *String::Utf8Value(args[i])); 20351 i::PrintF("%s\n", *String::Utf8Value(args[i]));
20351 } 20352 }
20352 catch_callback_called = true; 20353 catch_callback_called = true;
20353 } 20354 }
20354 20355
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
20577 Local<Object> data2 = v8::Object::New(); 20578 Local<Object> data2 = v8::Object::New();
20578 function_new_expected_env = data2; 20579 function_new_expected_env = data2;
20579 Local<Function> func2 = Function::New(isolate, FunctionNewCallback, data2); 20580 Local<Function> func2 = Function::New(isolate, FunctionNewCallback, data2);
20580 CHECK(!func2->IsNull()); 20581 CHECK(!func2->IsNull());
20581 CHECK_NE(func, func2); 20582 CHECK_NE(func, func2);
20582 env->Global()->Set(v8_str("func2"), func2); 20583 env->Global()->Set(v8_str("func2"), func2);
20583 Local<Value> result2 = CompileRun("func2();"); 20584 Local<Value> result2 = CompileRun("func2();");
20584 CHECK_EQ(v8::Integer::New(17, isolate), result2); 20585 CHECK_EQ(v8::Integer::New(17, isolate), result2);
20585 } 20586 }
20586 20587
OLDNEW
« no previous file with comments | « test/cctest/test-accessors.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698