OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/profile-generator.h" | 5 #include "src/profile-generator.h" |
6 | 6 |
7 #include "src/compiler.h" | 7 #include "src/compiler.h" |
8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
10 #include "src/global-handles.h" | 10 #include "src/global-handles.h" |
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
630 pc_entry->builtin_id() == Builtins::kFunctionApply) { | 630 pc_entry->builtin_id() == Builtins::kFunctionApply) { |
631 // When current function is FunctionCall or FunctionApply builtin the | 631 // When current function is FunctionCall or FunctionApply builtin the |
632 // top frame is either frame of the calling JS function or internal | 632 // top frame is either frame of the calling JS function or internal |
633 // frame. In the latter case we know the caller for sure but in the | 633 // frame. In the latter case we know the caller for sure but in the |
634 // former case we don't so we simply replace the frame with | 634 // former case we don't so we simply replace the frame with |
635 // 'unresolved' entry. | 635 // 'unresolved' entry. |
636 if (sample.top_frame_type == StackFrame::JAVA_SCRIPT) { | 636 if (sample.top_frame_type == StackFrame::JAVA_SCRIPT) { |
637 *entry++ = unresolved_entry_; | 637 *entry++ = unresolved_entry_; |
638 } | 638 } |
639 } | 639 } |
640 } else if (sample.top_frame_type == StackFrame::JAVA_SCRIPT || | |
641 sample.top_frame_type == StackFrame::OPTIMIZED) { | |
642 // Find out, if top of stack was pointing inside a JS function | |
643 // meaning that we have encountered a frameless invocation. | |
644 Address start; | |
645 *entry++ = code_map_.FindEntry(sample.tos, &start); | |
alph
2015/09/10 06:20:36
You can omit the second argument.
yurys
2015/09/10 15:58:49
Done. Also I did more clean-up in another CL: http
| |
640 } | 646 } |
641 } | 647 } |
642 | 648 |
643 for (const Address* stack_pos = sample.stack, | 649 for (const Address* stack_pos = sample.stack, |
644 *stack_end = stack_pos + sample.frames_count; | 650 *stack_end = stack_pos + sample.frames_count; |
645 stack_pos != stack_end; | 651 stack_pos != stack_end; |
646 ++stack_pos) { | 652 ++stack_pos) { |
647 Address start = NULL; | 653 Address start = NULL; |
648 *entry = code_map_.FindEntry(*stack_pos, &start); | 654 *entry = code_map_.FindEntry(*stack_pos, &start); |
649 | 655 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
694 case EXTERNAL: | 700 case EXTERNAL: |
695 return program_entry_; | 701 return program_entry_; |
696 case IDLE: | 702 case IDLE: |
697 return idle_entry_; | 703 return idle_entry_; |
698 default: return NULL; | 704 default: return NULL; |
699 } | 705 } |
700 } | 706 } |
701 | 707 |
702 } // namespace internal | 708 } // namespace internal |
703 } // namespace v8 | 709 } // namespace v8 |
OLD | NEW |