OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #if !defined(_WIN32) && !defined(_WIN64) | 5 #if !defined(_WIN32) && !defined(_WIN64) |
6 #include <unistd.h> // NOLINT | 6 #include <unistd.h> // NOLINT |
7 #endif // !defined(_WIN32) && !defined(_WIN64) | 7 #endif // !defined(_WIN32) && !defined(_WIN64) |
8 | 8 |
9 #include <locale.h> | 9 #include <locale.h> |
10 | 10 |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 | 375 |
376 class InspectorExtension : public v8::Extension { | 376 class InspectorExtension : public v8::Extension { |
377 public: | 377 public: |
378 InspectorExtension() | 378 InspectorExtension() |
379 : v8::Extension("v8_inspector/inspector", | 379 : v8::Extension("v8_inspector/inspector", |
380 "native function attachInspector();" | 380 "native function attachInspector();" |
381 "native function detachInspector();" | 381 "native function detachInspector();" |
382 "native function setMaxAsyncTaskStacks();" | 382 "native function setMaxAsyncTaskStacks();" |
383 "native function breakProgram();" | 383 "native function breakProgram();" |
384 "native function createObjectWithStrictCheck();" | 384 "native function createObjectWithStrictCheck();" |
385 "native function callWithScheduledBreak();") {} | 385 "native function callWithScheduledBreak();" |
| 386 "native function allowAccessorFormatting();") {} |
386 | 387 |
387 virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( | 388 virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( |
388 v8::Isolate* isolate, v8::Local<v8::String> name) { | 389 v8::Isolate* isolate, v8::Local<v8::String> name) { |
389 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 390 v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
390 if (name->Equals(context, | 391 if (name->Equals(context, |
391 v8::String::NewFromUtf8(isolate, "attachInspector", | 392 v8::String::NewFromUtf8(isolate, "attachInspector", |
392 v8::NewStringType::kNormal) | 393 v8::NewStringType::kNormal) |
393 .ToLocalChecked()) | 394 .ToLocalChecked()) |
394 .FromJust()) { | 395 .FromJust()) { |
395 return v8::FunctionTemplate::New(isolate, InspectorExtension::Attach); | 396 return v8::FunctionTemplate::New(isolate, InspectorExtension::Attach); |
(...skipping 24 matching lines...) Expand all Loading... |
420 .FromJust()) { | 421 .FromJust()) { |
421 return v8::FunctionTemplate::New( | 422 return v8::FunctionTemplate::New( |
422 isolate, InspectorExtension::CreateObjectWithStrictCheck); | 423 isolate, InspectorExtension::CreateObjectWithStrictCheck); |
423 } else if (name->Equals(context, v8::String::NewFromUtf8( | 424 } else if (name->Equals(context, v8::String::NewFromUtf8( |
424 isolate, "callWithScheduledBreak", | 425 isolate, "callWithScheduledBreak", |
425 v8::NewStringType::kNormal) | 426 v8::NewStringType::kNormal) |
426 .ToLocalChecked()) | 427 .ToLocalChecked()) |
427 .FromJust()) { | 428 .FromJust()) { |
428 return v8::FunctionTemplate::New( | 429 return v8::FunctionTemplate::New( |
429 isolate, InspectorExtension::CallWithScheduledBreak); | 430 isolate, InspectorExtension::CallWithScheduledBreak); |
| 431 } else if (name->Equals(context, v8::String::NewFromUtf8( |
| 432 isolate, "allowAccessorFormatting", |
| 433 v8::NewStringType::kNormal) |
| 434 .ToLocalChecked()) |
| 435 .FromJust()) { |
| 436 return v8::FunctionTemplate::New( |
| 437 isolate, InspectorExtension::AllowAccessorFormatting); |
430 } | 438 } |
431 return v8::Local<v8::FunctionTemplate>(); | 439 return v8::Local<v8::FunctionTemplate>(); |
432 } | 440 } |
433 | 441 |
434 private: | 442 private: |
435 static void Attach(const v8::FunctionCallbackInfo<v8::Value>& args) { | 443 static void Attach(const v8::FunctionCallbackInfo<v8::Value>& args) { |
436 v8::Isolate* isolate = args.GetIsolate(); | 444 v8::Isolate* isolate = args.GetIsolate(); |
437 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 445 v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
438 v8_inspector::V8Inspector* inspector = | 446 v8_inspector::V8Inspector* inspector = |
439 InspectorClientImpl::InspectorFromContext(context); | 447 InspectorClientImpl::InspectorFromContext(context); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 v8_inspector::StringView reason_view(reason.start(), reason.length()); | 526 v8_inspector::StringView reason_view(reason.start(), reason.length()); |
519 v8::internal::Vector<uint16_t> details = ToVector(args[2].As<v8::String>()); | 527 v8::internal::Vector<uint16_t> details = ToVector(args[2].As<v8::String>()); |
520 v8_inspector::StringView details_view(details.start(), details.length()); | 528 v8_inspector::StringView details_view(details.start(), details.length()); |
521 session->schedulePauseOnNextStatement(reason_view, details_view); | 529 session->schedulePauseOnNextStatement(reason_view, details_view); |
522 v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); | 530 v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
523 v8::MaybeLocal<v8::Value> result; | 531 v8::MaybeLocal<v8::Value> result; |
524 result = args[0].As<v8::Function>()->Call(context, context->Global(), 0, | 532 result = args[0].As<v8::Function>()->Call(context, context->Global(), 0, |
525 nullptr); | 533 nullptr); |
526 session->cancelPauseOnNextStatement(); | 534 session->cancelPauseOnNextStatement(); |
527 } | 535 } |
| 536 |
| 537 static void AllowAccessorFormatting( |
| 538 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 539 if (args.Length() != 1 || !args[0]->IsObject()) { |
| 540 fprintf(stderr, "Internal error: allowAccessorFormatting('object')."); |
| 541 Exit(); |
| 542 } |
| 543 v8::Local<v8::Object> object = args[0].As<v8::Object>(); |
| 544 v8::Isolate* isolate = args.GetIsolate(); |
| 545 v8::Local<v8::Private> shouldFormatAccessorsPrivate = v8::Private::ForApi( |
| 546 isolate, v8::String::NewFromUtf8(isolate, "allowAccessorFormatting", |
| 547 v8::NewStringType::kNormal) |
| 548 .ToLocalChecked()); |
| 549 object |
| 550 ->SetPrivate(isolate->GetCurrentContext(), shouldFormatAccessorsPrivate, |
| 551 v8::Null(isolate)) |
| 552 .ToChecked(); |
| 553 } |
528 }; | 554 }; |
529 | 555 |
530 v8::Local<v8::String> ToString(v8::Isolate* isolate, | 556 v8::Local<v8::String> ToString(v8::Isolate* isolate, |
531 const v8_inspector::StringView& string) { | 557 const v8_inspector::StringView& string) { |
532 if (string.is8Bit()) | 558 if (string.is8Bit()) |
533 return v8::String::NewFromOneByte(isolate, string.characters8(), | 559 return v8::String::NewFromOneByte(isolate, string.characters8(), |
534 v8::NewStringType::kNormal, | 560 v8::NewStringType::kNormal, |
535 static_cast<int>(string.length())) | 561 static_cast<int>(string.length())) |
536 .ToLocalChecked(); | 562 .ToLocalChecked(); |
537 else | 563 else |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 argv[i]); | 656 argv[i]); |
631 Exit(); | 657 Exit(); |
632 } | 658 } |
633 frontend_runner.Append(new ExecuteStringTask(chars)); | 659 frontend_runner.Append(new ExecuteStringTask(chars)); |
634 } | 660 } |
635 | 661 |
636 frontend_runner.Join(); | 662 frontend_runner.Join(); |
637 backend_runner.Join(); | 663 backend_runner.Join(); |
638 return 0; | 664 return 0; |
639 } | 665 } |
OLD | NEW |