| Index: src/deoptimizer.h
|
| diff --git a/src/deoptimizer.h b/src/deoptimizer.h
|
| index 51cc565fd3a7a449abc54d99f74a18d28c1b1670..9b8509e0f5973180a6284ef6f0e466f487c276f2 100644
|
| --- a/src/deoptimizer.h
|
| +++ b/src/deoptimizer.h
|
| @@ -116,6 +116,7 @@ class TranslatedFrame {
|
| kInterpretedFunction,
|
| kGetter,
|
| kSetter,
|
| + kTailCallerFunction,
|
| kArgumentsAdaptor,
|
| kConstructStub,
|
| kCompiledStub,
|
| @@ -186,6 +187,7 @@ class TranslatedFrame {
|
| SharedFunctionInfo* shared_info);
|
| static TranslatedFrame ArgumentsAdaptorFrame(SharedFunctionInfo* shared_info,
|
| int height);
|
| + static TranslatedFrame TailCallerFrame(SharedFunctionInfo* shared_info);
|
| static TranslatedFrame ConstructStubFrame(SharedFunctionInfo* shared_info,
|
| int height);
|
| static TranslatedFrame CompiledStubFrame(int height, Isolate* isolate) {
|
| @@ -529,6 +531,10 @@ class Deoptimizer : public Malloced {
|
| }
|
| static int output_offset() { return OFFSET_OF(Deoptimizer, output_); }
|
|
|
| + static int caller_frame_top_offset() {
|
| + return OFFSET_OF(Deoptimizer, caller_frame_top_);
|
| + }
|
| +
|
| static int GetDeoptimizedCodeCount(Isolate* isolate);
|
|
|
| static const int kNotDeoptimizationEntry = -1;
|
| @@ -582,12 +588,20 @@ class Deoptimizer : public Malloced {
|
| void DeleteFrameDescriptions();
|
|
|
| void DoComputeOutputFrames();
|
| - void DoComputeJSFrame(int frame_index, bool goto_catch_handler);
|
| - void DoComputeInterpretedFrame(int frame_index, bool goto_catch_handler);
|
| - void DoComputeArgumentsAdaptorFrame(int frame_index);
|
| - void DoComputeConstructStubFrame(int frame_index);
|
| - void DoComputeAccessorStubFrame(int frame_index, bool is_setter_stub_frame);
|
| - void DoComputeCompiledStubFrame(int frame_index);
|
| + void DoComputeJSFrame(TranslatedFrame* translated_frame, int frame_index,
|
| + bool goto_catch_handler);
|
| + void DoComputeInterpretedFrame(TranslatedFrame* translated_frame,
|
| + int frame_index, bool goto_catch_handler);
|
| + void DoComputeArgumentsAdaptorFrame(TranslatedFrame* translated_frame,
|
| + int frame_index);
|
| + void DoComputeTailCallerFrame(TranslatedFrame* translated_frame,
|
| + int frame_index);
|
| + void DoComputeConstructStubFrame(TranslatedFrame* translated_frame,
|
| + int frame_index);
|
| + void DoComputeAccessorStubFrame(TranslatedFrame* translated_frame,
|
| + int frame_index, bool is_setter_stub_frame);
|
| + void DoComputeCompiledStubFrame(TranslatedFrame* translated_frame,
|
| + int frame_index);
|
|
|
| void WriteTranslatedValueToOutput(
|
| TranslatedFrame::iterator* iterator, int* input_index, int frame_index,
|
| @@ -935,6 +949,7 @@ class TranslationIterator BASE_EMBEDDED {
|
| V(GETTER_STUB_FRAME) \
|
| V(SETTER_STUB_FRAME) \
|
| V(ARGUMENTS_ADAPTOR_FRAME) \
|
| + V(TAIL_CALLER_FRAME) \
|
| V(COMPILED_STUB_FRAME) \
|
| V(DUPLICATED_OBJECT) \
|
| V(ARGUMENTS_OBJECT) \
|
| @@ -978,6 +993,7 @@ class Translation BASE_EMBEDDED {
|
| unsigned height);
|
| void BeginCompiledStubFrame(int height);
|
| void BeginArgumentsAdaptorFrame(int literal_id, unsigned height);
|
| + void BeginTailCallerFrame(int literal_id);
|
| void BeginConstructStubFrame(int literal_id, unsigned height);
|
| void BeginGetterStubFrame(int literal_id);
|
| void BeginSetterStubFrame(int literal_id);
|
|
|