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

Unified Diff: src/builtins.cc

Issue 2090723005: [builtins] New frame type for exits to C++ builtins (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 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
« src/builtins.h ('K') | « src/builtins.h ('k') | src/code-stubs.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/builtins.cc
diff --git a/src/builtins.cc b/src/builtins.cc
index 288ad64b7c4b62241956496586e22b825a3c1b8c..b02b6e9d143414c554489b2dce3f93826f2a528f 100644
--- a/src/builtins.cc
+++ b/src/builtins.cc
@@ -5596,7 +5596,7 @@ Builtins::Builtins() : initialized_(false) {
Builtins::~Builtins() {
}
-#define DEF_ENUM_C(name) FUNCTION_ADDR(Builtin_##name),
+#define DEF_ENUM_C(name, ignore) FUNCTION_ADDR(Builtin_##name),
Address const Builtins::c_functions_[cfunction_count] = {
BUILTIN_LIST_C(DEF_ENUM_C)
};
@@ -5610,6 +5610,7 @@ struct BuiltinDesc {
const char* s_name; // name is only used for generating log information.
int name;
Code::Flags flags;
+ bool builtin_exit_frame;
int argc;
};
@@ -5654,13 +5655,13 @@ Handle<Code> MacroAssemblerBuilder(Isolate* isolate,
MacroAssembler masm(isolate, u.buffer, sizeof(u.buffer),
CodeObjectRequired::kYes);
// Generate the code/adaptor.
- typedef void (*Generator)(MacroAssembler*, int);
+ typedef void (*Generator)(MacroAssembler*, int, bool);
Generator g = FUNCTION_CAST<Generator>(builtin_desc->generator);
// We pass all arguments to the generator, but it may not use all of
// them. This works because the first arguments are on top of the
// stack.
DCHECK(!masm.has_frame());
- g(&masm, builtin_desc->name);
+ g(&masm, builtin_desc->name, builtin_desc->builtin_exit_frame);
// Move the code into the object heap.
CodeDesc desc;
masm.GetCode(&desc);
@@ -5714,15 +5715,17 @@ void Builtins::InitBuiltinFunctionTable() {
functions[builtin_count].s_name = nullptr;
functions[builtin_count].name = builtin_count;
functions[builtin_count].flags = static_cast<Code::Flags>(0);
+ functions[builtin_count].builtin_exit_frame = false;
functions[builtin_count].argc = 0;
-#define DEF_FUNCTION_PTR_C(aname) \
+#define DEF_FUNCTION_PTR_C(aname, is_builtin_exit_frame) \
functions->builder = &MacroAssemblerBuilder; \
functions->generator = FUNCTION_ADDR(Generate_Adaptor); \
functions->c_code = FUNCTION_ADDR(Builtin_##aname); \
functions->s_name = #aname; \
functions->name = c_##aname; \
functions->flags = Code::ComputeFlags(Code::BUILTIN); \
+ functions->builtin_exit_frame = is_builtin_exit_frame; \
functions->argc = 0; \
++functions;
@@ -5733,6 +5736,7 @@ void Builtins::InitBuiltinFunctionTable() {
functions->s_name = #aname; \
functions->name = k##aname; \
functions->flags = Code::ComputeFlags(Code::kind, extra); \
+ functions->builtin_exit_frame = false; \
functions->argc = 0; \
++functions;
@@ -5743,6 +5747,7 @@ void Builtins::InitBuiltinFunctionTable() {
functions->s_name = #aname; \
functions->name = k##aname; \
functions->flags = Code::ComputeFlags(Code::BUILTIN); \
+ functions->builtin_exit_frame = false; \
functions->argc = aargc; \
++functions;
@@ -5753,6 +5758,7 @@ void Builtins::InitBuiltinFunctionTable() {
functions->s_name = #aname; \
functions->name = k##aname; \
functions->flags = Code::ComputeFlags(Code::kind, extra); \
+ functions->builtin_exit_frame = false; \
functions->argc = CallDescriptors::interface_descriptor; \
++functions;
@@ -5763,6 +5769,7 @@ void Builtins::InitBuiltinFunctionTable() {
functions->s_name = #aname; \
functions->name = k##aname; \
functions->flags = Code::ComputeHandlerFlags(Code::kind); \
+ functions->builtin_exit_frame = false; \
functions->argc = 0; \
++functions;
@@ -6096,7 +6103,7 @@ void Builtins::Generate_AtomicsStore(CodeStubAssembler* a) {
a->Return(a->Int32Constant(0));
}
-#define DEFINE_BUILTIN_ACCESSOR_C(name) \
+#define DEFINE_BUILTIN_ACCESSOR_C(name, ignore) \
Handle<Code> Builtins::name() { \
Code** code_address = reinterpret_cast<Code**>(builtin_address(k##name)); \
return Handle<Code>(code_address); \
« src/builtins.h ('K') | « src/builtins.h ('k') | src/code-stubs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698