Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index b0d3a5e50eedb2d662139642b2af315e3152be94..dd77c14e3f9239ca678ca0b2282033f09ee5a312 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -281,12 +281,12 @@ class Genesis BASE_EMBEDDED { |
Handle<Context> result_; |
Handle<Context> native_context_; |
- // Function instance maps. Function literal maps are created initially with |
- // a read only prototype for the processing of JS builtins. Later the function |
- // instance maps are replaced in order to make prototype writable. |
- // These are the final, writable prototype, maps. |
- Handle<Map> function_instance_map_writable_prototype_; |
- Handle<Map> strict_mode_function_instance_map_writable_prototype_; |
+ // Function maps. Function maps are created initially with a read only |
+ // prototype for the processing of JS builtins. Later the function maps are |
+ // replaced in order to make prototype writable. These are the final, writable |
+ // prototype, maps. |
+ Handle<Map> function_map_writable_prototype_; |
+ Handle<Map> strict_mode_function_map_writable_prototype_; |
Handle<JSFunction> throw_type_error_function; |
BootstrapperActive active_; |
@@ -437,12 +437,6 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) { |
// Allocate the map for function instances. Maps are allocated first and their |
// prototypes patched later, once empty function is created. |
- // Please note that the prototype property for function instances must be |
- // writable. |
- Handle<Map> function_instance_map = |
- CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE); |
- native_context()->set_function_instance_map(*function_instance_map); |
- |
// Functions with this map will not have a 'prototype' property, and |
// can not be used as constructors. |
Handle<Map> function_without_prototype_map = |
@@ -458,8 +452,7 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) { |
// The final map for functions. Writeable prototype. |
// This map is installed in MakeFunctionInstancePrototypeWritable. |
- function_instance_map_writable_prototype_ = |
- CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE); |
+ function_map_writable_prototype_ = CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE); |
Factory* factory = isolate->factory(); |
Heap* heap = isolate->heap(); |
@@ -509,10 +502,9 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) { |
// Set prototypes for the function maps. |
native_context()->function_map()->set_prototype(*empty_function); |
- native_context()->function_instance_map()->set_prototype(*empty_function); |
native_context()->function_without_prototype_map()-> |
set_prototype(*empty_function); |
- function_instance_map_writable_prototype_->set_prototype(*empty_function); |
+ function_map_writable_prototype_->set_prototype(*empty_function); |
// Allocate the function map first and then patch the prototype later |
Handle<Map> empty_function_map = CreateFunctionMap(DONT_ADD_PROTOTYPE); |
@@ -601,12 +593,6 @@ Handle<Map> Genesis::CreateStrictModeFunctionMap( |
void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) { |
- // Allocate map for the strict mode function instances. |
- Handle<Map> strict_mode_function_instance_map = |
- CreateStrictModeFunctionMap(ADD_WRITEABLE_PROTOTYPE, empty); |
- native_context()->set_strict_mode_function_instance_map( |
- *strict_mode_function_instance_map); |
- |
// Allocate map for the prototype-less strict mode instances. |
Handle<Map> strict_mode_function_without_prototype_map = |
CreateStrictModeFunctionMap(DONT_ADD_PROTOTYPE, empty); |
@@ -623,15 +609,13 @@ void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) { |
// The final map for the strict mode functions. Writeable prototype. |
// This map is installed in MakeFunctionInstancePrototypeWritable. |
- strict_mode_function_instance_map_writable_prototype_ = |
+ strict_mode_function_map_writable_prototype_ = |
CreateStrictModeFunctionMap(ADD_WRITEABLE_PROTOTYPE, empty); |
// Complete the callbacks. |
- PoisonArgumentsAndCaller(strict_mode_function_instance_map); |
PoisonArgumentsAndCaller(strict_mode_function_without_prototype_map); |
PoisonArgumentsAndCaller(strict_mode_function_map); |
- PoisonArgumentsAndCaller( |
- strict_mode_function_instance_map_writable_prototype_); |
+ PoisonArgumentsAndCaller(strict_mode_function_map_writable_prototype_); |
} |
@@ -2522,14 +2506,13 @@ void Genesis::MakeFunctionInstancePrototypeWritable() { |
// The maps with writable prototype are created in CreateEmptyFunction |
// and CreateStrictModeFunctionMaps respectively. Initially the maps are |
// created with read-only prototype for JS builtins processing. |
- ASSERT(!function_instance_map_writable_prototype_.is_null()); |
- ASSERT(!strict_mode_function_instance_map_writable_prototype_.is_null()); |
+ ASSERT(!function_map_writable_prototype_.is_null()); |
+ ASSERT(!strict_mode_function_map_writable_prototype_.is_null()); |
// Replace function instance maps to make prototype writable. |
- native_context()->set_function_map( |
- *function_instance_map_writable_prototype_); |
+ native_context()->set_function_map(*function_map_writable_prototype_); |
native_context()->set_strict_mode_function_map( |
- *strict_mode_function_instance_map_writable_prototype_); |
+ *strict_mode_function_map_writable_prototype_); |
} |