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

Unified Diff: src/deoptimizer.h

Issue 1768263004: [turbofan] [deoptimizer] Support inlining of ES6 tail calls. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressing comments, StandardFrameConstants -> CommonFrameConstants Created 4 years, 9 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/js-inlining.cc ('k') | src/deoptimizer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « src/compiler/js-inlining.cc ('k') | src/deoptimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698