Chromium Code Reviews| Index: src/deoptimizer.h |
| diff --git a/src/deoptimizer.h b/src/deoptimizer.h |
| index 51cc565fd3a7a449abc54d99f74a18d28c1b1670..935adbfd7685f8b75627e5ca6c47f9e1a73bcdcf 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 JSTailCallerFrame(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(JS_TAIL_CALLER_FRAME) \ |
|
Michael Starzinger
2016/03/08 16:25:08
nit: Can we call this "TAIL_CALLER_FRAME" without
Igor Sheludko
2016/03/08 18:03:40
Done.
|
| 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); |