Commit fb966fd6 authored by bmeurer's avatar bmeurer Committed by Commit bot

[turbofan] Use proper parameter representation for stub calls.

The CallInterfaceDescriptor already provides information about the
expected representation of parameters, so we can use that instead of
hardcoding tagged representation for all parameters.

R=jarin@chromium.org

Review URL: https://codereview.chromium.org/1019293002

Cr-Commit-Position: refs/heads/master@{#27308}
parent b37c0890
......@@ -164,13 +164,16 @@ class LinkageHelper {
if (i < register_parameter_count) {
// The first parameters go in registers.
Register reg = descriptor.GetEnvironmentParameterRegister(i);
Representation rep =
descriptor.GetEnvironmentParameterRepresentation(i);
locations.AddParam(regloc(reg));
types.AddParam(reptyp(rep));
} else {
// The rest of the parameters go on the stack.
int stack_slot = i - register_parameter_count - stack_parameter_count;
locations.AddParam(stackloc(stack_slot));
types.AddParam(kMachAnyTagged);
}
types.AddParam(kMachAnyTagged);
}
// Add context.
locations.AddParam(regloc(LinkageTraits::ContextReg()));
......@@ -232,6 +235,34 @@ class LinkageHelper {
DCHECK_LT(i, 0);
return LinkageLocation(i);
}
static MachineType reptyp(Representation representation) {
switch (representation.kind()) {
case Representation::kInteger8:
return kMachInt8;
case Representation::kUInteger8:
return kMachUint8;
case Representation::kInteger16:
return kMachInt16;
case Representation::kUInteger16:
return kMachUint16;
case Representation::kInteger32:
return kMachInt32;
case Representation::kSmi:
case Representation::kTagged:
case Representation::kHeapObject:
return kMachAnyTagged;
case Representation::kDouble:
return kMachFloat64;
case Representation::kExternal:
return kMachPtr;
case Representation::kNone:
case Representation::kNumRepresentations:
break;
}
UNREACHABLE();
return kMachNone;
}
};
......@@ -254,7 +285,6 @@ LinkageLocation Linkage::GetOsrValueLocation(int index) const {
}
}
} // namespace compiler
} // namespace internal
} // namespace v8
......
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