Chromium Code Reviews| 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) { | |
|
kozy
2017/03/03 18:20:35
&& args[0]->IsObject()
luoe
2017/03/03 18:56:21
Replaced the CHECK on L544 with a condition as you
| |
| 540 fprintf(stderr, "Internal error: allowAccessorFormatting('object')."); | |
| 541 Exit(); | |
| 542 } | |
| 543 v8::Local<v8::Object> object = args[0].As<v8::Object>(); | |
| 544 CHECK(object->IsObject()); | |
| 545 v8::Isolate* isolate = args.GetIsolate(); | |
| 546 v8::Local<v8::Private> shouldFormatAccessorsPrivate = v8::Private::ForApi( | |
| 547 isolate, v8::String::NewFromUtf8(isolate, "allowAccessorFormatting", | |
| 548 v8::NewStringType::kNormal) | |
| 549 .ToLocalChecked()); | |
| 550 object | |
| 551 ->SetPrivate(isolate->GetCurrentContext(), shouldFormatAccessorsPrivate, | |
| 552 v8::Null(isolate)) | |
| 553 .ToChecked(); | |
| 554 } | |
| 528 }; | 555 }; |
| 529 | 556 |
| 530 v8::Local<v8::String> ToString(v8::Isolate* isolate, | 557 v8::Local<v8::String> ToString(v8::Isolate* isolate, |
| 531 const v8_inspector::StringView& string) { | 558 const v8_inspector::StringView& string) { |
| 532 if (string.is8Bit()) | 559 if (string.is8Bit()) |
| 533 return v8::String::NewFromOneByte(isolate, string.characters8(), | 560 return v8::String::NewFromOneByte(isolate, string.characters8(), |
| 534 v8::NewStringType::kNormal, | 561 v8::NewStringType::kNormal, |
| 535 static_cast<int>(string.length())) | 562 static_cast<int>(string.length())) |
| 536 .ToLocalChecked(); | 563 .ToLocalChecked(); |
| 537 else | 564 else |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 630 argv[i]); | 657 argv[i]); |
| 631 Exit(); | 658 Exit(); |
| 632 } | 659 } |
| 633 frontend_runner.Append(new ExecuteStringTask(chars)); | 660 frontend_runner.Append(new ExecuteStringTask(chars)); |
| 634 } | 661 } |
| 635 | 662 |
| 636 frontend_runner.Join(); | 663 frontend_runner.Join(); |
| 637 backend_runner.Join(); | 664 backend_runner.Join(); |
| 638 return 0; | 665 return 0; |
| 639 } | 666 } |
| OLD | NEW |