OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/compiler/generic-node-inl.h" | 5 #include "src/compiler/generic-node-inl.h" |
6 #include "src/compiler/instruction-selector-impl.h" | 6 #include "src/compiler/instruction-selector-impl.h" |
7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" |
8 | 8 |
9 namespace v8 { | 9 namespace v8 { |
10 namespace internal { | 10 namespace internal { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 size_t input_count = 0; | 98 size_t input_count = 0; |
99 // Compute inputs_ and input_count. | 99 // Compute inputs_ and input_count. |
100 if (base_operand_ != NULL) { | 100 if (base_operand_ != NULL) { |
101 inputs[input_count++] = base_operand_; | 101 inputs[input_count++] = base_operand_; |
102 } | 102 } |
103 if (index_operand_ != NULL) { | 103 if (index_operand_ != NULL) { |
104 inputs[input_count++] = index_operand_; | 104 inputs[input_count++] = index_operand_; |
105 } | 105 } |
106 if (displacement_operand_ != NULL) { | 106 if (displacement_operand_ != NULL) { |
107 // Pure displacement mode not supported by x64. | 107 // Pure displacement mode not supported by x64. |
108 DCHECK_NE(input_count, 0); | 108 DCHECK_NE(static_cast<int>(input_count), 0); |
109 inputs[input_count++] = displacement_operand_; | 109 inputs[input_count++] = displacement_operand_; |
110 } | 110 } |
111 DCHECK_NE(input_count, 0); | 111 DCHECK_NE(static_cast<int>(input_count), 0); |
112 return input_count; | 112 return input_count; |
113 } | 113 } |
114 | 114 |
115 static const int kMaxInputCount = 3; | 115 static const int kMaxInputCount = 3; |
116 InstructionOperand* base_operand_; | 116 InstructionOperand* base_operand_; |
117 InstructionOperand* index_operand_; | 117 InstructionOperand* index_operand_; |
118 InstructionOperand* displacement_operand_; | 118 InstructionOperand* displacement_operand_; |
119 AddressingMode mode_; | 119 AddressingMode mode_; |
120 }; | 120 }; |
121 | 121 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 if (cont->IsBranch()) { | 255 if (cont->IsBranch()) { |
256 inputs[input_count++] = g.Label(cont->true_block()); | 256 inputs[input_count++] = g.Label(cont->true_block()); |
257 inputs[input_count++] = g.Label(cont->false_block()); | 257 inputs[input_count++] = g.Label(cont->false_block()); |
258 } | 258 } |
259 | 259 |
260 outputs[output_count++] = g.DefineSameAsFirst(node); | 260 outputs[output_count++] = g.DefineSameAsFirst(node); |
261 if (cont->IsSet()) { | 261 if (cont->IsSet()) { |
262 outputs[output_count++] = g.DefineAsRegister(cont->result()); | 262 outputs[output_count++] = g.DefineAsRegister(cont->result()); |
263 } | 263 } |
264 | 264 |
265 DCHECK_NE(0, input_count); | 265 DCHECK_NE(0, static_cast<int>(input_count)); |
266 DCHECK_NE(0, output_count); | 266 DCHECK_NE(0, static_cast<int>(output_count)); |
267 DCHECK_GE(arraysize(inputs), input_count); | 267 DCHECK_GE(arraysize(inputs), input_count); |
268 DCHECK_GE(arraysize(outputs), output_count); | 268 DCHECK_GE(arraysize(outputs), output_count); |
269 | 269 |
270 Instruction* instr = selector->Emit(cont->Encode(opcode), output_count, | 270 Instruction* instr = selector->Emit(cont->Encode(opcode), output_count, |
271 outputs, input_count, inputs); | 271 outputs, input_count, inputs); |
272 if (cont->IsBranch()) instr->MarkAsControl(); | 272 if (cont->IsBranch()) instr->MarkAsControl(); |
273 } | 273 } |
274 | 274 |
275 | 275 |
276 // Shared routine for multiple binary operations. | 276 // Shared routine for multiple binary operations. |
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 call_instr->MarkAsCall(); | 852 call_instr->MarkAsCall(); |
853 if (deoptimization != NULL) { | 853 if (deoptimization != NULL) { |
854 DCHECK(continuation != NULL); | 854 DCHECK(continuation != NULL); |
855 call_instr->MarkAsControl(); | 855 call_instr->MarkAsControl(); |
856 } | 856 } |
857 } | 857 } |
858 | 858 |
859 } // namespace compiler | 859 } // namespace compiler |
860 } // namespace internal | 860 } // namespace internal |
861 } // namespace v8 | 861 } // namespace v8 |
OLD | NEW |