Index: src/bootstrapper.cc |
=================================================================== |
--- src/bootstrapper.cc (revision 7417) |
+++ src/bootstrapper.cc (working copy) |
@@ -400,19 +400,22 @@ |
// Please note that the prototype property for function instances must be |
// writable. |
- global_context()->set_function_instance_map( |
- *CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE)); |
+ Handle<Map> function_instance_map = |
+ CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE); |
+ global_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 = |
+ CreateFunctionMap(DONT_ADD_PROTOTYPE); |
global_context()->set_function_without_prototype_map( |
- *CreateFunctionMap(DONT_ADD_PROTOTYPE)); |
+ *function_without_prototype_map); |
// Allocate the function map. This map is temporary, used only for processing |
// of builtins. |
// Later the map is replaced with writable prototype map, allocated below. |
- global_context()->set_function_map( |
- *CreateFunctionMap(ADD_READONLY_PROTOTYPE)); |
+ Handle<Map> function_map = CreateFunctionMap(ADD_READONLY_PROTOTYPE); |
+ global_context()->set_function_map(*function_map); |
// The final map for functions. Writeable prototype. |
// This map is installed in MakeFunctionInstancePrototypeWritable. |
@@ -474,8 +477,6 @@ |
function_instance_map_writable_prototype_->set_prototype(*empty_function); |
// Allocate the function map first and then patch the prototype later |
- Handle<Map> function_without_prototype_map( |
- global_context()->function_without_prototype_map()); |
Handle<Map> empty_fm = factory->CopyMapDropDescriptors( |
function_without_prototype_map); |
empty_fm->set_instance_descriptors( |
@@ -578,21 +579,27 @@ |
Handle<FixedArray> caller = factory->NewFixedArray(2, TENURED); |
// Allocate map for the strict mode function instances. |
+ Handle<Map> strict_mode_function_instance_map = |
+ CreateStrictModeFunctionMap( |
+ ADD_WRITEABLE_PROTOTYPE, empty, arguments, caller); |
global_context()->set_strict_mode_function_instance_map( |
- *CreateStrictModeFunctionMap( |
- ADD_WRITEABLE_PROTOTYPE, empty, arguments, caller)); |
+ *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, arguments, caller); |
global_context()->set_strict_mode_function_without_prototype_map( |
- *CreateStrictModeFunctionMap( |
- DONT_ADD_PROTOTYPE, empty, arguments, caller)); |
+ *strict_mode_function_without_prototype_map); |
// Allocate map for the strict mode functions. This map is temporary, used |
// only for processing of builtins. |
// Later the map is replaced with writable prototype map, allocated below. |
+ Handle<Map> strict_mode_function_map = |
+ CreateStrictModeFunctionMap( |
+ ADD_READONLY_PROTOTYPE, empty, arguments, caller); |
global_context()->set_strict_mode_function_map( |
- *CreateStrictModeFunctionMap( |
- ADD_READONLY_PROTOTYPE, empty, arguments, caller)); |
+ *strict_mode_function_map); |
// The final map for the strict mode functions. Writeable prototype. |
// This map is installed in MakeFunctionInstancePrototypeWritable. |
@@ -1239,10 +1246,11 @@ |
} |
-#define INSTALL_NATIVE(Type, name, var) \ |
- Handle<String> var##_name = factory->LookupAsciiSymbol(name); \ |
- global_context()->set_##var(Type::cast( \ |
- global_context()->builtins()->GetPropertyNoExceptionThrown(*var##_name))); |
+#define INSTALL_NATIVE(Type, name, var) \ |
+ Handle<String> var##_name = factory->LookupAsciiSymbol(name); \ |
+ Object* var##_native = \ |
+ global_context()->builtins()->GetPropertyNoExceptionThrown(*var##_name); \ |
+ global_context()->set_##var(Type::cast(var##_native)); |
void Genesis::InstallNativeFunctions() { |