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

Unified Diff: src/builtins.cc

Issue 435003: Patch for allowing several V8 instances in process:... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years 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/builtins.h ('k') | src/code-stubs.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/builtins.cc
===================================================================
--- src/builtins.cc (revision 3427)
+++ src/builtins.cc (working copy)
@@ -136,7 +136,7 @@
BUILTIN(ArrayCodeGeneric) {
- Counters::array_function_runtime.Increment();
+ INC_COUNTER(array_function_runtime);
JSArray* array;
if (CalledAsConstructor()) {
@@ -326,7 +326,8 @@
// TODO(428): Remove use of static variable, handle API callbacks directly.
Handle<JSFunction> function =
- Handle<JSFunction>(JSFunction::cast(Builtins::builtin_passed_function));
+ Handle<JSFunction>(JSFunction::cast(
+ v8_context()->builtins_data_.builtin_passed_function_));
if (is_construct) {
Handle<FunctionTemplateInfo> desc =
@@ -482,13 +483,7 @@
BUILTIN_END
-// TODO(1238487): This is a nasty hack. We need to improve the way we
-// call builtins considerable to get rid of this and the hairy macros
-// in builtins.cc.
-Object* Builtins::builtin_passed_function;
-
-
static void Generate_LoadIC_ArrayLength(MacroAssembler* masm) {
LoadIC::GenerateArrayLength(masm);
}
@@ -700,8 +695,13 @@
}
#endif
-Object* Builtins::builtins_[builtin_count] = { NULL, };
-const char* Builtins::names_[builtin_count] = { NULL, };
+BuiltinsData::BuiltinsData()
+ :is_initialized_(false), builtin_passed_function_(NULL) {
+ for (int i = 0; i < builtin_count; ++i) {
+ builtins_[i] = NULL;
+ names_[i] = NULL;
+ }
+}
#define DEF_ENUM_C(name) FUNCTION_ADDR(Builtin_##name),
Address Builtins::c_functions_[cfunction_count] = {
@@ -721,9 +721,9 @@
#undef DEF_JS_NAME
#undef DEF_JS_ARGC
-static bool is_initialized = false;
void Builtins::Setup(bool create_heap_objects) {
- ASSERT(!is_initialized);
+ BuiltinsData& data = v8_context()->builtins_data_;
+ ASSERT(!data.is_initialized_);
// Create a scope for the handles in the builtins.
HandleScope scope;
@@ -800,7 +800,7 @@
// Log the event and add the code to the builtins array.
LOG(CodeCreateEvent(Logger::BUILTIN_TAG,
Code::cast(code), functions[i].s_name));
- builtins_[i] = code;
+ data.builtins_[i] = code;
#ifdef ENABLE_DISASSEMBLER
if (FLAG_print_builtin_code) {
PrintF("Builtin: %s\n", functions[i].s_name);
@@ -810,32 +810,35 @@
#endif
} else {
// Deserializing. The values will be filled in during IterateBuiltins.
- builtins_[i] = NULL;
+ data.builtins_[i] = NULL;
}
- names_[i] = functions[i].s_name;
+ data.names_[i] = functions[i].s_name;
}
// Mark as initialized.
- is_initialized = true;
+ data.is_initialized_ = true;
}
void Builtins::TearDown() {
- is_initialized = false;
+ v8_context()->builtins_data_.is_initialized_ = false;
}
void Builtins::IterateBuiltins(ObjectVisitor* v) {
- v->VisitPointers(&builtins_[0], &builtins_[0] + builtin_count);
+ BuiltinsData& data = v8_context()->builtins_data_;
+ v->VisitPointers(&data.builtins_[0], &data.builtins_[0] + builtin_count);
}
const char* Builtins::Lookup(byte* pc) {
- if (is_initialized) { // may be called during initialization (disassembler!)
+ BuiltinsData& data = v8_context()->builtins_data_;
+ if (data.is_initialized_) {
+ // may be called during initialization (disassembler!)
for (int i = 0; i < builtin_count; i++) {
- Code* entry = Code::cast(builtins_[i]);
+ Code* entry = Code::cast(data.builtins_[i]);
if (entry->contains(pc)) {
- return names_[i];
+ return data.names_[i];
}
}
}
« no previous file with comments | « src/builtins.h ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698