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

Side by Side Diff: src/runtime/runtime-debug.cc

Issue 1417213005: Remove several JSFunction delegator functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « src/runtime-profiler.cc ('k') | src/runtime/runtime-function.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #include "src/runtime/runtime-utils.h" 5 #include "src/runtime/runtime-utils.h"
6 6
7 #include "src/arguments.h" 7 #include "src/arguments.h"
8 #include "src/debug/debug.h" 8 #include "src/debug/debug.h"
9 #include "src/debug/debug-evaluate.h" 9 #include "src/debug/debug-evaluate.h"
10 #include "src/debug/debug-frames.h" 10 #include "src/debug/debug-frames.h"
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 if (id == StackFrame::NO_ID) { 444 if (id == StackFrame::NO_ID) {
445 // If there is no JavaScript stack frame count is 0. 445 // If there is no JavaScript stack frame count is 0.
446 return Smi::FromInt(0); 446 return Smi::FromInt(0);
447 } 447 }
448 448
449 for (JavaScriptFrameIterator it(isolate, id); !it.done(); it.Advance()) { 449 for (JavaScriptFrameIterator it(isolate, id); !it.done(); it.Advance()) {
450 List<FrameSummary> frames(FLAG_max_inlining_levels + 1); 450 List<FrameSummary> frames(FLAG_max_inlining_levels + 1);
451 it.frame()->Summarize(&frames); 451 it.frame()->Summarize(&frames);
452 for (int i = frames.length() - 1; i >= 0; i--) { 452 for (int i = frames.length() - 1; i >= 0; i--) {
453 // Omit functions from native and extension scripts. 453 // Omit functions from native and extension scripts.
454 if (frames[i].function()->IsSubjectToDebugging()) n++; 454 if (frames[i].function()->shared()->IsSubjectToDebugging()) n++;
455 } 455 }
456 } 456 }
457 return Smi::FromInt(n); 457 return Smi::FromInt(n);
458 } 458 }
459 459
460 460
461 static const int kFrameDetailsFrameIdIndex = 0; 461 static const int kFrameDetailsFrameIdIndex = 0;
462 static const int kFrameDetailsReceiverIndex = 1; 462 static const int kFrameDetailsReceiverIndex = 1;
463 static const int kFrameDetailsFunctionIndex = 2; 463 static const int kFrameDetailsFunctionIndex = 2;
464 static const int kFrameDetailsArgumentCountIndex = 3; 464 static const int kFrameDetailsArgumentCountIndex = 3;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 isolate); 522 isolate);
523 523
524 // Find source position in unoptimized code. 524 // Find source position in unoptimized code.
525 int position = frame_inspector.GetSourcePosition(); 525 int position = frame_inspector.GetSourcePosition();
526 526
527 // Check for constructor frame. 527 // Check for constructor frame.
528 bool constructor = frame_inspector.IsConstructor(); 528 bool constructor = frame_inspector.IsConstructor();
529 529
530 // Get scope info and read from it for local variable information. 530 // Get scope info and read from it for local variable information.
531 Handle<JSFunction> function(JSFunction::cast(frame_inspector.GetFunction())); 531 Handle<JSFunction> function(JSFunction::cast(frame_inspector.GetFunction()));
532 RUNTIME_ASSERT(function->IsSubjectToDebugging()); 532 RUNTIME_ASSERT(function->shared()->IsSubjectToDebugging());
533 Handle<SharedFunctionInfo> shared(function->shared()); 533 Handle<SharedFunctionInfo> shared(function->shared());
534 Handle<ScopeInfo> scope_info(shared->scope_info()); 534 Handle<ScopeInfo> scope_info(shared->scope_info());
535 DCHECK(*scope_info != ScopeInfo::Empty(isolate)); 535 DCHECK(*scope_info != ScopeInfo::Empty(isolate));
536 536
537 // Get the locals names and values into a temporary array. 537 // Get the locals names and values into a temporary array.
538 int local_count = scope_info->LocalCount(); 538 int local_count = scope_info->LocalCount();
539 for (int slot = 0; slot < scope_info->LocalCount(); ++slot) { 539 for (int slot = 0; slot < scope_info->LocalCount(); ++slot) {
540 // Hide compiler-introduced temporary variables, whether on the stack or on 540 // Hide compiler-introduced temporary variables, whether on the stack or on
541 // the context. 541 // the context.
542 if (scope_info->LocalIsSynthetic(slot)) local_count--; 542 if (scope_info->LocalIsSynthetic(slot)) local_count--;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 details->set(details_index++, locals->get(i)); 698 details->set(details_index++, locals->get(i));
699 } 699 }
700 700
701 // Add the value being returned. 701 // Add the value being returned.
702 if (at_return) { 702 if (at_return) {
703 details->set(details_index++, *return_value); 703 details->set(details_index++, *return_value);
704 } 704 }
705 705
706 // Add the receiver (same as in function frame). 706 // Add the receiver (same as in function frame).
707 Handle<Object> receiver(it.frame()->receiver(), isolate); 707 Handle<Object> receiver(it.frame()->receiver(), isolate);
708 DCHECK(!function->IsBuiltin()); 708 DCHECK(!function->shared()->IsBuiltin());
709 if (!receiver->IsJSObject() && is_sloppy(shared->language_mode())) { 709 if (!receiver->IsJSObject() && is_sloppy(shared->language_mode())) {
710 // If the receiver is not a JSObject and the function is not a builtin or 710 // If the receiver is not a JSObject and the function is not a builtin or
711 // strict-mode we have hit an optimization where a value object is not 711 // strict-mode we have hit an optimization where a value object is not
712 // converted into a wrapped JS objects. To hide this optimization from the 712 // converted into a wrapped JS objects. To hide this optimization from the
713 // debugger, we wrap the receiver by creating correct wrapper object based 713 // debugger, we wrap the receiver by creating correct wrapper object based
714 // on the function's native context. 714 // on the function's native context.
715 // See ECMA-262 6.0, 9.2.1.2, 6 b iii. 715 // See ECMA-262 6.0, 9.2.1.2, 6 b iii.
716 if (receiver->IsUndefined()) { 716 if (receiver->IsUndefined()) {
717 receiver = handle(function->global_proxy()); 717 receiver = handle(function->global_proxy());
718 } else { 718 } else {
(...skipping 912 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 CONVERT_ARG_CHECKED(Object, object, 0); 1631 CONVERT_ARG_CHECKED(Object, object, 0);
1632 RUNTIME_ASSERT(object->IsJSFunction() || object->IsJSGeneratorObject()); 1632 RUNTIME_ASSERT(object->IsJSFunction() || object->IsJSGeneratorObject());
1633 // We do not step into the callback if it's a builtin other than a bound, 1633 // We do not step into the callback if it's a builtin other than a bound,
1634 // or not even a function. 1634 // or not even a function.
1635 JSFunction* fun; 1635 JSFunction* fun;
1636 if (object->IsJSFunction()) { 1636 if (object->IsJSFunction()) {
1637 fun = JSFunction::cast(object); 1637 fun = JSFunction::cast(object);
1638 } else { 1638 } else {
1639 fun = JSGeneratorObject::cast(object)->function(); 1639 fun = JSGeneratorObject::cast(object)->function();
1640 } 1640 }
1641 return isolate->heap()->ToBoolean(fun->IsSubjectToDebugging() || 1641 return isolate->heap()->ToBoolean(fun->shared()->IsSubjectToDebugging() ||
1642 fun->shared()->bound()); 1642 fun->shared()->bound());
1643 } 1643 }
1644 1644
1645 1645
1646 void FloodDebugSubjectWithOneShot(Debug* debug, Handle<JSFunction> function) { 1646 void FloodDebugSubjectWithOneShot(Debug* debug, Handle<JSFunction> function) {
1647 if (function->IsSubjectToDebugging() || function->shared()->bound()) { 1647 if (function->shared()->IsSubjectToDebugging() ||
1648 function->shared()->bound()) {
1648 // When leaving the function, step out has been activated, but not performed 1649 // When leaving the function, step out has been activated, but not performed
1649 // if we do not leave the builtin. To be able to step into the function 1650 // if we do not leave the builtin. To be able to step into the function
1650 // again, we need to clear the step out at this point. 1651 // again, we need to clear the step out at this point.
1651 debug->ClearStepOut(); 1652 debug->ClearStepOut();
1652 debug->FloodWithOneShotGeneric(function); 1653 debug->FloodWithOneShotGeneric(function);
1653 } 1654 }
1654 } 1655 }
1655 1656
1656 1657
1657 // Set one shot breakpoints for the callback function that is passed to a 1658 // Set one shot breakpoints for the callback function that is passed to a
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 return *isolate->factory()->undefined_value(); 1736 return *isolate->factory()->undefined_value();
1736 } 1737 }
1737 1738
1738 1739
1739 RUNTIME_FUNCTION(Runtime_DebugBreakInOptimizedCode) { 1740 RUNTIME_FUNCTION(Runtime_DebugBreakInOptimizedCode) {
1740 UNIMPLEMENTED(); 1741 UNIMPLEMENTED();
1741 return NULL; 1742 return NULL;
1742 } 1743 }
1743 } // namespace internal 1744 } // namespace internal
1744 } // namespace v8 1745 } // namespace v8
OLDNEW
« no previous file with comments | « src/runtime-profiler.cc ('k') | src/runtime/runtime-function.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698