@@ -1357,12 +1357,17 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> global_object,
13571357 DCHECK (IsFastObjectElementsKind (map->elements_kind ()));
13581358 }
13591359
1360- { // --- aliased arguments map
1361- Handle<Map> map =
1362- Map::Copy (isolate->sloppy_arguments_map (), " AliasedArguments" );
1363- map->set_elements_kind (SLOPPY_ARGUMENTS_ELEMENTS );
1360+ { // --- fast and slow aliased arguments map
1361+ Handle<Map> map = isolate->sloppy_arguments_map ();
1362+ map = Map::Copy (map, " FastAliasedArguments" );
1363+ map->set_elements_kind (FAST_SLOPPY_ARGUMENTS_ELEMENTS );
1364+ DCHECK_EQ (2 , map->pre_allocated_property_fields ());
1365+ native_context ()->set_fast_aliased_arguments_map (*map);
1366+
1367+ map = Map::Copy (map, " SlowAliasedArguments" );
1368+ map->set_elements_kind (SLOW_SLOPPY_ARGUMENTS_ELEMENTS );
13641369 DCHECK_EQ (2 , map->pre_allocated_property_fields ());
1365- native_context ()->set_aliased_arguments_map (*map);
1370+ native_context ()->set_slow_aliased_arguments_map (*map);
13661371 }
13671372
13681373 { // --- strict mode arguments map
@@ -2438,7 +2443,14 @@ bool Genesis::InstallNatives() {
24382443 {
24392444 AccessorConstantDescriptor d (factory ()->iterator_symbol (),
24402445 arguments_iterator, attribs);
2441- Handle<Map> map (native_context ()->aliased_arguments_map ());
2446+ Handle<Map> map (native_context ()->fast_aliased_arguments_map ());
2447+ Map::EnsureDescriptorSlack (map, 1 );
2448+ map->AppendDescriptor (&d);
2449+ }
2450+ {
2451+ AccessorConstantDescriptor d (factory ()->iterator_symbol (),
2452+ arguments_iterator, attribs);
2453+ Handle<Map> map (native_context ()->slow_aliased_arguments_map ());
24422454 Map::EnsureDescriptorSlack (map, 1 );
24432455 map->AppendDescriptor (&d);
24442456 }
0 commit comments