Index: src/builtins/builtins.cc |
diff --git a/src/builtins/builtins.cc b/src/builtins/builtins.cc |
index b3cd1c653c880aeb8673d85cdb916b5089d54334..b76f9b91ee628b128fb23bec9b480926704bcba6 100644 |
--- a/src/builtins/builtins.cc |
+++ b/src/builtins/builtins.cc |
@@ -26,6 +26,32 @@ Builtins::Builtins() : initialized_(false) { |
Builtins::~Builtins() {} |
+BailoutId Builtins::GetContinuationBailoutId(Name name) { |
+ switch (name) { |
+#define BAILOUT_ID(NAME, ...) \ |
+ case k##NAME: \ |
+ return BailoutId(BailoutId::kFirstBuiltinContinuationId + name); |
+ BUILTIN_LIST_TFJ(BAILOUT_ID); |
+ BUILTIN_LIST_TFC(BAILOUT_ID); |
+#undef BAILOUT_ID |
+ default: |
+ UNIMPLEMENTED(); |
+ } |
+} |
+ |
+Builtins::Name Builtins::GetBuiltinFromBailoutId(BailoutId id) { |
+ switch (id.ToInt()) { |
+#define BAILOUT_ID(NAME, ...) \ |
+ case BailoutId::kFirstBuiltinContinuationId + k##NAME: \ |
+ return k##NAME; |
+ BUILTIN_LIST_TFJ(BAILOUT_ID) |
+ BUILTIN_LIST_TFC(BAILOUT_ID) |
+#undef BAILOUT_ID |
+ default: |
+ UNIMPLEMENTED(); |
+ } |
+} |
+ |
void Builtins::TearDown() { initialized_ = false; } |
void Builtins::IterateBuiltins(RootVisitor* v) { |
@@ -131,6 +157,20 @@ Callable Builtins::CallableFor(Isolate* isolate, Name name) { |
Handle<Code> code = isolate->builtins()->ConsoleAssert(); |
return Callable(code, BuiltinDescriptor(isolate)); |
} |
+ case kArrayForEach: { |
+ Handle<Code> code = isolate->builtins()->ArrayForEach(); |
+ return Callable(code, BuiltinDescriptor(isolate)); |
+ } |
+ case kArrayForEachLoopEagerDeoptContinuation: { |
+ Handle<Code> code = |
+ isolate->builtins()->ArrayForEachLoopEagerDeoptContinuation(); |
+ return Callable(code, BuiltinDescriptor(isolate)); |
+ } |
+ case kArrayForEachLoopLazyDeoptContinuation: { |
+ Handle<Code> code = |
+ isolate->builtins()->ArrayForEachLoopLazyDeoptContinuation(); |
+ return Callable(code, BuiltinDescriptor(isolate)); |
+ } |
default: |
UNREACHABLE(); |
return Callable(Handle<Code>::null(), VoidDescriptor(isolate)); |
@@ -138,6 +178,21 @@ Callable Builtins::CallableFor(Isolate* isolate, Name name) { |
} |
// static |
+int Builtins::GetStackParameterCount(Isolate* isolate, Name name) { |
+ switch (name) { |
+#define CASE(Name, Count, ...) \ |
+ case k##Name: { \ |
+ return Count; \ |
+ } |
+ BUILTIN_LIST_TFJ(CASE) |
+#undef CASE |
+ default: |
+ UNREACHABLE(); |
+ return 0; |
+ } |
+} |
+ |
+// static |
const char* Builtins::name(int index) { |
switch (index) { |
#define CASE(Name, ...) \ |