Index: src/frames.cc |
diff --git a/src/frames.cc b/src/frames.cc |
index cda47e902af3b0fea3462b08191f81e3c16e662f..a044cc10ea27cf2feee87d503d2b149bf0633926 100644 |
--- a/src/frames.cc |
+++ b/src/frames.cc |
@@ -504,6 +504,8 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator, |
case ENTRY: |
case ENTRY_CONSTRUCT: |
case EXIT: |
+ case BUILTIN_CONTINUATION: |
+ case JAVA_SCRIPT_BUILTIN_CONTINUATION: |
case BUILTIN_EXIT: |
case STUB: |
case STUB_FAILURE_TRAMPOLINE: |
@@ -802,6 +804,8 @@ void StandardFrame::IterateCompiledFrame(RootVisitor* v) const { |
case ENTRY: |
case ENTRY_CONSTRUCT: |
case EXIT: |
+ case BUILTIN_CONTINUATION: |
+ case JAVA_SCRIPT_BUILTIN_CONTINUATION: |
case BUILTIN_EXIT: |
case STUB_FAILURE_TRAMPOLINE: |
case ARGUMENTS_ADAPTOR: |
@@ -1377,7 +1381,8 @@ void OptimizedFrame::Summarize(List<FrameSummary>* frames, |
while (jsframe_count != 0) { |
frame_opcode = static_cast<Translation::Opcode>(it.Next()); |
if (frame_opcode == Translation::JS_FRAME || |
- frame_opcode == Translation::INTERPRETED_FRAME) { |
+ frame_opcode == Translation::INTERPRETED_FRAME || |
+ frame_opcode == Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) { |
jsframe_count--; |
BailoutId const bailout_id = BailoutId(it.Next()); |
SharedFunctionInfo* const shared_info = |
@@ -1429,6 +1434,11 @@ void OptimizedFrame::Summarize(List<FrameSummary>* frames, |
Deoptimizer::GetOutputInfo(output_data, bailout_id, shared_info); |
code_offset = FullCodeGenerator::PcField::decode(entry); |
abstract_code = AbstractCode::cast(code); |
+ } else if (frame_opcode == |
+ Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) { |
+ code_offset = 0; |
+ abstract_code = AbstractCode::cast(isolate()->builtins()->builtin( |
+ Builtins::GetBuiltinFromBailoutId(bailout_id))); |
} else { |
DCHECK_EQ(frame_opcode, Translation::INTERPRETED_FRAME); |
code_offset = bailout_id.ToInt(); // Points to current bytecode. |
@@ -1537,7 +1547,8 @@ void OptimizedFrame::GetFunctions(List<SharedFunctionInfo*>* functions) const { |
while (jsframe_count != 0) { |
opcode = static_cast<Translation::Opcode>(it.Next()); |
if (opcode == Translation::JS_FRAME || |
- opcode == Translation::INTERPRETED_FRAME) { |
+ opcode == Translation::INTERPRETED_FRAME || |
+ opcode == Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) { |
it.Next(); // Skip bailout id. |
jsframe_count--; |