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

Side by Side Diff: src/bootstrapper.cc

Issue 2595893002: [runtime] Remove specific Descriptor subclasses and add respective factory methods instead. (Closed)
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « no previous file | src/factory.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/bootstrapper.h" 5 #include "src/bootstrapper.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api-natives.h" 8 #include "src/api-natives.h"
9 #include "src/base/ieee754.h" 9 #include "src/base/ieee754.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 proxy_constructor_map->set_is_constructor(true); 827 proxy_constructor_map->set_is_constructor(true);
828 native_context()->set_proxy_constructor_map(*proxy_constructor_map); 828 native_context()->set_proxy_constructor_map(*proxy_constructor_map);
829 } 829 }
830 830
831 static void ReplaceAccessors(Handle<Map> map, 831 static void ReplaceAccessors(Handle<Map> map,
832 Handle<String> name, 832 Handle<String> name,
833 PropertyAttributes attributes, 833 PropertyAttributes attributes,
834 Handle<AccessorPair> accessor_pair) { 834 Handle<AccessorPair> accessor_pair) {
835 DescriptorArray* descriptors = map->instance_descriptors(); 835 DescriptorArray* descriptors = map->instance_descriptors();
836 int idx = descriptors->SearchWithCache(map->GetIsolate(), *name, *map); 836 int idx = descriptors->SearchWithCache(map->GetIsolate(), *name, *map);
837 AccessorConstantDescriptor descriptor(name, accessor_pair, attributes); 837 Descriptor d = Descriptor::AccessorConstant(name, accessor_pair, attributes);
838 descriptors->Replace(idx, &descriptor); 838 descriptors->Replace(idx, &d);
839 } 839 }
840 840
841 void Genesis::AddRestrictedFunctionProperties(Handle<JSFunction> empty) { 841 void Genesis::AddRestrictedFunctionProperties(Handle<JSFunction> empty) {
842 PropertyAttributes rw_attribs = static_cast<PropertyAttributes>(DONT_ENUM); 842 PropertyAttributes rw_attribs = static_cast<PropertyAttributes>(DONT_ENUM);
843 Handle<JSFunction> thrower = GetRestrictedFunctionPropertiesThrower(); 843 Handle<JSFunction> thrower = GetRestrictedFunctionPropertiesThrower();
844 Handle<AccessorPair> accessors = factory()->NewAccessorPair(); 844 Handle<AccessorPair> accessors = factory()->NewAccessorPair();
845 accessors->set_getter(*thrower); 845 accessors->set_getter(*thrower);
846 accessors->set_setter(*thrower); 846 accessors->set_setter(*thrower);
847 847
848 Handle<Map> map(empty->map()); 848 Handle<Map> map(empty->map());
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 Accessors::FunctionSetPrototype(error_fun, prototype).Assert(); 1100 Accessors::FunctionSetPrototype(error_fun, prototype).Assert();
1101 } 1101 }
1102 1102
1103 Handle<Map> initial_map(error_fun->initial_map()); 1103 Handle<Map> initial_map(error_fun->initial_map());
1104 Map::EnsureDescriptorSlack(initial_map, 1); 1104 Map::EnsureDescriptorSlack(initial_map, 1);
1105 1105
1106 PropertyAttributes attribs = DONT_ENUM; 1106 PropertyAttributes attribs = DONT_ENUM;
1107 Handle<AccessorInfo> error_stack = 1107 Handle<AccessorInfo> error_stack =
1108 Accessors::ErrorStackInfo(isolate, attribs); 1108 Accessors::ErrorStackInfo(isolate, attribs);
1109 { 1109 {
1110 AccessorConstantDescriptor d(Handle<Name>(Name::cast(error_stack->name())), 1110 Descriptor d = Descriptor::AccessorConstant(
1111 error_stack, attribs); 1111 Handle<Name>(Name::cast(error_stack->name())), error_stack, attribs);
1112 initial_map->AppendDescriptor(&d); 1112 initial_map->AppendDescriptor(&d);
1113 } 1113 }
1114 } 1114 }
1115 1115
1116 static void InstallMakeError(Isolate* isolate, Handle<Code> code, 1116 static void InstallMakeError(Isolate* isolate, Handle<Code> code,
1117 int context_index) { 1117 int context_index) {
1118 Handle<JSFunction> function = 1118 Handle<JSFunction> function =
1119 isolate->factory()->NewFunction(isolate->factory()->empty_string(), code, 1119 isolate->factory()->NewFunction(isolate->factory()->empty_string(), code,
1120 JS_OBJECT_TYPE, JSObject::kHeaderSize); 1120 JS_OBJECT_TYPE, JSObject::kHeaderSize);
1121 function->shared()->DontAdaptArguments(); 1121 function->shared()->DontAdaptArguments();
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
1311 // HGraphBuilder::JSArrayBuilder::EmitMapCode() 1311 // HGraphBuilder::JSArrayBuilder::EmitMapCode()
1312 DCHECK(initial_map->elements_kind() == GetInitialFastElementsKind()); 1312 DCHECK(initial_map->elements_kind() == GetInitialFastElementsKind());
1313 Map::EnsureDescriptorSlack(initial_map, 1); 1313 Map::EnsureDescriptorSlack(initial_map, 1);
1314 1314
1315 PropertyAttributes attribs = static_cast<PropertyAttributes>( 1315 PropertyAttributes attribs = static_cast<PropertyAttributes>(
1316 DONT_ENUM | DONT_DELETE); 1316 DONT_ENUM | DONT_DELETE);
1317 1317
1318 Handle<AccessorInfo> array_length = 1318 Handle<AccessorInfo> array_length =
1319 Accessors::ArrayLengthInfo(isolate, attribs); 1319 Accessors::ArrayLengthInfo(isolate, attribs);
1320 { // Add length. 1320 { // Add length.
1321 AccessorConstantDescriptor d( 1321 Descriptor d = Descriptor::AccessorConstant(
1322 Handle<Name>(Name::cast(array_length->name())), array_length, 1322 Handle<Name>(Name::cast(array_length->name())), array_length,
1323 attribs); 1323 attribs);
1324 initial_map->AppendDescriptor(&d); 1324 initial_map->AppendDescriptor(&d);
1325 } 1325 }
1326 1326
1327 InstallWithIntrinsicDefaultProto(isolate, array_function, 1327 InstallWithIntrinsicDefaultProto(isolate, array_function,
1328 Context::ARRAY_FUNCTION_INDEX); 1328 Context::ARRAY_FUNCTION_INDEX);
1329 1329
1330 // Cache the array maps, needed by ArrayConstructorStub 1330 // Cache the array maps, needed by ArrayConstructorStub
1331 CacheInitialJSArrayMaps(native_context(), initial_map); 1331 CacheInitialJSArrayMaps(native_context(), initial_map);
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 Handle<Map>(native_context()->string_function()->initial_map()); 1535 Handle<Map>(native_context()->string_function()->initial_map());
1536 string_map->set_elements_kind(FAST_STRING_WRAPPER_ELEMENTS); 1536 string_map->set_elements_kind(FAST_STRING_WRAPPER_ELEMENTS);
1537 Map::EnsureDescriptorSlack(string_map, 1); 1537 Map::EnsureDescriptorSlack(string_map, 1);
1538 1538
1539 PropertyAttributes attribs = static_cast<PropertyAttributes>( 1539 PropertyAttributes attribs = static_cast<PropertyAttributes>(
1540 DONT_ENUM | DONT_DELETE | READ_ONLY); 1540 DONT_ENUM | DONT_DELETE | READ_ONLY);
1541 Handle<AccessorInfo> string_length( 1541 Handle<AccessorInfo> string_length(
1542 Accessors::StringLengthInfo(isolate, attribs)); 1542 Accessors::StringLengthInfo(isolate, attribs));
1543 1543
1544 { // Add length. 1544 { // Add length.
1545 AccessorConstantDescriptor d(factory->length_string(), string_length, 1545 Descriptor d = Descriptor::AccessorConstant(factory->length_string(),
1546 attribs); 1546 string_length, attribs);
1547 string_map->AppendDescriptor(&d); 1547 string_map->AppendDescriptor(&d);
1548 } 1548 }
1549 1549
1550 // Install the String.fromCharCode function. 1550 // Install the String.fromCharCode function.
1551 SimpleInstallFunction(string_fun, "fromCharCode", 1551 SimpleInstallFunction(string_fun, "fromCharCode",
1552 Builtins::kStringFromCharCode, 1, false); 1552 Builtins::kStringFromCharCode, 1, false);
1553 1553
1554 // Install the String.fromCodePoint function. 1554 // Install the String.fromCodePoint function.
1555 SimpleInstallFunction(string_fun, "fromCodePoint", 1555 SimpleInstallFunction(string_fun, "fromCodePoint",
1556 Builtins::kStringFromCodePoint, 1, false); 1556 Builtins::kStringFromCodePoint, 1, false);
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
2136 DCHECK(regexp_fun->has_initial_map()); 2136 DCHECK(regexp_fun->has_initial_map());
2137 Handle<Map> initial_map(regexp_fun->initial_map()); 2137 Handle<Map> initial_map(regexp_fun->initial_map());
2138 2138
2139 DCHECK_EQ(0, initial_map->GetInObjectProperties()); 2139 DCHECK_EQ(0, initial_map->GetInObjectProperties());
2140 2140
2141 Map::EnsureDescriptorSlack(initial_map, 1); 2141 Map::EnsureDescriptorSlack(initial_map, 1);
2142 2142
2143 // ECMA-262, section 15.10.7.5. 2143 // ECMA-262, section 15.10.7.5.
2144 PropertyAttributes writable = 2144 PropertyAttributes writable =
2145 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE); 2145 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE);
2146 DataDescriptor field(factory->lastIndex_string(), 2146 Descriptor d = Descriptor::DataField(factory->lastIndex_string(),
2147 JSRegExp::kLastIndexFieldIndex, writable, 2147 JSRegExp::kLastIndexFieldIndex,
2148 Representation::Tagged()); 2148 writable, Representation::Tagged());
2149 initial_map->AppendDescriptor(&field); 2149 initial_map->AppendDescriptor(&d);
2150 2150
2151 static const int num_fields = JSRegExp::kInObjectFieldCount; 2151 static const int num_fields = JSRegExp::kInObjectFieldCount;
2152 initial_map->SetInObjectProperties(num_fields); 2152 initial_map->SetInObjectProperties(num_fields);
2153 initial_map->set_unused_property_fields(0); 2153 initial_map->set_unused_property_fields(0);
2154 initial_map->set_instance_size(initial_map->instance_size() + 2154 initial_map->set_instance_size(initial_map->instance_size() +
2155 num_fields * kPointerSize); 2155 num_fields * kPointerSize);
2156 2156
2157 { // Internal: RegExpInternalMatch 2157 { // Internal: RegExpInternalMatch
2158 Handle<JSFunction> function = 2158 Handle<JSFunction> function =
2159 factory->NewFunction(isolate->factory()->empty_string(), 2159 factory->NewFunction(isolate->factory()->empty_string(),
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
2481 { // -- J S M o d u l e N a m e s p a c e 2481 { // -- J S M o d u l e N a m e s p a c e
2482 Handle<Map> map = 2482 Handle<Map> map =
2483 factory->NewMap(JS_MODULE_NAMESPACE_TYPE, JSModuleNamespace::kSize); 2483 factory->NewMap(JS_MODULE_NAMESPACE_TYPE, JSModuleNamespace::kSize);
2484 Map::SetPrototype(map, isolate->factory()->null_value()); 2484 Map::SetPrototype(map, isolate->factory()->null_value());
2485 Map::EnsureDescriptorSlack(map, 1); 2485 Map::EnsureDescriptorSlack(map, 1);
2486 native_context()->set_js_module_namespace_map(*map); 2486 native_context()->set_js_module_namespace_map(*map);
2487 2487
2488 { // Install @@toStringTag. 2488 { // Install @@toStringTag.
2489 PropertyAttributes attribs = 2489 PropertyAttributes attribs =
2490 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); 2490 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY);
2491 DataConstantDescriptor d(factory->to_string_tag_symbol(), 2491 Descriptor d = Descriptor::DataConstant(
2492 factory->NewStringFromAsciiChecked("Module"), 2492 factory->to_string_tag_symbol(),
2493 attribs); 2493 factory->NewStringFromAsciiChecked("Module"), attribs);
2494 map->AppendDescriptor(&d); 2494 map->AppendDescriptor(&d);
2495 } 2495 }
2496 } 2496 }
2497 2497
2498 { // -- I t e r a t o r R e s u l t 2498 { // -- I t e r a t o r R e s u l t
2499 Handle<Map> map = 2499 Handle<Map> map =
2500 factory->NewMap(JS_OBJECT_TYPE, JSIteratorResult::kSize); 2500 factory->NewMap(JS_OBJECT_TYPE, JSIteratorResult::kSize);
2501 Map::SetPrototype(map, isolate->initial_object_prototype()); 2501 Map::SetPrototype(map, isolate->initial_object_prototype());
2502 Map::EnsureDescriptorSlack(map, 2); 2502 Map::EnsureDescriptorSlack(map, 2);
2503 2503
2504 { // value 2504 { // value
2505 DataDescriptor d(factory->value_string(), JSIteratorResult::kValueIndex, 2505 Descriptor d = Descriptor::DataField(factory->value_string(),
2506 NONE, Representation::Tagged()); 2506 JSIteratorResult::kValueIndex, NONE,
2507 Representation::Tagged());
2507 map->AppendDescriptor(&d); 2508 map->AppendDescriptor(&d);
2508 } 2509 }
2509 2510
2510 { // done 2511 { // done
2511 DataDescriptor d(factory->done_string(), JSIteratorResult::kDoneIndex, 2512 Descriptor d = Descriptor::DataField(factory->done_string(),
2512 NONE, Representation::Tagged()); 2513 JSIteratorResult::kDoneIndex, NONE,
2514 Representation::Tagged());
2513 map->AppendDescriptor(&d); 2515 map->AppendDescriptor(&d);
2514 } 2516 }
2515 2517
2516 map->SetConstructor(native_context()->object_function()); 2518 map->SetConstructor(native_context()->object_function());
2517 map->SetInObjectProperties(2); 2519 map->SetInObjectProperties(2);
2518 native_context()->set_iterator_result_map(*map); 2520 native_context()->set_iterator_result_map(*map);
2519 } 2521 }
2520 2522
2521 { // -- W e a k M a p 2523 { // -- W e a k M a p
2522 Handle<JSFunction> js_weak_map_fun = InstallFunction( 2524 Handle<JSFunction> js_weak_map_fun = InstallFunction(
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
2608 map->set_is_callable(); 2610 map->set_is_callable();
2609 Map::SetPrototype(map, empty_function); 2611 Map::SetPrototype(map, empty_function);
2610 2612
2611 PropertyAttributes roc_attribs = 2613 PropertyAttributes roc_attribs =
2612 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); 2614 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY);
2613 Map::EnsureDescriptorSlack(map, 2); 2615 Map::EnsureDescriptorSlack(map, 2);
2614 2616
2615 Handle<AccessorInfo> bound_length = 2617 Handle<AccessorInfo> bound_length =
2616 Accessors::BoundFunctionLengthInfo(isolate, roc_attribs); 2618 Accessors::BoundFunctionLengthInfo(isolate, roc_attribs);
2617 { // length 2619 { // length
2618 AccessorConstantDescriptor d(factory->length_string(), bound_length, 2620 Descriptor d = Descriptor::AccessorConstant(factory->length_string(),
2619 roc_attribs); 2621 bound_length, roc_attribs);
2620 map->AppendDescriptor(&d); 2622 map->AppendDescriptor(&d);
2621 } 2623 }
2622 Handle<AccessorInfo> bound_name = 2624 Handle<AccessorInfo> bound_name =
2623 Accessors::BoundFunctionNameInfo(isolate, roc_attribs); 2625 Accessors::BoundFunctionNameInfo(isolate, roc_attribs);
2624 { // length 2626 { // name
2625 AccessorConstantDescriptor d(factory->name_string(), bound_name, 2627 Descriptor d = Descriptor::AccessorConstant(factory->name_string(),
2626 roc_attribs); 2628 bound_name, roc_attribs);
2627 map->AppendDescriptor(&d); 2629 map->AppendDescriptor(&d);
2628 } 2630 }
2629 map->SetInObjectProperties(0); 2631 map->SetInObjectProperties(0);
2630 native_context()->set_bound_function_without_constructor_map(*map); 2632 native_context()->set_bound_function_without_constructor_map(*map);
2631 2633
2632 map = Map::Copy(map, "IsConstructor"); 2634 map = Map::Copy(map, "IsConstructor");
2633 map->set_is_constructor(true); 2635 map->set_is_constructor(true);
2634 native_context()->set_bound_function_with_constructor_map(*map); 2636 native_context()->set_bound_function_with_constructor_map(*map);
2635 } 2637 }
2636 2638
2637 { // --- sloppy arguments map 2639 { // --- sloppy arguments map
2638 // Make sure we can recognize argument objects at runtime. 2640 // Make sure we can recognize argument objects at runtime.
2639 // This is done by introducing an anonymous function with 2641 // This is done by introducing an anonymous function with
2640 // class_name equals 'Arguments'. 2642 // class_name equals 'Arguments'.
2641 Handle<String> arguments_string = factory->Arguments_string(); 2643 Handle<String> arguments_string = factory->Arguments_string();
2642 Handle<Code> code = isolate->builtins()->Illegal(); 2644 Handle<Code> code = isolate->builtins()->Illegal();
2643 Handle<JSFunction> function = factory->NewFunctionWithoutPrototype( 2645 Handle<JSFunction> function = factory->NewFunctionWithoutPrototype(
2644 arguments_string, code); 2646 arguments_string, code);
2645 function->shared()->set_instance_class_name(*arguments_string); 2647 function->shared()->set_instance_class_name(*arguments_string);
2646 2648
2647 Handle<Map> map = factory->NewMap( 2649 Handle<Map> map = factory->NewMap(
2648 JS_ARGUMENTS_TYPE, JSSloppyArgumentsObject::kSize, FAST_ELEMENTS); 2650 JS_ARGUMENTS_TYPE, JSSloppyArgumentsObject::kSize, FAST_ELEMENTS);
2649 // Create the descriptor array for the arguments object. 2651 // Create the descriptor array for the arguments object.
2650 Map::EnsureDescriptorSlack(map, 2); 2652 Map::EnsureDescriptorSlack(map, 2);
2651 2653
2652 { // length 2654 { // length
2653 DataDescriptor d(factory->length_string(), 2655 Descriptor d = Descriptor::DataField(
2654 JSSloppyArgumentsObject::kLengthIndex, DONT_ENUM, 2656 factory->length_string(), JSSloppyArgumentsObject::kLengthIndex,
2655 Representation::Tagged()); 2657 DONT_ENUM, Representation::Tagged());
2656 map->AppendDescriptor(&d); 2658 map->AppendDescriptor(&d);
2657 } 2659 }
2658 { // callee 2660 { // callee
2659 DataDescriptor d(factory->callee_string(), 2661 Descriptor d = Descriptor::DataField(
2660 JSSloppyArgumentsObject::kCalleeIndex, DONT_ENUM, 2662 factory->callee_string(), JSSloppyArgumentsObject::kCalleeIndex,
2661 Representation::Tagged()); 2663 DONT_ENUM, Representation::Tagged());
2662 map->AppendDescriptor(&d); 2664 map->AppendDescriptor(&d);
2663 } 2665 }
2664 // @@iterator method is added later. 2666 // @@iterator method is added later.
2665 2667
2666 map->SetInObjectProperties(2); 2668 map->SetInObjectProperties(2);
2667 native_context()->set_sloppy_arguments_map(*map); 2669 native_context()->set_sloppy_arguments_map(*map);
2668 2670
2669 DCHECK(!function->has_initial_map()); 2671 DCHECK(!function->has_initial_map());
2670 JSFunction::SetInitialMap(function, map, 2672 JSFunction::SetInitialMap(function, map,
2671 isolate->initial_object_prototype()); 2673 isolate->initial_object_prototype());
(...skipping 28 matching lines...) Expand all
2700 callee->set_getter(*poison); 2702 callee->set_getter(*poison);
2701 callee->set_setter(*poison); 2703 callee->set_setter(*poison);
2702 2704
2703 // Create the map. Allocate one in-object field for length. 2705 // Create the map. Allocate one in-object field for length.
2704 Handle<Map> map = factory->NewMap( 2706 Handle<Map> map = factory->NewMap(
2705 JS_ARGUMENTS_TYPE, JSStrictArgumentsObject::kSize, FAST_ELEMENTS); 2707 JS_ARGUMENTS_TYPE, JSStrictArgumentsObject::kSize, FAST_ELEMENTS);
2706 // Create the descriptor array for the arguments object. 2708 // Create the descriptor array for the arguments object.
2707 Map::EnsureDescriptorSlack(map, 2); 2709 Map::EnsureDescriptorSlack(map, 2);
2708 2710
2709 { // length 2711 { // length
2710 DataDescriptor d(factory->length_string(), 2712 Descriptor d = Descriptor::DataField(
2711 JSStrictArgumentsObject::kLengthIndex, DONT_ENUM, 2713 factory->length_string(), JSStrictArgumentsObject::kLengthIndex,
2712 Representation::Tagged()); 2714 DONT_ENUM, Representation::Tagged());
2713 map->AppendDescriptor(&d); 2715 map->AppendDescriptor(&d);
2714 } 2716 }
2715 { // callee 2717 { // callee
2716 AccessorConstantDescriptor d(factory->callee_string(), callee, 2718 Descriptor d = Descriptor::AccessorConstant(factory->callee_string(),
2717 attributes); 2719 callee, attributes);
2718 map->AppendDescriptor(&d); 2720 map->AppendDescriptor(&d);
2719 } 2721 }
2720 // @@iterator method is added later. 2722 // @@iterator method is added later.
2721 2723
2722 DCHECK_EQ(native_context()->object_function()->prototype(), 2724 DCHECK_EQ(native_context()->object_function()->prototype(),
2723 *isolate->initial_object_prototype()); 2725 *isolate->initial_object_prototype());
2724 Map::SetPrototype(map, isolate->initial_object_prototype()); 2726 Map::SetPrototype(map, isolate->initial_object_prototype());
2725 map->SetInObjectProperties(1); 2727 map->SetInObjectProperties(1);
2726 2728
2727 // Copy constructor from the sloppy arguments boilerplate. 2729 // Copy constructor from the sloppy arguments boilerplate.
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
3120 3122
3121 Handle<Map> script_map = Handle<Map>(script_fun->initial_map()); 3123 Handle<Map> script_map = Handle<Map>(script_fun->initial_map());
3122 Map::EnsureDescriptorSlack(script_map, 15); 3124 Map::EnsureDescriptorSlack(script_map, 15);
3123 3125
3124 PropertyAttributes attribs = 3126 PropertyAttributes attribs =
3125 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); 3127 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
3126 3128
3127 Handle<AccessorInfo> script_column = 3129 Handle<AccessorInfo> script_column =
3128 Accessors::ScriptColumnOffsetInfo(isolate, attribs); 3130 Accessors::ScriptColumnOffsetInfo(isolate, attribs);
3129 { 3131 {
3130 AccessorConstantDescriptor d( 3132 Descriptor d = Descriptor::AccessorConstant(
3131 Handle<Name>(Name::cast(script_column->name())), script_column, 3133 Handle<Name>(Name::cast(script_column->name())), script_column,
3132 attribs); 3134 attribs);
3133 script_map->AppendDescriptor(&d); 3135 script_map->AppendDescriptor(&d);
3134 } 3136 }
3135 3137
3136 Handle<AccessorInfo> script_id = Accessors::ScriptIdInfo(isolate, attribs); 3138 Handle<AccessorInfo> script_id = Accessors::ScriptIdInfo(isolate, attribs);
3137 { 3139 {
3138 AccessorConstantDescriptor d(Handle<Name>(Name::cast(script_id->name())), 3140 Descriptor d = Descriptor::AccessorConstant(
3139 script_id, attribs); 3141 Handle<Name>(Name::cast(script_id->name())), script_id, attribs);
3140 script_map->AppendDescriptor(&d); 3142 script_map->AppendDescriptor(&d);
3141 } 3143 }
3142 3144
3143 3145
3144 Handle<AccessorInfo> script_name = 3146 Handle<AccessorInfo> script_name =
3145 Accessors::ScriptNameInfo(isolate, attribs); 3147 Accessors::ScriptNameInfo(isolate, attribs);
3146 { 3148 {
3147 AccessorConstantDescriptor d( 3149 Descriptor d = Descriptor::AccessorConstant(
3148 Handle<Name>(Name::cast(script_name->name())), script_name, attribs); 3150 Handle<Name>(Name::cast(script_name->name())), script_name, attribs);
3149 script_map->AppendDescriptor(&d); 3151 script_map->AppendDescriptor(&d);
3150 } 3152 }
3151 3153
3152 Handle<AccessorInfo> script_line = 3154 Handle<AccessorInfo> script_line =
3153 Accessors::ScriptLineOffsetInfo(isolate, attribs); 3155 Accessors::ScriptLineOffsetInfo(isolate, attribs);
3154 { 3156 {
3155 AccessorConstantDescriptor d( 3157 Descriptor d = Descriptor::AccessorConstant(
3156 Handle<Name>(Name::cast(script_line->name())), script_line, attribs); 3158 Handle<Name>(Name::cast(script_line->name())), script_line, attribs);
3157 script_map->AppendDescriptor(&d); 3159 script_map->AppendDescriptor(&d);
3158 } 3160 }
3159 3161
3160 Handle<AccessorInfo> script_source = 3162 Handle<AccessorInfo> script_source =
3161 Accessors::ScriptSourceInfo(isolate, attribs); 3163 Accessors::ScriptSourceInfo(isolate, attribs);
3162 { 3164 {
3163 AccessorConstantDescriptor d( 3165 Descriptor d = Descriptor::AccessorConstant(
3164 Handle<Name>(Name::cast(script_source->name())), script_source, 3166 Handle<Name>(Name::cast(script_source->name())), script_source,
3165 attribs); 3167 attribs);
3166 script_map->AppendDescriptor(&d); 3168 script_map->AppendDescriptor(&d);
3167 } 3169 }
3168 3170
3169 Handle<AccessorInfo> script_type = 3171 Handle<AccessorInfo> script_type =
3170 Accessors::ScriptTypeInfo(isolate, attribs); 3172 Accessors::ScriptTypeInfo(isolate, attribs);
3171 { 3173 {
3172 AccessorConstantDescriptor d( 3174 Descriptor d = Descriptor::AccessorConstant(
3173 Handle<Name>(Name::cast(script_type->name())), script_type, attribs); 3175 Handle<Name>(Name::cast(script_type->name())), script_type, attribs);
3174 script_map->AppendDescriptor(&d); 3176 script_map->AppendDescriptor(&d);
3175 } 3177 }
3176 3178
3177 Handle<AccessorInfo> script_compilation_type = 3179 Handle<AccessorInfo> script_compilation_type =
3178 Accessors::ScriptCompilationTypeInfo(isolate, attribs); 3180 Accessors::ScriptCompilationTypeInfo(isolate, attribs);
3179 { 3181 {
3180 AccessorConstantDescriptor d( 3182 Descriptor d = Descriptor::AccessorConstant(
3181 Handle<Name>(Name::cast(script_compilation_type->name())), 3183 Handle<Name>(Name::cast(script_compilation_type->name())),
3182 script_compilation_type, attribs); 3184 script_compilation_type, attribs);
3183 script_map->AppendDescriptor(&d); 3185 script_map->AppendDescriptor(&d);
3184 } 3186 }
3185 3187
3186 Handle<AccessorInfo> script_context_data = 3188 Handle<AccessorInfo> script_context_data =
3187 Accessors::ScriptContextDataInfo(isolate, attribs); 3189 Accessors::ScriptContextDataInfo(isolate, attribs);
3188 { 3190 {
3189 AccessorConstantDescriptor d( 3191 Descriptor d = Descriptor::AccessorConstant(
3190 Handle<Name>(Name::cast(script_context_data->name())), 3192 Handle<Name>(Name::cast(script_context_data->name())),
3191 script_context_data, attribs); 3193 script_context_data, attribs);
3192 script_map->AppendDescriptor(&d); 3194 script_map->AppendDescriptor(&d);
3193 } 3195 }
3194 3196
3195 Handle<AccessorInfo> script_eval_from_script = 3197 Handle<AccessorInfo> script_eval_from_script =
3196 Accessors::ScriptEvalFromScriptInfo(isolate, attribs); 3198 Accessors::ScriptEvalFromScriptInfo(isolate, attribs);
3197 { 3199 {
3198 AccessorConstantDescriptor d( 3200 Descriptor d = Descriptor::AccessorConstant(
3199 Handle<Name>(Name::cast(script_eval_from_script->name())), 3201 Handle<Name>(Name::cast(script_eval_from_script->name())),
3200 script_eval_from_script, attribs); 3202 script_eval_from_script, attribs);
3201 script_map->AppendDescriptor(&d); 3203 script_map->AppendDescriptor(&d);
3202 } 3204 }
3203 3205
3204 Handle<AccessorInfo> script_eval_from_script_position = 3206 Handle<AccessorInfo> script_eval_from_script_position =
3205 Accessors::ScriptEvalFromScriptPositionInfo(isolate, attribs); 3207 Accessors::ScriptEvalFromScriptPositionInfo(isolate, attribs);
3206 { 3208 {
3207 AccessorConstantDescriptor d( 3209 Descriptor d = Descriptor::AccessorConstant(
3208 Handle<Name>(Name::cast(script_eval_from_script_position->name())), 3210 Handle<Name>(Name::cast(script_eval_from_script_position->name())),
3209 script_eval_from_script_position, attribs); 3211 script_eval_from_script_position, attribs);
3210 script_map->AppendDescriptor(&d); 3212 script_map->AppendDescriptor(&d);
3211 } 3213 }
3212 3214
3213 Handle<AccessorInfo> script_eval_from_function_name = 3215 Handle<AccessorInfo> script_eval_from_function_name =
3214 Accessors::ScriptEvalFromFunctionNameInfo(isolate, attribs); 3216 Accessors::ScriptEvalFromFunctionNameInfo(isolate, attribs);
3215 { 3217 {
3216 AccessorConstantDescriptor d( 3218 Descriptor d = Descriptor::AccessorConstant(
3217 Handle<Name>(Name::cast(script_eval_from_function_name->name())), 3219 Handle<Name>(Name::cast(script_eval_from_function_name->name())),
3218 script_eval_from_function_name, attribs); 3220 script_eval_from_function_name, attribs);
3219 script_map->AppendDescriptor(&d); 3221 script_map->AppendDescriptor(&d);
3220 } 3222 }
3221 3223
3222 Handle<AccessorInfo> script_source_url = 3224 Handle<AccessorInfo> script_source_url =
3223 Accessors::ScriptSourceUrlInfo(isolate, attribs); 3225 Accessors::ScriptSourceUrlInfo(isolate, attribs);
3224 { 3226 {
3225 AccessorConstantDescriptor d( 3227 Descriptor d = Descriptor::AccessorConstant(
3226 Handle<Name>(Name::cast(script_source_url->name())), 3228 Handle<Name>(Name::cast(script_source_url->name())),
3227 script_source_url, attribs); 3229 script_source_url, attribs);
3228 script_map->AppendDescriptor(&d); 3230 script_map->AppendDescriptor(&d);
3229 } 3231 }
3230 3232
3231 Handle<AccessorInfo> script_source_mapping_url = 3233 Handle<AccessorInfo> script_source_mapping_url =
3232 Accessors::ScriptSourceMappingUrlInfo(isolate, attribs); 3234 Accessors::ScriptSourceMappingUrlInfo(isolate, attribs);
3233 { 3235 {
3234 AccessorConstantDescriptor d( 3236 Descriptor d = Descriptor::AccessorConstant(
3235 Handle<Name>(Name::cast(script_source_mapping_url->name())), 3237 Handle<Name>(Name::cast(script_source_mapping_url->name())),
3236 script_source_mapping_url, attribs); 3238 script_source_mapping_url, attribs);
3237 script_map->AppendDescriptor(&d); 3239 script_map->AppendDescriptor(&d);
3238 } 3240 }
3239 3241
3240 { 3242 {
3241 PrototypeIterator iter(native_context->sloppy_async_function_map()); 3243 PrototypeIterator iter(native_context->sloppy_async_function_map());
3242 Handle<JSObject> async_function_prototype(iter.GetCurrent<JSObject>()); 3244 Handle<JSObject> async_function_prototype(iter.GetCurrent<JSObject>());
3243 3245
3244 static const bool kUseStrictFunctionMap = true; 3246 static const bool kUseStrictFunctionMap = true;
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
3527 3529
3528 // Make "length" magic on instances. 3530 // Make "length" magic on instances.
3529 Map::EnsureDescriptorSlack(initial_map, 1); 3531 Map::EnsureDescriptorSlack(initial_map, 1);
3530 3532
3531 PropertyAttributes attribs = static_cast<PropertyAttributes>( 3533 PropertyAttributes attribs = static_cast<PropertyAttributes>(
3532 DONT_ENUM | DONT_DELETE); 3534 DONT_ENUM | DONT_DELETE);
3533 3535
3534 Handle<AccessorInfo> array_length = 3536 Handle<AccessorInfo> array_length =
3535 Accessors::ArrayLengthInfo(isolate(), attribs); 3537 Accessors::ArrayLengthInfo(isolate(), attribs);
3536 { // Add length. 3538 { // Add length.
3537 AccessorConstantDescriptor d(Handle<Name>(Name::cast(array_length->name())), 3539 Descriptor d = Descriptor::AccessorConstant(
3538 array_length, attribs); 3540 Handle<Name>(Name::cast(array_length->name())), array_length, attribs);
3539 initial_map->AppendDescriptor(&d); 3541 initial_map->AppendDescriptor(&d);
3540 } 3542 }
3541 3543
3542 return array_function; 3544 return array_function;
3543 } 3545 }
3544 3546
3545 bool Genesis::InstallNatives(GlobalContextType context_type) { 3547 bool Genesis::InstallNatives(GlobalContextType context_type) {
3546 HandleScope scope(isolate()); 3548 HandleScope scope(isolate());
3547 3549
3548 // Set up the utils object as shared container between native scripts. 3550 // Set up the utils object as shared container between native scripts.
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
3723 // Create a map for accessor property descriptors (a variant of JSObject 3725 // Create a map for accessor property descriptors (a variant of JSObject
3724 // that predefines four properties get, set, configurable and enumerable). 3726 // that predefines four properties get, set, configurable and enumerable).
3725 { 3727 {
3726 // AccessorPropertyDescriptor initial map. 3728 // AccessorPropertyDescriptor initial map.
3727 Handle<Map> map = 3729 Handle<Map> map =
3728 factory()->NewMap(JS_OBJECT_TYPE, JSAccessorPropertyDescriptor::kSize); 3730 factory()->NewMap(JS_OBJECT_TYPE, JSAccessorPropertyDescriptor::kSize);
3729 // Create the descriptor array for the property descriptor object. 3731 // Create the descriptor array for the property descriptor object.
3730 Map::EnsureDescriptorSlack(map, 4); 3732 Map::EnsureDescriptorSlack(map, 4);
3731 3733
3732 { // get 3734 { // get
3733 DataDescriptor d(factory()->get_string(), 3735 Descriptor d = Descriptor::DataField(
3734 JSAccessorPropertyDescriptor::kGetIndex, NONE, 3736 factory()->get_string(), JSAccessorPropertyDescriptor::kGetIndex,
3735 Representation::Tagged()); 3737 NONE, Representation::Tagged());
3736 map->AppendDescriptor(&d); 3738 map->AppendDescriptor(&d);
3737 } 3739 }
3738 { // set 3740 { // set
3739 DataDescriptor d(factory()->set_string(), 3741 Descriptor d = Descriptor::DataField(
3740 JSAccessorPropertyDescriptor::kSetIndex, NONE, 3742 factory()->set_string(), JSAccessorPropertyDescriptor::kSetIndex,
3741 Representation::Tagged()); 3743 NONE, Representation::Tagged());
3742 map->AppendDescriptor(&d); 3744 map->AppendDescriptor(&d);
3743 } 3745 }
3744 { // enumerable 3746 { // enumerable
3745 DataDescriptor d(factory()->enumerable_string(), 3747 Descriptor d =
3746 JSAccessorPropertyDescriptor::kEnumerableIndex, NONE, 3748 Descriptor::DataField(factory()->enumerable_string(),
3747 Representation::Tagged()); 3749 JSAccessorPropertyDescriptor::kEnumerableIndex,
3750 NONE, Representation::Tagged());
3748 map->AppendDescriptor(&d); 3751 map->AppendDescriptor(&d);
3749 } 3752 }
3750 { // configurable 3753 { // configurable
3751 DataDescriptor d(factory()->configurable_string(), 3754 Descriptor d = Descriptor::DataField(
3752 JSAccessorPropertyDescriptor::kConfigurableIndex, NONE, 3755 factory()->configurable_string(),
3753 Representation::Tagged()); 3756 JSAccessorPropertyDescriptor::kConfigurableIndex, NONE,
3757 Representation::Tagged());
3754 map->AppendDescriptor(&d); 3758 map->AppendDescriptor(&d);
3755 } 3759 }
3756 3760
3757 Map::SetPrototype(map, isolate()->initial_object_prototype()); 3761 Map::SetPrototype(map, isolate()->initial_object_prototype());
3758 map->SetConstructor(native_context()->object_function()); 3762 map->SetConstructor(native_context()->object_function());
3759 map->SetInObjectProperties(4); 3763 map->SetInObjectProperties(4);
3760 map->set_unused_property_fields(0); 3764 map->set_unused_property_fields(0);
3761 3765
3762 native_context()->set_accessor_property_descriptor_map(*map); 3766 native_context()->set_accessor_property_descriptor_map(*map);
3763 } 3767 }
3764 3768
3765 // Create a map for data property descriptors (a variant of JSObject 3769 // Create a map for data property descriptors (a variant of JSObject
3766 // that predefines four properties value, writable, configurable and 3770 // that predefines four properties value, writable, configurable and
3767 // enumerable). 3771 // enumerable).
3768 { 3772 {
3769 // DataPropertyDescriptor initial map. 3773 // DataPropertyDescriptor initial map.
3770 Handle<Map> map = 3774 Handle<Map> map =
3771 factory()->NewMap(JS_OBJECT_TYPE, JSDataPropertyDescriptor::kSize); 3775 factory()->NewMap(JS_OBJECT_TYPE, JSDataPropertyDescriptor::kSize);
3772 // Create the descriptor array for the property descriptor object. 3776 // Create the descriptor array for the property descriptor object.
3773 Map::EnsureDescriptorSlack(map, 4); 3777 Map::EnsureDescriptorSlack(map, 4);
3774 3778
3775 { // value 3779 { // value
3776 DataDescriptor d(factory()->value_string(), 3780 Descriptor d = Descriptor::DataField(
3777 JSDataPropertyDescriptor::kValueIndex, NONE, 3781 factory()->value_string(), JSDataPropertyDescriptor::kValueIndex,
3778 Representation::Tagged()); 3782 NONE, Representation::Tagged());
3779 map->AppendDescriptor(&d); 3783 map->AppendDescriptor(&d);
3780 } 3784 }
3781 { // writable 3785 { // writable
3782 DataDescriptor d(factory()->writable_string(), 3786 Descriptor d =
3783 JSDataPropertyDescriptor::kWritableIndex, NONE, 3787 Descriptor::DataField(factory()->writable_string(),
3784 Representation::Tagged()); 3788 JSDataPropertyDescriptor::kWritableIndex, NONE,
3789 Representation::Tagged());
3785 map->AppendDescriptor(&d); 3790 map->AppendDescriptor(&d);
3786 } 3791 }
3787 { // enumerable 3792 { // enumerable
3788 DataDescriptor d(factory()->enumerable_string(), 3793 Descriptor d =
3789 JSDataPropertyDescriptor::kEnumerableIndex, NONE, 3794 Descriptor::DataField(factory()->enumerable_string(),
3790 Representation::Tagged()); 3795 JSDataPropertyDescriptor::kEnumerableIndex,
3796 NONE, Representation::Tagged());
3791 map->AppendDescriptor(&d); 3797 map->AppendDescriptor(&d);
3792 } 3798 }
3793 { // configurable 3799 { // configurable
3794 DataDescriptor d(factory()->configurable_string(), 3800 Descriptor d =
3795 JSDataPropertyDescriptor::kConfigurableIndex, NONE, 3801 Descriptor::DataField(factory()->configurable_string(),
3796 Representation::Tagged()); 3802 JSDataPropertyDescriptor::kConfigurableIndex,
3803 NONE, Representation::Tagged());
3797 map->AppendDescriptor(&d); 3804 map->AppendDescriptor(&d);
3798 } 3805 }
3799 3806
3800 Map::SetPrototype(map, isolate()->initial_object_prototype()); 3807 Map::SetPrototype(map, isolate()->initial_object_prototype());
3801 map->SetConstructor(native_context()->object_function()); 3808 map->SetConstructor(native_context()->object_function());
3802 map->SetInObjectProperties(4); 3809 map->SetInObjectProperties(4);
3803 map->set_unused_property_fields(0); 3810 map->set_unused_property_fields(0);
3804 3811
3805 native_context()->set_data_property_descriptor_map(*map); 3812 native_context()->set_data_property_descriptor_map(*map);
3806 } 3813 }
(...skipping 21 matching lines...) Expand all
3828 Map::EnsureDescriptorSlack(initial_map, 3); 3835 Map::EnsureDescriptorSlack(initial_map, 3);
3829 3836
3830 { 3837 {
3831 JSFunction* array_function = native_context()->array_function(); 3838 JSFunction* array_function = native_context()->array_function();
3832 Handle<DescriptorArray> array_descriptors( 3839 Handle<DescriptorArray> array_descriptors(
3833 array_function->initial_map()->instance_descriptors()); 3840 array_function->initial_map()->instance_descriptors());
3834 Handle<String> length = factory()->length_string(); 3841 Handle<String> length = factory()->length_string();
3835 int old = array_descriptors->SearchWithCache( 3842 int old = array_descriptors->SearchWithCache(
3836 isolate(), *length, array_function->initial_map()); 3843 isolate(), *length, array_function->initial_map());
3837 DCHECK(old != DescriptorArray::kNotFound); 3844 DCHECK(old != DescriptorArray::kNotFound);
3838 AccessorConstantDescriptor desc( 3845 Descriptor d = Descriptor::AccessorConstant(
3839 length, handle(array_descriptors->GetValue(old), isolate()), 3846 length, handle(array_descriptors->GetValue(old), isolate()),
3840 array_descriptors->GetDetails(old).attributes()); 3847 array_descriptors->GetDetails(old).attributes());
3841 initial_map->AppendDescriptor(&desc); 3848 initial_map->AppendDescriptor(&d);
3842 } 3849 }
3843 { 3850 {
3844 DataDescriptor index_field(factory()->index_string(), 3851 Descriptor d = Descriptor::DataField(factory()->index_string(),
3845 JSRegExpResult::kIndexIndex, NONE, 3852 JSRegExpResult::kIndexIndex, NONE,
3846 Representation::Tagged()); 3853 Representation::Tagged());
3847 initial_map->AppendDescriptor(&index_field); 3854 initial_map->AppendDescriptor(&d);
3848 } 3855 }
3849 3856
3850 { 3857 {
3851 DataDescriptor input_field(factory()->input_string(), 3858 Descriptor d = Descriptor::DataField(factory()->input_string(),
3852 JSRegExpResult::kInputIndex, NONE, 3859 JSRegExpResult::kInputIndex, NONE,
3853 Representation::Tagged()); 3860 Representation::Tagged());
3854 initial_map->AppendDescriptor(&input_field); 3861 initial_map->AppendDescriptor(&d);
3855 } 3862 }
3856 3863
3857 initial_map->SetInObjectProperties(2); 3864 initial_map->SetInObjectProperties(2);
3858 initial_map->set_unused_property_fields(0); 3865 initial_map->set_unused_property_fields(0);
3859 3866
3860 native_context()->set_regexp_result_map(*initial_map); 3867 native_context()->set_regexp_result_map(*initial_map);
3861 } 3868 }
3862 3869
3863 // Add @@iterator method to the arguments object maps. 3870 // Add @@iterator method to the arguments object maps.
3864 { 3871 {
3865 PropertyAttributes attribs = DONT_ENUM; 3872 PropertyAttributes attribs = DONT_ENUM;
3866 Handle<AccessorInfo> arguments_iterator = 3873 Handle<AccessorInfo> arguments_iterator =
3867 Accessors::ArgumentsIteratorInfo(isolate(), attribs); 3874 Accessors::ArgumentsIteratorInfo(isolate(), attribs);
3868 { 3875 {
3869 AccessorConstantDescriptor d(factory()->iterator_symbol(), 3876 Descriptor d = Descriptor::AccessorConstant(factory()->iterator_symbol(),
3870 arguments_iterator, attribs); 3877 arguments_iterator, attribs);
3871 Handle<Map> map(native_context()->sloppy_arguments_map()); 3878 Handle<Map> map(native_context()->sloppy_arguments_map());
3872 Map::EnsureDescriptorSlack(map, 1); 3879 Map::EnsureDescriptorSlack(map, 1);
3873 map->AppendDescriptor(&d); 3880 map->AppendDescriptor(&d);
3874 } 3881 }
3875 { 3882 {
3876 AccessorConstantDescriptor d(factory()->iterator_symbol(), 3883 Descriptor d = Descriptor::AccessorConstant(factory()->iterator_symbol(),
3877 arguments_iterator, attribs); 3884 arguments_iterator, attribs);
3878 Handle<Map> map(native_context()->fast_aliased_arguments_map()); 3885 Handle<Map> map(native_context()->fast_aliased_arguments_map());
3879 Map::EnsureDescriptorSlack(map, 1); 3886 Map::EnsureDescriptorSlack(map, 1);
3880 map->AppendDescriptor(&d); 3887 map->AppendDescriptor(&d);
3881 } 3888 }
3882 { 3889 {
3883 AccessorConstantDescriptor d(factory()->iterator_symbol(), 3890 Descriptor d = Descriptor::AccessorConstant(factory()->iterator_symbol(),
3884 arguments_iterator, attribs); 3891 arguments_iterator, attribs);
3885 Handle<Map> map(native_context()->slow_aliased_arguments_map()); 3892 Handle<Map> map(native_context()->slow_aliased_arguments_map());
3886 Map::EnsureDescriptorSlack(map, 1); 3893 Map::EnsureDescriptorSlack(map, 1);
3887 map->AppendDescriptor(&d); 3894 map->AppendDescriptor(&d);
3888 } 3895 }
3889 { 3896 {
3890 AccessorConstantDescriptor d(factory()->iterator_symbol(), 3897 Descriptor d = Descriptor::AccessorConstant(factory()->iterator_symbol(),
3891 arguments_iterator, attribs); 3898 arguments_iterator, attribs);
3892 Handle<Map> map(native_context()->strict_arguments_map()); 3899 Handle<Map> map(native_context()->strict_arguments_map());
3893 Map::EnsureDescriptorSlack(map, 1); 3900 Map::EnsureDescriptorSlack(map, 1);
3894 map->AppendDescriptor(&d); 3901 map->AppendDescriptor(&d);
3895 } 3902 }
3896 } 3903 }
3897 3904
3898 return true; 3905 return true;
3899 } 3906 }
3900 3907
3901 3908
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
4656 } 4663 }
4657 4664
4658 4665
4659 // Called when the top-level V8 mutex is destroyed. 4666 // Called when the top-level V8 mutex is destroyed.
4660 void Bootstrapper::FreeThreadResources() { 4667 void Bootstrapper::FreeThreadResources() {
4661 DCHECK(!IsActive()); 4668 DCHECK(!IsActive());
4662 } 4669 }
4663 4670
4664 } // namespace internal 4671 } // namespace internal
4665 } // namespace v8 4672 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698