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 4337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4348 | 4348 |
4349 static void IndexedGetter(uint32_t index, | 4349 static void IndexedGetter(uint32_t index, |
4350 const v8::PropertyCallbackInfo<v8::Value>& info) { | 4350 const v8::PropertyCallbackInfo<v8::Value>& info) { |
4351 info.GetReturnValue().Set(static_cast<double>(index + 1)); | 4351 info.GetReturnValue().Set(static_cast<double>(index + 1)); |
4352 } | 4352 } |
4353 | 4353 |
4354 | 4354 |
4355 TEST(InterceptorPropertyMirror) { | 4355 TEST(InterceptorPropertyMirror) { |
4356 // Create a V8 environment with debug access. | 4356 // Create a V8 environment with debug access. |
4357 DebugLocalContext env; | 4357 DebugLocalContext env; |
4358 v8::HandleScope scope(env->GetIsolate()); | 4358 v8::Isolate* isolate = env->GetIsolate(); |
| 4359 v8::HandleScope scope(isolate); |
4359 env.ExposeDebug(); | 4360 env.ExposeDebug(); |
4360 | 4361 |
4361 // Create object with named interceptor. | 4362 // Create object with named interceptor. |
4362 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); | 4363 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(isolate); |
4363 named->SetNamedPropertyHandler(NamedGetter, NULL, NULL, NULL, NamedEnum); | 4364 named->SetNamedPropertyHandler(NamedGetter, NULL, NULL, NULL, NamedEnum); |
4364 env->Global()->Set( | 4365 env->Global()->Set( |
4365 v8::String::NewFromUtf8(env->GetIsolate(), "intercepted_named"), | 4366 v8::String::NewFromUtf8(isolate, "intercepted_named"), |
4366 named->NewInstance()); | 4367 named->NewInstance()); |
4367 | 4368 |
4368 // Create object with indexed interceptor. | 4369 // Create object with indexed interceptor. |
4369 v8::Handle<v8::ObjectTemplate> indexed = v8::ObjectTemplate::New(); | 4370 v8::Handle<v8::ObjectTemplate> indexed = v8::ObjectTemplate::New(isolate); |
4370 indexed->SetIndexedPropertyHandler(IndexedGetter, | 4371 indexed->SetIndexedPropertyHandler(IndexedGetter, |
4371 NULL, | 4372 NULL, |
4372 NULL, | 4373 NULL, |
4373 NULL, | 4374 NULL, |
4374 IndexedEnum); | 4375 IndexedEnum); |
4375 env->Global()->Set( | 4376 env->Global()->Set( |
4376 v8::String::NewFromUtf8(env->GetIsolate(), "intercepted_indexed"), | 4377 v8::String::NewFromUtf8(isolate, "intercepted_indexed"), |
4377 indexed->NewInstance()); | 4378 indexed->NewInstance()); |
4378 | 4379 |
4379 // Create object with both named and indexed interceptor. | 4380 // Create object with both named and indexed interceptor. |
4380 v8::Handle<v8::ObjectTemplate> both = v8::ObjectTemplate::New(); | 4381 v8::Handle<v8::ObjectTemplate> both = v8::ObjectTemplate::New(isolate); |
4381 both->SetNamedPropertyHandler(NamedGetter, NULL, NULL, NULL, NamedEnum); | 4382 both->SetNamedPropertyHandler(NamedGetter, NULL, NULL, NULL, NamedEnum); |
4382 both->SetIndexedPropertyHandler(IndexedGetter, NULL, NULL, NULL, IndexedEnum); | 4383 both->SetIndexedPropertyHandler(IndexedGetter, NULL, NULL, NULL, IndexedEnum); |
4383 env->Global()->Set( | 4384 env->Global()->Set( |
4384 v8::String::NewFromUtf8(env->GetIsolate(), "intercepted_both"), | 4385 v8::String::NewFromUtf8(isolate, "intercepted_both"), |
4385 both->NewInstance()); | 4386 both->NewInstance()); |
4386 | 4387 |
4387 // Get mirrors for the three objects with interceptor. | 4388 // Get mirrors for the three objects with interceptor. |
4388 CompileRun( | 4389 CompileRun( |
4389 "var named_mirror = debug.MakeMirror(intercepted_named);" | 4390 "var named_mirror = debug.MakeMirror(intercepted_named);" |
4390 "var indexed_mirror = debug.MakeMirror(intercepted_indexed);" | 4391 "var indexed_mirror = debug.MakeMirror(intercepted_indexed);" |
4391 "var both_mirror = debug.MakeMirror(intercepted_both)"); | 4392 "var both_mirror = debug.MakeMirror(intercepted_both)"); |
4392 CHECK(CompileRun( | 4393 CHECK(CompileRun( |
4393 "named_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4394 "named_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
4394 CHECK(CompileRun( | 4395 CHECK(CompileRun( |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4590 static void ProtperyXNativeGetter( | 4591 static void ProtperyXNativeGetter( |
4591 v8::Local<v8::String> property, | 4592 v8::Local<v8::String> property, |
4592 const v8::PropertyCallbackInfo<v8::Value>& info) { | 4593 const v8::PropertyCallbackInfo<v8::Value>& info) { |
4593 info.GetReturnValue().Set(10); | 4594 info.GetReturnValue().Set(10); |
4594 } | 4595 } |
4595 | 4596 |
4596 | 4597 |
4597 TEST(NativeGetterPropertyMirror) { | 4598 TEST(NativeGetterPropertyMirror) { |
4598 // Create a V8 environment with debug access. | 4599 // Create a V8 environment with debug access. |
4599 DebugLocalContext env; | 4600 DebugLocalContext env; |
4600 v8::HandleScope scope(env->GetIsolate()); | 4601 v8::Isolate* isolate = env->GetIsolate(); |
| 4602 v8::HandleScope scope(isolate); |
4601 env.ExposeDebug(); | 4603 env.ExposeDebug(); |
4602 | 4604 |
4603 v8::Handle<v8::String> name = v8::String::NewFromUtf8(env->GetIsolate(), "x"); | 4605 v8::Handle<v8::String> name = v8::String::NewFromUtf8(isolate, "x"); |
4604 // Create object with named accessor. | 4606 // Create object with named accessor. |
4605 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); | 4607 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(isolate); |
4606 named->SetAccessor(name, &ProtperyXNativeGetter, NULL, | 4608 named->SetAccessor(name, &ProtperyXNativeGetter, NULL, |
4607 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); | 4609 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); |
4608 | 4610 |
4609 // Create object with named property getter. | 4611 // Create object with named property getter. |
4610 env->Global()->Set(v8::String::NewFromUtf8(env->GetIsolate(), "instance"), | 4612 env->Global()->Set(v8::String::NewFromUtf8(isolate, "instance"), |
4611 named->NewInstance()); | 4613 named->NewInstance()); |
4612 CHECK_EQ(10, CompileRun("instance.x")->Int32Value()); | 4614 CHECK_EQ(10, CompileRun("instance.x")->Int32Value()); |
4613 | 4615 |
4614 // Get mirror for the object with property getter. | 4616 // Get mirror for the object with property getter. |
4615 CompileRun("var instance_mirror = debug.MakeMirror(instance);"); | 4617 CompileRun("var instance_mirror = debug.MakeMirror(instance);"); |
4616 CHECK(CompileRun( | 4618 CHECK(CompileRun( |
4617 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4619 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
4618 | 4620 |
4619 CompileRun("var named_names = instance_mirror.propertyNames();"); | 4621 CompileRun("var named_names = instance_mirror.propertyNames();"); |
4620 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); | 4622 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); |
4621 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); | 4623 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); |
4622 CHECK(CompileRun( | 4624 CHECK(CompileRun( |
4623 "instance_mirror.property('x').value().isNumber()")->BooleanValue()); | 4625 "instance_mirror.property('x').value().isNumber()")->BooleanValue()); |
4624 CHECK(CompileRun( | 4626 CHECK(CompileRun( |
4625 "instance_mirror.property('x').value().value() == 10")->BooleanValue()); | 4627 "instance_mirror.property('x').value().value() == 10")->BooleanValue()); |
4626 } | 4628 } |
4627 | 4629 |
4628 | 4630 |
4629 static void ProtperyXNativeGetterThrowingError( | 4631 static void ProtperyXNativeGetterThrowingError( |
4630 v8::Local<v8::String> property, | 4632 v8::Local<v8::String> property, |
4631 const v8::PropertyCallbackInfo<v8::Value>& info) { | 4633 const v8::PropertyCallbackInfo<v8::Value>& info) { |
4632 CompileRun("throw new Error('Error message');"); | 4634 CompileRun("throw new Error('Error message');"); |
4633 } | 4635 } |
4634 | 4636 |
4635 | 4637 |
4636 TEST(NativeGetterThrowingErrorPropertyMirror) { | 4638 TEST(NativeGetterThrowingErrorPropertyMirror) { |
4637 // Create a V8 environment with debug access. | 4639 // Create a V8 environment with debug access. |
4638 DebugLocalContext env; | 4640 DebugLocalContext env; |
4639 v8::HandleScope scope(env->GetIsolate()); | 4641 v8::Isolate* isolate = env->GetIsolate(); |
| 4642 v8::HandleScope scope(isolate); |
4640 env.ExposeDebug(); | 4643 env.ExposeDebug(); |
4641 | 4644 |
4642 v8::Handle<v8::String> name = v8::String::NewFromUtf8(env->GetIsolate(), "x"); | 4645 v8::Handle<v8::String> name = v8::String::NewFromUtf8(isolate, "x"); |
4643 // Create object with named accessor. | 4646 // Create object with named accessor. |
4644 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); | 4647 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(isolate); |
4645 named->SetAccessor(name, &ProtperyXNativeGetterThrowingError, NULL, | 4648 named->SetAccessor(name, &ProtperyXNativeGetterThrowingError, NULL, |
4646 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); | 4649 v8::Handle<v8::Value>(), v8::DEFAULT, v8::None); |
4647 | 4650 |
4648 // Create object with named property getter. | 4651 // Create object with named property getter. |
4649 env->Global()->Set(v8::String::NewFromUtf8(env->GetIsolate(), "instance"), | 4652 env->Global()->Set(v8::String::NewFromUtf8(isolate, "instance"), |
4650 named->NewInstance()); | 4653 named->NewInstance()); |
4651 | 4654 |
4652 // Get mirror for the object with property getter. | 4655 // Get mirror for the object with property getter. |
4653 CompileRun("var instance_mirror = debug.MakeMirror(instance);"); | 4656 CompileRun("var instance_mirror = debug.MakeMirror(instance);"); |
4654 CHECK(CompileRun( | 4657 CHECK(CompileRun( |
4655 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); | 4658 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue()); |
4656 CompileRun("named_names = instance_mirror.propertyNames();"); | 4659 CompileRun("named_names = instance_mirror.propertyNames();"); |
4657 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); | 4660 CHECK_EQ(1, CompileRun("named_names.length")->Int32Value()); |
4658 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); | 4661 CHECK(CompileRun("named_names[0] == 'x'")->BooleanValue()); |
4659 CHECK(CompileRun( | 4662 CHECK(CompileRun( |
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5209 " while ( flag == true ) {\n" | 5212 " while ( flag == true ) {\n" |
5210 " if ( x == 1 ) {\n" | 5213 " if ( x == 1 ) {\n" |
5211 " ThreadedAtBarrier1();\n" | 5214 " ThreadedAtBarrier1();\n" |
5212 " }\n" | 5215 " }\n" |
5213 " x = x + 1;\n" | 5216 " x = x + 1;\n" |
5214 " }\n" | 5217 " }\n" |
5215 "}\n" | 5218 "}\n" |
5216 "\n" | 5219 "\n" |
5217 "foo();\n"; | 5220 "foo();\n"; |
5218 | 5221 |
5219 v8::Isolate::Scope isolate_scope(CcTest::isolate()); | 5222 v8::Isolate* isolate = CcTest::isolate(); |
| 5223 v8::Isolate::Scope isolate_scope(isolate); |
5220 DebugLocalContext env; | 5224 DebugLocalContext env; |
5221 v8::HandleScope scope(env->GetIsolate()); | 5225 v8::HandleScope scope(env->GetIsolate()); |
5222 v8::Debug::SetMessageHandler2(&ThreadedMessageHandler); | 5226 v8::Debug::SetMessageHandler2(&ThreadedMessageHandler); |
5223 v8::Handle<v8::ObjectTemplate> global_template = v8::ObjectTemplate::New(); | 5227 v8::Handle<v8::ObjectTemplate> global_template = |
| 5228 v8::ObjectTemplate::New(env->GetIsolate()); |
5224 global_template->Set( | 5229 global_template->Set( |
5225 v8::String::NewFromUtf8(env->GetIsolate(), "ThreadedAtBarrier1"), | 5230 v8::String::NewFromUtf8(env->GetIsolate(), "ThreadedAtBarrier1"), |
5226 v8::FunctionTemplate::New(CcTest::isolate(), ThreadedAtBarrier1)); | 5231 v8::FunctionTemplate::New(isolate, ThreadedAtBarrier1)); |
5227 v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate(), | 5232 v8::Handle<v8::Context> context = v8::Context::New(isolate, |
5228 NULL, | 5233 NULL, |
5229 global_template); | 5234 global_template); |
5230 v8::Context::Scope context_scope(context); | 5235 v8::Context::Scope context_scope(context); |
5231 | 5236 |
5232 CompileRun(source); | 5237 CompileRun(source); |
5233 } | 5238 } |
5234 | 5239 |
5235 | 5240 |
5236 void DebuggerThread::Run() { | 5241 void DebuggerThread::Run() { |
5237 const int kBufSize = 1000; | 5242 const int kBufSize = 1000; |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5573 static void CheckClosure(const v8::FunctionCallbackInfo<v8::Value>& args) { | 5578 static void CheckClosure(const v8::FunctionCallbackInfo<v8::Value>& args) { |
5574 CHECK(v8::Debug::Call(debugger_call_with_closure)->IsNumber()); | 5579 CHECK(v8::Debug::Call(debugger_call_with_closure)->IsNumber()); |
5575 CHECK_EQ(3, v8::Debug::Call(debugger_call_with_closure)->Int32Value()); | 5580 CHECK_EQ(3, v8::Debug::Call(debugger_call_with_closure)->Int32Value()); |
5576 } | 5581 } |
5577 | 5582 |
5578 | 5583 |
5579 // Test functions called through the debugger. | 5584 // Test functions called through the debugger. |
5580 TEST(CallFunctionInDebugger) { | 5585 TEST(CallFunctionInDebugger) { |
5581 // Create and enter a context with the functions CheckFrameCount, | 5586 // Create and enter a context with the functions CheckFrameCount, |
5582 // CheckSourceLine and CheckDataParameter installed. | 5587 // CheckSourceLine and CheckDataParameter installed. |
5583 v8::HandleScope scope(CcTest::isolate()); | 5588 v8::Isolate* isolate = CcTest::isolate(); |
5584 v8::Handle<v8::ObjectTemplate> global_template = v8::ObjectTemplate::New(); | 5589 v8::HandleScope scope(isolate); |
| 5590 v8::Handle<v8::ObjectTemplate> global_template = |
| 5591 v8::ObjectTemplate::New(isolate); |
5585 global_template->Set( | 5592 global_template->Set( |
5586 v8::String::NewFromUtf8(CcTest::isolate(), "CheckFrameCount"), | 5593 v8::String::NewFromUtf8(isolate, "CheckFrameCount"), |
5587 v8::FunctionTemplate::New(CcTest::isolate(), CheckFrameCount)); | 5594 v8::FunctionTemplate::New(isolate, CheckFrameCount)); |
5588 global_template->Set( | 5595 global_template->Set( |
5589 v8::String::NewFromUtf8(CcTest::isolate(), "CheckSourceLine"), | 5596 v8::String::NewFromUtf8(isolate, "CheckSourceLine"), |
5590 v8::FunctionTemplate::New(CcTest::isolate(), CheckSourceLine)); | 5597 v8::FunctionTemplate::New(isolate, CheckSourceLine)); |
5591 global_template->Set( | 5598 global_template->Set( |
5592 v8::String::NewFromUtf8(CcTest::isolate(), "CheckDataParameter"), | 5599 v8::String::NewFromUtf8(isolate, "CheckDataParameter"), |
5593 v8::FunctionTemplate::New(CcTest::isolate(), CheckDataParameter)); | 5600 v8::FunctionTemplate::New(isolate, CheckDataParameter)); |
5594 global_template->Set( | 5601 global_template->Set( |
5595 v8::String::NewFromUtf8(CcTest::isolate(), "CheckClosure"), | 5602 v8::String::NewFromUtf8(isolate, "CheckClosure"), |
5596 v8::FunctionTemplate::New(CcTest::isolate(), CheckClosure)); | 5603 v8::FunctionTemplate::New(isolate, CheckClosure)); |
5597 v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate(), | 5604 v8::Handle<v8::Context> context = v8::Context::New(isolate, |
5598 NULL, | 5605 NULL, |
5599 global_template); | 5606 global_template); |
5600 v8::Context::Scope context_scope(context); | 5607 v8::Context::Scope context_scope(context); |
5601 | 5608 |
5602 // Compile a function for checking the number of JavaScript frames. | 5609 // Compile a function for checking the number of JavaScript frames. |
5603 v8::Script::Compile( | 5610 v8::Script::Compile( |
5604 v8::String::NewFromUtf8(CcTest::isolate(), frame_count_source))->Run(); | 5611 v8::String::NewFromUtf8(isolate, frame_count_source))->Run(); |
5605 frame_count = v8::Local<v8::Function>::Cast(context->Global()->Get( | 5612 frame_count = v8::Local<v8::Function>::Cast(context->Global()->Get( |
5606 v8::String::NewFromUtf8(CcTest::isolate(), "frame_count"))); | 5613 v8::String::NewFromUtf8(isolate, "frame_count"))); |
5607 | 5614 |
5608 // Compile a function for returning the source line for the top frame. | 5615 // Compile a function for returning the source line for the top frame. |
5609 v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), | 5616 v8::Script::Compile(v8::String::NewFromUtf8(isolate, |
5610 frame_source_line_source))->Run(); | 5617 frame_source_line_source))->Run(); |
5611 frame_source_line = v8::Local<v8::Function>::Cast(context->Global()->Get( | 5618 frame_source_line = v8::Local<v8::Function>::Cast(context->Global()->Get( |
5612 v8::String::NewFromUtf8(CcTest::isolate(), "frame_source_line"))); | 5619 v8::String::NewFromUtf8(isolate, "frame_source_line"))); |
5613 | 5620 |
5614 // Compile a function returning the data parameter. | 5621 // Compile a function returning the data parameter. |
5615 v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), | 5622 v8::Script::Compile(v8::String::NewFromUtf8(isolate, |
5616 debugger_call_with_data_source)) | 5623 debugger_call_with_data_source)) |
5617 ->Run(); | 5624 ->Run(); |
5618 debugger_call_with_data = v8::Local<v8::Function>::Cast( | 5625 debugger_call_with_data = v8::Local<v8::Function>::Cast( |
5619 context->Global()->Get(v8::String::NewFromUtf8( | 5626 context->Global()->Get(v8::String::NewFromUtf8( |
5620 CcTest::isolate(), "debugger_call_with_data"))); | 5627 isolate, "debugger_call_with_data"))); |
5621 | 5628 |
5622 // Compile a function capturing closure. | 5629 // Compile a function capturing closure. |
5623 debugger_call_with_closure = | 5630 debugger_call_with_closure = |
5624 v8::Local<v8::Function>::Cast(v8::Script::Compile( | 5631 v8::Local<v8::Function>::Cast(v8::Script::Compile( |
5625 v8::String::NewFromUtf8(CcTest::isolate(), | 5632 v8::String::NewFromUtf8(isolate, |
5626 debugger_call_with_closure_source))->Run()); | 5633 debugger_call_with_closure_source))->Run()); |
5627 | 5634 |
5628 // Calling a function through the debugger returns 0 frames if there are | 5635 // Calling a function through the debugger returns 0 frames if there are |
5629 // no JavaScript frames. | 5636 // no JavaScript frames. |
5630 CHECK_EQ(v8::Integer::New(CcTest::isolate(), 0), | 5637 CHECK_EQ(v8::Integer::New(isolate, 0), |
5631 v8::Debug::Call(frame_count)); | 5638 v8::Debug::Call(frame_count)); |
5632 | 5639 |
5633 // Test that the number of frames can be retrieved. | 5640 // Test that the number of frames can be retrieved. |
5634 v8::Script::Compile( | 5641 v8::Script::Compile( |
5635 v8::String::NewFromUtf8(CcTest::isolate(), "CheckFrameCount(1)"))->Run(); | 5642 v8::String::NewFromUtf8(isolate, "CheckFrameCount(1)"))->Run(); |
5636 v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), | 5643 v8::Script::Compile(v8::String::NewFromUtf8(isolate, |
5637 "function f() {" | 5644 "function f() {" |
5638 " CheckFrameCount(2);" | 5645 " CheckFrameCount(2);" |
5639 "}; f()"))->Run(); | 5646 "}; f()"))->Run(); |
5640 | 5647 |
5641 // Test that the source line can be retrieved. | 5648 // Test that the source line can be retrieved. |
5642 v8::Script::Compile( | 5649 v8::Script::Compile( |
5643 v8::String::NewFromUtf8(CcTest::isolate(), "CheckSourceLine(0)"))->Run(); | 5650 v8::String::NewFromUtf8(isolate, "CheckSourceLine(0)"))->Run(); |
5644 v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), | 5651 v8::Script::Compile(v8::String::NewFromUtf8(isolate, |
5645 "function f() {\n" | 5652 "function f() {\n" |
5646 " CheckSourceLine(1)\n" | 5653 " CheckSourceLine(1)\n" |
5647 " CheckSourceLine(2)\n" | 5654 " CheckSourceLine(2)\n" |
5648 " CheckSourceLine(3)\n" | 5655 " CheckSourceLine(3)\n" |
5649 "}; f()"))->Run(); | 5656 "}; f()"))->Run(); |
5650 | 5657 |
5651 // Test that a parameter can be passed to a function called in the debugger. | 5658 // Test that a parameter can be passed to a function called in the debugger. |
5652 v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), | 5659 v8::Script::Compile(v8::String::NewFromUtf8(isolate, |
5653 "CheckDataParameter()"))->Run(); | 5660 "CheckDataParameter()"))->Run(); |
5654 | 5661 |
5655 // Test that a function with closure can be run in the debugger. | 5662 // Test that a function with closure can be run in the debugger. |
5656 v8::Script::Compile( | 5663 v8::Script::Compile( |
5657 v8::String::NewFromUtf8(CcTest::isolate(), "CheckClosure()"))->Run(); | 5664 v8::String::NewFromUtf8(isolate, "CheckClosure()"))->Run(); |
5658 | 5665 |
5659 // Test that the source line is correct when there is a line offset. | 5666 // Test that the source line is correct when there is a line offset. |
5660 v8::ScriptOrigin origin(v8::String::NewFromUtf8(CcTest::isolate(), "test"), | 5667 v8::ScriptOrigin origin(v8::String::NewFromUtf8(isolate, "test"), |
5661 v8::Integer::New(CcTest::isolate(), 7)); | 5668 v8::Integer::New(isolate, 7)); |
5662 v8::Script::Compile( | 5669 v8::Script::Compile( |
5663 v8::String::NewFromUtf8(CcTest::isolate(), "CheckSourceLine(7)"), &origin) | 5670 v8::String::NewFromUtf8(isolate, "CheckSourceLine(7)"), &origin) |
5664 ->Run(); | 5671 ->Run(); |
5665 v8::Script::Compile(v8::String::NewFromUtf8(CcTest::isolate(), | 5672 v8::Script::Compile(v8::String::NewFromUtf8(isolate, |
5666 "function f() {\n" | 5673 "function f() {\n" |
5667 " CheckSourceLine(8)\n" | 5674 " CheckSourceLine(8)\n" |
5668 " CheckSourceLine(9)\n" | 5675 " CheckSourceLine(9)\n" |
5669 " CheckSourceLine(10)\n" | 5676 " CheckSourceLine(10)\n" |
5670 "}; f()"), | 5677 "}; f()"), |
5671 &origin)->Run(); | 5678 &origin)->Run(); |
5672 } | 5679 } |
5673 | 5680 |
5674 | 5681 |
5675 // Debugger message handler which counts the number of breaks. | 5682 // Debugger message handler which counts the number of breaks. |
(...skipping 1484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7160 v8::Handle<v8::Value> result = func->Call(exec_state, argc, argv); | 7167 v8::Handle<v8::Value> result = func->Call(exec_state, argc, argv); |
7161 CHECK(result->IsTrue()); | 7168 CHECK(result->IsTrue()); |
7162 } | 7169 } |
7163 } | 7170 } |
7164 | 7171 |
7165 | 7172 |
7166 TEST(CallingContextIsNotDebugContext) { | 7173 TEST(CallingContextIsNotDebugContext) { |
7167 v8::internal::Debug* debug = CcTest::i_isolate()->debug(); | 7174 v8::internal::Debug* debug = CcTest::i_isolate()->debug(); |
7168 // Create and enter a debugee context. | 7175 // Create and enter a debugee context. |
7169 DebugLocalContext env; | 7176 DebugLocalContext env; |
7170 v8::HandleScope scope(env->GetIsolate()); | 7177 v8::Isolate* isolate = env->GetIsolate(); |
| 7178 v8::HandleScope scope(isolate); |
7171 env.ExposeDebug(); | 7179 env.ExposeDebug(); |
7172 | 7180 |
7173 // Save handles to the debugger and debugee contexts to be used in | 7181 // Save handles to the debugger and debugee contexts to be used in |
7174 // NamedGetterWithCallingContextCheck. | 7182 // NamedGetterWithCallingContextCheck. |
7175 debugee_context = env.context(); | 7183 debugee_context = env.context(); |
7176 debugger_context = v8::Utils::ToLocal(debug->debug_context()); | 7184 debugger_context = v8::Utils::ToLocal(debug->debug_context()); |
7177 | 7185 |
7178 // Create object with 'a' property accessor. | 7186 // Create object with 'a' property accessor. |
7179 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(); | 7187 v8::Handle<v8::ObjectTemplate> named = v8::ObjectTemplate::New(isolate); |
7180 named->SetAccessor(v8::String::NewFromUtf8(env->GetIsolate(), "a"), | 7188 named->SetAccessor(v8::String::NewFromUtf8(isolate, "a"), |
7181 NamedGetterWithCallingContextCheck); | 7189 NamedGetterWithCallingContextCheck); |
7182 env->Global()->Set(v8::String::NewFromUtf8(env->GetIsolate(), "obj"), | 7190 env->Global()->Set(v8::String::NewFromUtf8(isolate, "obj"), |
7183 named->NewInstance()); | 7191 named->NewInstance()); |
7184 | 7192 |
7185 // Register the debug event listener | 7193 // Register the debug event listener |
7186 v8::Debug::SetDebugEventListener2(DebugEventGetAtgumentPropertyValue); | 7194 v8::Debug::SetDebugEventListener2(DebugEventGetAtgumentPropertyValue); |
7187 | 7195 |
7188 // Create a function that invokes debugger. | 7196 // Create a function that invokes debugger. |
7189 v8::Local<v8::Function> foo = CompileFunction( | 7197 v8::Local<v8::Function> foo = CompileFunction( |
7190 &env, | 7198 &env, |
7191 "function bar(x) { debugger; }" | 7199 "function bar(x) { debugger; }" |
7192 "function foo(){ bar(obj); }", | 7200 "function foo(){ bar(obj); }", |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7691 TEST(LiveEditDisabled) { | 7699 TEST(LiveEditDisabled) { |
7692 v8::internal::FLAG_allow_natives_syntax = true; | 7700 v8::internal::FLAG_allow_natives_syntax = true; |
7693 LocalContext env; | 7701 LocalContext env; |
7694 v8::HandleScope scope(env->GetIsolate()); | 7702 v8::HandleScope scope(env->GetIsolate()); |
7695 v8::Debug::SetLiveEditEnabled(false, env->GetIsolate()); | 7703 v8::Debug::SetLiveEditEnabled(false, env->GetIsolate()); |
7696 CompileRun("%LiveEditCompareStrings('', '')"); | 7704 CompileRun("%LiveEditCompareStrings('', '')"); |
7697 } | 7705 } |
7698 | 7706 |
7699 | 7707 |
7700 #endif // ENABLE_DEBUGGER_SUPPORT | 7708 #endif // ENABLE_DEBUGGER_SUPPORT |
OLD | NEW |