| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 744d939878e8de462491b9e297e6e5562b162ad7..71890b7249ca9f76450748f0003edcc1bae03c36 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -300,7 +300,7 @@ class Genesis BASE_EMBEDDED {
|
| PrototypePropertyMode prototypeMode);
|
| void MakeFunctionInstancePrototypeWritable();
|
|
|
| - Handle<Map> CreateStrictModeFunctionMap(
|
| + Handle<Map> CreateStrictFunctionMap(
|
| PrototypePropertyMode prototype_mode,
|
| Handle<JSFunction> empty_function);
|
|
|
| @@ -328,8 +328,8 @@ class Genesis BASE_EMBEDDED {
|
| // 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<Map> sloppy_function_map_writable_prototype_;
|
| + Handle<Map> strict_function_map_writable_prototype_;
|
| Handle<JSFunction> throw_type_error_function;
|
|
|
| BootstrapperActive active_;
|
| @@ -474,18 +474,19 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| // can not be used as constructors.
|
| Handle<Map> function_without_prototype_map =
|
| CreateFunctionMap(DONT_ADD_PROTOTYPE);
|
| - native_context()->set_function_without_prototype_map(
|
| + native_context()->set_sloppy_function_without_prototype_map(
|
| *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.
|
| Handle<Map> function_map = CreateFunctionMap(ADD_READONLY_PROTOTYPE);
|
| - native_context()->set_function_map(*function_map);
|
| + native_context()->set_sloppy_function_map(*function_map);
|
|
|
| // The final map for functions. Writeable prototype.
|
| // This map is installed in MakeFunctionInstancePrototypeWritable.
|
| - function_map_writable_prototype_ = CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE);
|
| + sloppy_function_map_writable_prototype_ =
|
| + CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE);
|
|
|
| Factory* factory = isolate->factory();
|
|
|
| @@ -519,7 +520,7 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| Handle<String> empty_string =
|
| factory->InternalizeOneByteString(STATIC_ASCII_VECTOR("Empty"));
|
| Handle<JSFunction> empty_function =
|
| - factory->NewFunctionWithoutPrototype(empty_string, SLOPPY_MODE);
|
| + factory->NewFunctionWithoutPrototype(empty_string, SLOPPY);
|
|
|
| // --- E m p t y ---
|
| Handle<Code> code =
|
| @@ -537,10 +538,10 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| empty_function->shared()->DontAdaptArguments();
|
|
|
| // Set prototypes for the function maps.
|
| - native_context()->function_map()->set_prototype(*empty_function);
|
| - native_context()->function_without_prototype_map()->
|
| + native_context()->sloppy_function_map()->set_prototype(*empty_function);
|
| + native_context()->sloppy_function_without_prototype_map()->
|
| set_prototype(*empty_function);
|
| - function_map_writable_prototype_->set_prototype(*empty_function);
|
| + sloppy_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);
|
| @@ -604,11 +605,10 @@ Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() {
|
| Handle<String> name = factory()->InternalizeOneByteString(
|
| STATIC_ASCII_VECTOR("ThrowTypeError"));
|
| throw_type_error_function =
|
| - factory()->NewFunctionWithoutPrototype(name, SLOPPY_MODE);
|
| + factory()->NewFunctionWithoutPrototype(name, SLOPPY);
|
| Handle<Code> code(isolate()->builtins()->builtin(
|
| Builtins::kStrictModePoisonPill));
|
| - throw_type_error_function->set_map(
|
| - native_context()->function_map());
|
| + throw_type_error_function->set_map(native_context()->sloppy_function_map());
|
| throw_type_error_function->set_code(*code);
|
| throw_type_error_function->shared()->set_code(*code);
|
| throw_type_error_function->shared()->DontAdaptArguments();
|
| @@ -619,7 +619,7 @@ Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() {
|
| }
|
|
|
|
|
| -Handle<Map> Genesis::CreateStrictModeFunctionMap(
|
| +Handle<Map> Genesis::CreateStrictFunctionMap(
|
| PrototypePropertyMode prototype_mode,
|
| Handle<JSFunction> empty_function) {
|
| Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
|
| @@ -632,28 +632,27 @@ Handle<Map> Genesis::CreateStrictModeFunctionMap(
|
|
|
| void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) {
|
| // Allocate map for the prototype-less strict mode instances.
|
| - Handle<Map> strict_mode_function_without_prototype_map =
|
| - CreateStrictModeFunctionMap(DONT_ADD_PROTOTYPE, empty);
|
| - native_context()->set_strict_mode_function_without_prototype_map(
|
| - *strict_mode_function_without_prototype_map);
|
| + Handle<Map> strict_function_without_prototype_map =
|
| + CreateStrictFunctionMap(DONT_ADD_PROTOTYPE, empty);
|
| + native_context()->set_strict_function_without_prototype_map(
|
| + *strict_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);
|
| - native_context()->set_strict_mode_function_map(
|
| - *strict_mode_function_map);
|
| + Handle<Map> strict_function_map =
|
| + CreateStrictFunctionMap(ADD_READONLY_PROTOTYPE, empty);
|
| + native_context()->set_strict_function_map(*strict_function_map);
|
|
|
| // The final map for the strict mode functions. Writeable prototype.
|
| // This map is installed in MakeFunctionInstancePrototypeWritable.
|
| - strict_mode_function_map_writable_prototype_ =
|
| - CreateStrictModeFunctionMap(ADD_WRITEABLE_PROTOTYPE, empty);
|
| + strict_function_map_writable_prototype_ =
|
| + CreateStrictFunctionMap(ADD_WRITEABLE_PROTOTYPE, empty);
|
|
|
| // Complete the callbacks.
|
| - PoisonArgumentsAndCaller(strict_mode_function_without_prototype_map);
|
| - PoisonArgumentsAndCaller(strict_mode_function_map);
|
| - PoisonArgumentsAndCaller(strict_mode_function_map_writable_prototype_);
|
| + PoisonArgumentsAndCaller(strict_function_without_prototype_map);
|
| + PoisonArgumentsAndCaller(strict_function_map);
|
| + PoisonArgumentsAndCaller(strict_function_map_writable_prototype_);
|
| }
|
|
|
|
|
| @@ -1137,7 +1136,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| function->shared()->set_expected_nof_properties(2);
|
| Handle<JSObject> result = factory->NewJSObject(function);
|
|
|
| - native_context()->set_arguments_boilerplate(*result);
|
| + native_context()->set_sloppy_arguments_boilerplate(*result);
|
| // Note: length must be added as the first property and
|
| // callee must be added as the second property.
|
| CHECK_NOT_EMPTY_HANDLE(isolate,
|
| @@ -1180,7 +1179,8 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| array = factory->NewFixedArray(0);
|
| elements->set(1, *array);
|
|
|
| - Handle<Map> old_map(native_context()->arguments_boilerplate()->map());
|
| + Handle<Map> old_map(
|
| + native_context()->sloppy_arguments_boilerplate()->map());
|
| Handle<Map> new_map = factory->CopyMap(old_map);
|
| new_map->set_pre_allocated_property_fields(2);
|
| Handle<JSObject> result = factory->NewJSObjectFromMap(new_map);
|
| @@ -1211,7 +1211,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
| // Create the map. Allocate one in-object field for length.
|
| Handle<Map> map = factory->NewMap(JS_OBJECT_TYPE,
|
| - Heap::kArgumentsObjectSizeStrict);
|
| + Heap::kStrictArgumentsObjectSize);
|
| // Create the descriptor array for the arguments object.
|
| Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(0, 3);
|
| DescriptorArray::WhitenessWitness witness(*descriptors);
|
| @@ -1242,11 +1242,11 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
| // Copy constructor from the sloppy arguments boilerplate.
|
| map->set_constructor(
|
| - native_context()->arguments_boilerplate()->map()->constructor());
|
| + native_context()->sloppy_arguments_boilerplate()->map()->constructor());
|
|
|
| // Allocate the arguments boilerplate object.
|
| Handle<JSObject> result = factory->NewJSObjectFromMap(map);
|
| - native_context()->set_strict_mode_arguments_boilerplate(*result);
|
| + native_context()->set_strict_arguments_boilerplate(*result);
|
|
|
| // Add length property only for strict mode boilerplate.
|
| CHECK_NOT_EMPTY_HANDLE(isolate,
|
| @@ -1389,18 +1389,19 @@ void Genesis::InitializeExperimentalGlobal() {
|
|
|
| // Create maps for generator functions and their prototypes. Store those
|
| // maps in the native context.
|
| - Handle<Map> function_map(native_context()->function_map());
|
| + Handle<Map> function_map(native_context()->sloppy_function_map());
|
| Handle<Map> generator_function_map = factory()->CopyMap(function_map);
|
| generator_function_map->set_prototype(*generator_function_prototype);
|
| - native_context()->set_generator_function_map(*generator_function_map);
|
| + native_context()->set_sloppy_generator_function_map(
|
| + *generator_function_map);
|
|
|
| Handle<Map> strict_mode_function_map(
|
| - native_context()->strict_mode_function_map());
|
| + native_context()->strict_function_map());
|
| Handle<Map> strict_mode_generator_function_map = factory()->CopyMap(
|
| strict_mode_function_map);
|
| strict_mode_generator_function_map->set_prototype(
|
| *generator_function_prototype);
|
| - native_context()->set_strict_mode_generator_function_map(
|
| + native_context()->set_strict_generator_function_map(
|
| *strict_mode_generator_function_map);
|
|
|
| Handle<Map> object_map(native_context()->object_function()->initial_map());
|
| @@ -2559,13 +2560,14 @@ 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_map_writable_prototype_.is_null());
|
| - ASSERT(!strict_mode_function_map_writable_prototype_.is_null());
|
| + ASSERT(!sloppy_function_map_writable_prototype_.is_null());
|
| + ASSERT(!strict_function_map_writable_prototype_.is_null());
|
|
|
| // Replace function instance maps to make prototype writable.
|
| - native_context()->set_function_map(*function_map_writable_prototype_);
|
| - native_context()->set_strict_mode_function_map(
|
| - *strict_mode_function_map_writable_prototype_);
|
| + native_context()->set_sloppy_function_map(
|
| + *sloppy_function_map_writable_prototype_);
|
| + native_context()->set_strict_function_map(
|
| + *strict_function_map_writable_prototype_);
|
| }
|
|
|
|
|
|
|