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

Unified Diff: src/compiler/frame-states.h

Issue 2803853005: Inline Array.prototype.forEach in TurboFan (Closed)
Patch Set: Disable new array builtins by default Created 3 years, 6 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/code-generator.cc ('k') | src/compiler/frame-states.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/frame-states.h
diff --git a/src/compiler/frame-states.h b/src/compiler/frame-states.h
index a98d599de596408bd3cf9a744f3f193e0ce0ef04..6057d89c2d48f3ca7a688ee9805a8695afecfb49 100644
--- a/src/compiler/frame-states.h
+++ b/src/compiler/frame-states.h
@@ -5,6 +5,7 @@
#ifndef V8_COMPILER_FRAME_STATES_H_
#define V8_COMPILER_FRAME_STATES_H_
+#include "src/builtins/builtins.h"
#include "src/handles.h"
#include "src/objects/shared-function-info.h"
#include "src/utils.h"
@@ -14,6 +15,9 @@ namespace internal {
namespace compiler {
+class JSGraph;
+class Node;
+
// Flag that describes how to combine the current environment with
// the output of a node to obtain a framestate for lazy bailout.
class OutputFrameStateCombine {
@@ -80,7 +84,10 @@ enum class FrameStateType {
kTailCallerFunction, // Represents a frame removed by tail call elimination.
kConstructStub, // Represents a ConstructStubFrame.
kGetterStub, // Represents a GetterStubFrame.
- kSetterStub // Represents a SetterStubFrame.
+ kSetterStub, // Represents a SetterStubFrame.
+ kBuiltinContinuation, // Represents a continuation to a stub.
+ kJavaScriptBuiltinContinuation // Represents a continuation to a JavaScipt
+ // builtin.
};
class FrameStateFunctionInfo {
@@ -100,7 +107,8 @@ class FrameStateFunctionInfo {
static bool IsJSFunctionType(FrameStateType type) {
return type == FrameStateType::kJavaScriptFunction ||
- type == FrameStateType::kInterpretedFunction;
+ type == FrameStateType::kInterpretedFunction ||
+ type == FrameStateType::kJavaScriptBuiltinContinuation;
}
private:
@@ -158,6 +166,21 @@ static const int kFrameStateFunctionInput = 4;
static const int kFrameStateOuterStateInput = 5;
static const int kFrameStateInputCount = kFrameStateOuterStateInput + 1;
+enum class ContinuationFrameStateMode { EAGER, LAZY };
+
+Node* CreateStubBuiltinContinuationFrameState(JSGraph* graph,
+ Builtins::Name name,
+ Node* context, Node** parameters,
+ int parameter_count,
+ Node* outer_frame_state,
+ ContinuationFrameStateMode mode);
+
+Node* CreateJavaScriptBuiltinContinuationFrameState(
+ JSGraph* graph, Handle<JSFunction> function, Builtins::Name name,
+ Node* target, Node* context, Node** stack_parameters,
+ int stack_parameter_count, Node* outer_frame_state,
+ ContinuationFrameStateMode mode);
+
} // namespace compiler
} // namespace internal
} // namespace v8
« no previous file with comments | « src/compiler/code-generator.cc ('k') | src/compiler/frame-states.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698