Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index 1bbfcb72d7647310babd59942eb19c9a8c247324..00b8a9b50300aea7c7f608b74d6a621c8737cb1e 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -245,15 +245,6 @@ class Genesis BASE_EMBEDDED { |
bool make_prototype_enumerable = false); |
void MakeFunctionInstancePrototypeWritable(); |
- Handle<JSFunction> MakeFunctionForBuiltin(Handle<String> name, |
- Handle<Code> code); |
- |
- void OverrideWithSpecialFunction(Handle<JSObject> prototype, |
- const char* name, |
- Handle<Code> code); |
- |
- void InstallSpecialFunctions(); |
- |
static bool CompileBuiltin(int index); |
static bool CompileNative(Vector<const char> name, Handle<String> source); |
static bool CompileScriptCached(Vector<const char> name, |
@@ -1458,73 +1449,6 @@ void Genesis::MakeFunctionInstancePrototypeWritable() { |
} |
-Handle<JSFunction> Genesis::MakeFunctionForBuiltin(Handle<String> name, |
- Handle<Code> code) { |
- Handle<JSFunction> optimized = Factory::NewFunction(name, |
- JS_OBJECT_TYPE, |
- JSObject::kHeaderSize, |
- code, |
- false); |
- optimized->shared()->DontAdaptArguments(); |
- return optimized; |
-} |
- |
- |
-void Genesis::OverrideWithSpecialFunction(Handle<JSObject> prototype, |
- const char* name, |
- Handle<Code> code) { |
- Handle<String> key = Factory::LookupAsciiSymbol(name); |
- Handle<Object> old_value = GetProperty(prototype, key); |
- // Check if the function is present in the first place. |
- // For example, FLAG_natives_file could affect if Array functions |
- // are installed at all. |
- if (!old_value->IsJSFunction()) return; |
- int old_length = Handle<JSFunction>::cast(old_value)->shared()->length(); |
- Handle<JSFunction> optimized = MakeFunctionForBuiltin(key, code); |
- optimized->shared()->set_length(old_length); |
- SetProperty(prototype, key, optimized, NONE); |
-} |
- |
- |
-void Genesis::InstallSpecialFunctions() { |
- HandleScope scope; |
- Handle<JSObject> global = Handle<JSObject>(global_context()->global()); |
- // Add special versions for some Array.prototype functions. |
- Handle<JSFunction> function = |
- Handle<JSFunction>( |
- JSFunction::cast(global->GetProperty(Heap::Array_symbol()))); |
- Handle<JSObject> visible_prototype = |
- Handle<JSObject>(JSObject::cast(function->prototype())); |
- // Remember to put those specializations on the hidden prototype if present. |
- Handle<JSObject> special_prototype; |
- Handle<Object> superproto(visible_prototype->GetPrototype()); |
- if (superproto->IsJSObject() && |
- JSObject::cast(*superproto)->map()->is_hidden_prototype()) { |
- special_prototype = Handle<JSObject>::cast(superproto); |
- } else { |
- special_prototype = visible_prototype; |
- } |
- OverrideWithSpecialFunction( |
- special_prototype, "pop", |
- Handle<Code>(Builtins::builtin(Builtins::ArrayPop))); |
- OverrideWithSpecialFunction( |
- special_prototype, "push", |
- Handle<Code>(Builtins::builtin(Builtins::ArrayPush))); |
- OverrideWithSpecialFunction( |
- special_prototype, "shift", |
- Handle<Code>(Builtins::builtin(Builtins::ArrayShift))); |
- OverrideWithSpecialFunction( |
- special_prototype, "unshift", |
- Handle<Code>(Builtins::builtin(Builtins::ArrayUnshift))); |
- OverrideWithSpecialFunction( |
- special_prototype, "slice", |
- Handle<Code>(Builtins::builtin(Builtins::ArraySlice))); |
- OverrideWithSpecialFunction( |
- special_prototype, "splice", |
- Handle<Code>(Builtins::builtin(Builtins::ArraySplice))); |
-} |
- |
- |
Genesis::Genesis(Handle<Object> global_object, |
v8::Handle<v8::ObjectTemplate> global_template, |
v8::ExtensionConfiguration* extensions) { |
@@ -1548,7 +1472,6 @@ Genesis::Genesis(Handle<Object> global_object, |
if (!InstallNatives()) return; |
MakeFunctionInstancePrototypeWritable(); |
- InstallSpecialFunctions(); |
if (!ConfigureGlobalObjects(global_template)) return; |