| Index: src/compiler/instruction-selector.cc
|
| diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc
|
| index 6baba281fb666076101501af80a9d6c18b1f335f..66c9d8c2338a09c20654abbdc090544f5cefc5fa 100644
|
| --- a/src/compiler/instruction-selector.cc
|
| +++ b/src/compiler/instruction-selector.cc
|
| @@ -241,16 +241,15 @@ void InstructionSelector::MarkAsUsed(Node* node) {
|
| }
|
|
|
|
|
| -void InstructionSelector::MarkAsRepresentation(MachineType rep,
|
| +void InstructionSelector::MarkAsRepresentation(MachineRepresentation rep,
|
| const InstructionOperand& op) {
|
| UnallocatedOperand unalloc = UnallocatedOperand::cast(op);
|
| - rep = RepresentationOf(rep);
|
| sequence()->MarkAsRepresentation(rep, unalloc.virtual_register());
|
| }
|
|
|
|
|
| -void InstructionSelector::MarkAsRepresentation(MachineType rep, Node* node) {
|
| - rep = RepresentationOf(rep);
|
| +void InstructionSelector::MarkAsRepresentation(MachineRepresentation rep,
|
| + Node* node) {
|
| sequence()->MarkAsRepresentation(rep, GetVirtualRegister(node));
|
| }
|
|
|
| @@ -310,7 +309,7 @@ void AddFrameStateInputs(Node* state, OperandGenerator* g,
|
| size_t value_index = 0;
|
| inputs->push_back(
|
| OperandForDeopt(g, function, FrameStateInputKind::kStackSlot));
|
| - descriptor->SetType(value_index++, kMachAnyTagged);
|
| + descriptor->SetType(value_index++, MachineType::AnyTagged());
|
| for (StateValuesAccess::TypedNode input_node :
|
| StateValuesAccess(parameters)) {
|
| inputs->push_back(OperandForDeopt(g, input_node.node, kind));
|
| @@ -319,7 +318,7 @@ void AddFrameStateInputs(Node* state, OperandGenerator* g,
|
| if (descriptor->HasContext()) {
|
| inputs->push_back(
|
| OperandForDeopt(g, context, FrameStateInputKind::kStackSlot));
|
| - descriptor->SetType(value_index++, kMachAnyTagged);
|
| + descriptor->SetType(value_index++, MachineType::AnyTagged());
|
| }
|
| for (StateValuesAccess::TypedNode input_node : StateValuesAccess(locals)) {
|
| inputs->push_back(OperandForDeopt(g, input_node.node, kind));
|
| @@ -418,9 +417,10 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer,
|
|
|
| Node* output = buffer->output_nodes[i];
|
| InstructionOperand op =
|
| - output == NULL ? g.TempLocation(location, type)
|
| - : g.DefineAsLocation(output, location, type);
|
| - MarkAsRepresentation(type, op);
|
| + output == NULL
|
| + ? g.TempLocation(location, type.representation())
|
| + : g.DefineAsLocation(output, location, type.representation());
|
| + MarkAsRepresentation(type.representation(), op);
|
|
|
| buffer->outputs.push_back(op);
|
| }
|
| @@ -448,7 +448,7 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer,
|
| case CallDescriptor::kCallJSFunction:
|
| buffer->instruction_args.push_back(
|
| g.UseLocation(callee, buffer->descriptor->GetInputLocation(0),
|
| - buffer->descriptor->GetInputType(0)));
|
| + buffer->descriptor->GetInputType(0).representation()));
|
| break;
|
| case CallDescriptor::kLazyBailout:
|
| // The target is ignored, but we still need to pass a value here.
|
| @@ -495,7 +495,8 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer,
|
| location, stack_param_delta);
|
| }
|
| InstructionOperand op =
|
| - g.UseLocation(*iter, location, buffer->descriptor->GetInputType(index));
|
| + g.UseLocation(*iter, location,
|
| + buffer->descriptor->GetInputType(index).representation());
|
| if (UnallocatedOperand::cast(op).HasFixedSlotPolicy() && !call_tail) {
|
| int stack_index = -UnallocatedOperand::cast(op).fixed_slot_index() - 1;
|
| if (static_cast<size_t>(stack_index) >= buffer->pushed_nodes.size()) {
|
| @@ -681,14 +682,14 @@ void InstructionSelector::VisitNode(Node* node) {
|
| case IrOpcode::kParameter: {
|
| MachineType type =
|
| linkage()->GetParameterType(ParameterIndexOf(node->op()));
|
| - MarkAsRepresentation(type, node);
|
| + MarkAsRepresentation(type.representation(), node);
|
| return VisitParameter(node);
|
| }
|
| case IrOpcode::kOsrValue:
|
| return MarkAsReference(node), VisitOsrValue(node);
|
| case IrOpcode::kPhi: {
|
| - MachineType type = OpParameter<MachineType>(node);
|
| - MarkAsRepresentation(type, node);
|
| + MachineRepresentation rep = PhiRepresentationOf(node->op());
|
| + MarkAsRepresentation(rep, node);
|
| return VisitPhi(node);
|
| }
|
| case IrOpcode::kProjection:
|
| @@ -714,8 +715,8 @@ void InstructionSelector::VisitNode(Node* node) {
|
| case IrOpcode::kStateValues:
|
| return;
|
| case IrOpcode::kLoad: {
|
| - LoadRepresentation rep = OpParameter<LoadRepresentation>(node);
|
| - MarkAsRepresentation(rep, node);
|
| + LoadRepresentation type = LoadRepresentationOf(node->op());
|
| + MarkAsRepresentation(type.representation(), node);
|
| return VisitLoad(node);
|
| }
|
| case IrOpcode::kStore:
|
| @@ -937,7 +938,8 @@ void InstructionSelector::VisitNode(Node* node) {
|
| case IrOpcode::kLoadFramePointer:
|
| return VisitLoadFramePointer(node);
|
| case IrOpcode::kCheckedLoad: {
|
| - MachineType rep = OpParameter<MachineType>(node);
|
| + MachineRepresentation rep =
|
| + CheckedLoadRepresentationOf(node->op()).representation();
|
| MarkAsRepresentation(rep, node);
|
| return VisitCheckedLoad(node);
|
| }
|
| @@ -1161,8 +1163,9 @@ void InstructionSelector::VisitParameter(Node* node) {
|
| ? g.DefineAsDualLocation(
|
| node, linkage()->GetParameterLocation(index),
|
| linkage()->GetParameterSecondaryLocation(index))
|
| - : g.DefineAsLocation(node, linkage()->GetParameterLocation(index),
|
| - linkage()->GetParameterType(index));
|
| + : g.DefineAsLocation(
|
| + node, linkage()->GetParameterLocation(index),
|
| + linkage()->GetParameterType(index).representation());
|
|
|
| Emit(kArchNop, op);
|
| }
|
| @@ -1173,8 +1176,9 @@ void InstructionSelector::VisitIfException(Node* node) {
|
| Node* call = node->InputAt(1);
|
| DCHECK_EQ(IrOpcode::kCall, call->opcode());
|
| const CallDescriptor* descriptor = OpParameter<const CallDescriptor*>(call);
|
| - Emit(kArchNop, g.DefineAsLocation(node, descriptor->GetReturnLocation(0),
|
| - descriptor->GetReturnType(0)));
|
| + Emit(kArchNop,
|
| + g.DefineAsLocation(node, descriptor->GetReturnLocation(0),
|
| + descriptor->GetReturnType(0).representation()));
|
| }
|
|
|
|
|
| @@ -1182,7 +1186,7 @@ void InstructionSelector::VisitOsrValue(Node* node) {
|
| OperandGenerator g(this);
|
| int index = OpParameter<int>(node);
|
| Emit(kArchNop, g.DefineAsLocation(node, linkage()->GetOsrValueLocation(index),
|
| - kMachAnyTagged));
|
| + MachineRepresentation::kTagged));
|
| }
|
|
|
|
|
| @@ -1399,7 +1403,7 @@ void InstructionSelector::VisitReturn(Node* ret) {
|
| for (int i = 0; i < ret_count; ++i) {
|
| value_locations[i] =
|
| g.UseLocation(ret->InputAt(i), linkage()->GetReturnLocation(i),
|
| - linkage()->GetReturnType(i));
|
| + linkage()->GetReturnType(i).representation());
|
| }
|
| Emit(kArchRet, 0, nullptr, ret_count, value_locations);
|
| }
|
|
|