Index: src/compiler/instruction-selector.cc |
diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc |
index 2bfc3e1c64ee9d0554e53700dceb9889ff0fda16..05ba19f71c187cbb33cae35c65f347c8cdc518a0 100644 |
--- a/src/compiler/instruction-selector.cc |
+++ b/src/compiler/instruction-selector.cc |
@@ -133,6 +133,31 @@ Instruction* InstructionSelector::Emit( |
Instruction* InstructionSelector::Emit( |
+ InstructionCode opcode, InstructionOperand* output, InstructionOperand* a, |
+ InstructionOperand* b, InstructionOperand* c, InstructionOperand* d, |
+ InstructionOperand* e, size_t temp_count, InstructionOperand** temps) { |
+ size_t output_count = output == NULL ? 0 : 1; |
+ InstructionOperand* inputs[] = {a, b, c, d, e}; |
+ size_t input_count = arraysize(inputs); |
+ return Emit(opcode, output_count, &output, input_count, inputs, temp_count, |
+ temps); |
+} |
+ |
+ |
+Instruction* InstructionSelector::Emit( |
+ InstructionCode opcode, InstructionOperand* output, InstructionOperand* a, |
+ InstructionOperand* b, InstructionOperand* c, InstructionOperand* d, |
+ InstructionOperand* e, InstructionOperand* f, size_t temp_count, |
+ InstructionOperand** temps) { |
+ size_t output_count = output == NULL ? 0 : 1; |
+ InstructionOperand* inputs[] = {a, b, c, d, e, f}; |
+ size_t input_count = arraysize(inputs); |
+ return Emit(opcode, output_count, &output, input_count, inputs, temp_count, |
+ temps); |
+} |
+ |
+ |
+Instruction* InstructionSelector::Emit( |
InstructionCode opcode, size_t output_count, InstructionOperand** outputs, |
size_t input_count, InstructionOperand** inputs, size_t temp_count, |
InstructionOperand** temps) { |
@@ -538,6 +563,10 @@ MachineType InstructionSelector::GetMachineType(Node* node) { |
return OpParameter<LoadRepresentation>(node); |
case IrOpcode::kStore: |
return kMachNone; |
+ case IrOpcode::kCheckedLoad: |
+ return OpParameter<MachineType>(node); |
+ case IrOpcode::kCheckedStore: |
+ return kMachNone; |
case IrOpcode::kWord32And: |
case IrOpcode::kWord32Or: |
case IrOpcode::kWord32Xor: |
@@ -808,6 +837,13 @@ void InstructionSelector::VisitNode(Node* node) { |
return MarkAsDouble(node), VisitFloat64RoundTiesAway(node); |
case IrOpcode::kLoadStackPointer: |
return VisitLoadStackPointer(node); |
+ case IrOpcode::kCheckedLoad: { |
+ MachineType rep = OpParameter<MachineType>(node); |
+ MarkAsRepresentation(rep, node); |
+ return VisitCheckedLoad(node); |
+ } |
+ case IrOpcode::kCheckedStore: |
+ return VisitCheckedStore(node); |
default: |
V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", |
node->opcode(), node->op()->mnemonic(), node->id()); |