Commit 5eec7df9 authored by bmeurer's avatar bmeurer Committed by Commit bot

[turbofan] Set proper representation for initial arguments length.

The JSArgumentsObject::length representation is initially Smi, so we can
record that on the initial map and use it to optimize the accesses in
TurboFan based on that. Similar for JSSloppyArgumentsObject::caller.

BUG=v8:6262
R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2810333004
Cr-Commit-Position: refs/heads/master@{#44644}
parent c80c0f11
......@@ -3029,13 +3029,13 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
{ // length
Descriptor d = Descriptor::DataField(
factory->length_string(), JSSloppyArgumentsObject::kLengthIndex,
DONT_ENUM, Representation::Tagged());
DONT_ENUM, Representation::Smi());
map->AppendDescriptor(&d);
}
{ // callee
Descriptor d = Descriptor::DataField(
factory->callee_string(), JSSloppyArgumentsObject::kCalleeIndex,
DONT_ENUM, Representation::Tagged());
DONT_ENUM, Representation::HeapObject());
map->AppendDescriptor(&d);
}
// @@iterator method is added later.
......@@ -3086,7 +3086,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
{ // length
Descriptor d = Descriptor::DataField(
factory->length_string(), JSStrictArgumentsObject::kLengthIndex,
DONT_ENUM, Representation::Tagged());
DONT_ENUM, Representation::Smi());
map->AppendDescriptor(&d);
}
{ // callee
......
......@@ -716,8 +716,8 @@ FieldAccess AccessBuilder::ForValue() {
FieldAccess AccessBuilder::ForArgumentsLength() {
FieldAccess access = {kTaggedBase, JSArgumentsObject::kLengthOffset,
Handle<Name>(), MaybeHandle<Map>(),
Type::NonInternal(), MachineType::AnyTagged(),
kFullWriteBarrier};
Type::SignedSmall(), MachineType::TaggedSigned(),
kNoWriteBarrier};
return access;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment