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

Unified Diff: src/builtins/builtins.h

Issue 2246333003: Store information about builtins in descriptors (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix typo Created 4 years, 4 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 | « no previous file | src/builtins/builtins.cc » ('j') | src/builtins/builtins.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/builtins/builtins.h
diff --git a/src/builtins/builtins.h b/src/builtins/builtins.h
index 10d6f21705b3c99e1f8e039d0cd5722d08192449..68fd84ec0dd0aa7a973afaca5f4e123e3a86d41e 100644
--- a/src/builtins/builtins.h
+++ b/src/builtins/builtins.h
@@ -569,13 +569,38 @@ class Builtins {
#define DEF_ENUM(Name, ...) k##Name,
BUILTIN_LIST_ALL(DEF_ENUM)
#undef DEF_ENUM
- builtin_count
+ BUILTIN_COUNT
};
#define DECLARE_BUILTIN_ACCESSOR(Name, ...) Handle<Code> Name();
BUILTIN_LIST_ALL(DECLARE_BUILTIN_ACCESSOR)
#undef DECLARE_BUILTIN_ACCESSOR
+ enum Kind { CPP, API, TFJ, TFS, ASM, ASH, DBG };
Toon Verwaest 2016/08/19 11:58:15 Here I'd write the names out so we don't need to g
+
+ struct Descriptor {
+ Descriptor() {}
+ Descriptor(Name id, Kind kind, Address entry, Object* code,
+ const char* debug_name)
+ : id(id),
+ kind(kind),
+ entry(entry),
+ code(code),
+ debug_name(debug_name) {}
+
+ Name id;
+ Kind kind;
+
+ // For CPP and API functions, this is the C++ entry point.
+ Address entry;
+
+ // Note: These are always Code objects, but to conform with
+ // IterateBuiltins(), we use an Object* here.
+ Object* code;
Toon Verwaest 2016/08/19 11:58:15 You should be able to just make this a Code*, whic
+
+ const char* debug_name;
Toon Verwaest 2016/08/19 11:58:15 #ifdef DEBUG?
+ };
+
// Convenience wrappers.
Handle<Code> CallFunction(
ConvertReceiverMode = ConvertReceiverMode::kAny,
@@ -593,11 +618,11 @@ class Builtins {
Code* builtin(Name name) {
// Code::cast cannot be used here since we access builtins
// during the marking phase of mark sweep. See IC::Clear.
Toon Verwaest 2016/08/19 11:58:15 Then you don't need to reinterpret_cast here.
- return reinterpret_cast<Code*>(builtins_[name]);
+ return reinterpret_cast<Code*>(builtins_[name].code);
}
Address builtin_address(Name name) {
- return reinterpret_cast<Address>(&builtins_[name]);
+ return reinterpret_cast<Address>(&builtins_[name].code);
}
const char* name(int index);
@@ -651,10 +676,7 @@ class Builtins {
#undef DECLARE_ASM
#undef DECLARE_TF
- // Note: These are always Code objects, but to conform with
- // IterateBuiltins() above which assumes Object**'s for the callback
- // function f, we use an Object* array here.
- Object* builtins_[builtin_count];
+ Descriptor builtins_[BUILTIN_COUNT];
bool initialized_;
friend class Isolate;
« no previous file with comments | « no previous file | src/builtins/builtins.cc » ('j') | src/builtins/builtins.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698