Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(471)

Side by Side Diff: src/compiler/ia32/instruction-selector-ia32.cc

Issue 430503007: Rename ASSERT* to DCHECK*. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE and fixes Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/compiler/ia32/code-generator-ia32.cc ('k') | src/compiler/instruction.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/instruction-selector-impl.h" 5 #include "src/compiler/instruction-selector-impl.h"
6 #include "src/compiler/node-matchers.h" 6 #include "src/compiler/node-matchers.h"
7 #include "src/compiler/node-properties-inl.h" 7 #include "src/compiler/node-properties-inl.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 89
90 void InstructionSelector::VisitStore(Node* node) { 90 void InstructionSelector::VisitStore(Node* node) {
91 IA32OperandGenerator g(this); 91 IA32OperandGenerator g(this);
92 Node* base = node->InputAt(0); 92 Node* base = node->InputAt(0);
93 Node* index = node->InputAt(1); 93 Node* index = node->InputAt(1);
94 Node* value = node->InputAt(2); 94 Node* value = node->InputAt(2);
95 95
96 StoreRepresentation store_rep = OpParameter<StoreRepresentation>(node); 96 StoreRepresentation store_rep = OpParameter<StoreRepresentation>(node);
97 MachineRepresentation rep = store_rep.rep; 97 MachineRepresentation rep = store_rep.rep;
98 if (store_rep.write_barrier_kind == kFullWriteBarrier) { 98 if (store_rep.write_barrier_kind == kFullWriteBarrier) {
99 ASSERT_EQ(kMachineTagged, rep); 99 DCHECK_EQ(kMachineTagged, rep);
100 // TODO(dcarney): refactor RecordWrite function to take temp registers 100 // TODO(dcarney): refactor RecordWrite function to take temp registers
101 // and pass them here instead of using fixed regs 101 // and pass them here instead of using fixed regs
102 // TODO(dcarney): handle immediate indices. 102 // TODO(dcarney): handle immediate indices.
103 InstructionOperand* temps[] = {g.TempRegister(ecx), g.TempRegister(edx)}; 103 InstructionOperand* temps[] = {g.TempRegister(ecx), g.TempRegister(edx)};
104 Emit(kIA32StoreWriteBarrier, NULL, g.UseFixed(base, ebx), 104 Emit(kIA32StoreWriteBarrier, NULL, g.UseFixed(base, ebx),
105 g.UseFixed(index, ecx), g.UseFixed(value, edx), ARRAY_SIZE(temps), 105 g.UseFixed(index, ecx), g.UseFixed(value, edx), ARRAY_SIZE(temps),
106 temps); 106 temps);
107 return; 107 return;
108 } 108 }
109 ASSERT_EQ(kNoWriteBarrier, store_rep.write_barrier_kind); 109 DCHECK_EQ(kNoWriteBarrier, store_rep.write_barrier_kind);
110 bool is_immediate = false; 110 bool is_immediate = false;
111 InstructionOperand* val; 111 InstructionOperand* val;
112 if (rep == kMachineFloat64) { 112 if (rep == kMachineFloat64) {
113 val = g.UseDoubleRegister(value); 113 val = g.UseDoubleRegister(value);
114 } else { 114 } else {
115 is_immediate = g.CanBeImmediate(value); 115 is_immediate = g.CanBeImmediate(value);
116 if (is_immediate) { 116 if (is_immediate) {
117 val = g.UseImmediate(value); 117 val = g.UseImmediate(value);
118 } else if (rep == kMachineWord8) { 118 } else if (rep == kMachineWord8) {
119 val = g.UseByteRegister(value); 119 val = g.UseByteRegister(value);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 inputs[input_count++] = g.Label(cont->true_block()); 184 inputs[input_count++] = g.Label(cont->true_block());
185 inputs[input_count++] = g.Label(cont->false_block()); 185 inputs[input_count++] = g.Label(cont->false_block());
186 } 186 }
187 187
188 outputs[output_count++] = g.DefineSameAsFirst(node); 188 outputs[output_count++] = g.DefineSameAsFirst(node);
189 if (cont->IsSet()) { 189 if (cont->IsSet()) {
190 // TODO(turbofan): Use byte register here. 190 // TODO(turbofan): Use byte register here.
191 outputs[output_count++] = g.DefineAsRegister(cont->result()); 191 outputs[output_count++] = g.DefineAsRegister(cont->result());
192 } 192 }
193 193
194 ASSERT_NE(0, input_count); 194 DCHECK_NE(0, input_count);
195 ASSERT_NE(0, output_count); 195 DCHECK_NE(0, output_count);
196 ASSERT_GE(ARRAY_SIZE(inputs), input_count); 196 DCHECK_GE(ARRAY_SIZE(inputs), input_count);
197 ASSERT_GE(ARRAY_SIZE(outputs), output_count); 197 DCHECK_GE(ARRAY_SIZE(outputs), output_count);
198 198
199 Instruction* instr = selector->Emit(cont->Encode(opcode), output_count, 199 Instruction* instr = selector->Emit(cont->Encode(opcode), output_count,
200 outputs, input_count, inputs); 200 outputs, input_count, inputs);
201 if (cont->IsBranch()) instr->MarkAsControl(); 201 if (cont->IsBranch()) instr->MarkAsControl();
202 } 202 }
203 203
204 204
205 // Shared routine for multiple binary operations. 205 // Shared routine for multiple binary operations.
206 static void VisitBinop(InstructionSelector* selector, Node* node, 206 static void VisitBinop(InstructionSelector* selector, Node* node,
207 InstructionCode opcode) { 207 InstructionCode opcode) {
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 InstructionCode opcode, 434 InstructionCode opcode,
435 InstructionOperand* left, 435 InstructionOperand* left,
436 InstructionOperand* right, 436 InstructionOperand* right,
437 FlagsContinuation* cont) { 437 FlagsContinuation* cont) {
438 IA32OperandGenerator g(selector); 438 IA32OperandGenerator g(selector);
439 if (cont->IsBranch()) { 439 if (cont->IsBranch()) {
440 selector->Emit(cont->Encode(opcode), NULL, left, right, 440 selector->Emit(cont->Encode(opcode), NULL, left, right,
441 g.Label(cont->true_block()), 441 g.Label(cont->true_block()),
442 g.Label(cont->false_block()))->MarkAsControl(); 442 g.Label(cont->false_block()))->MarkAsControl();
443 } else { 443 } else {
444 ASSERT(cont->IsSet()); 444 DCHECK(cont->IsSet());
445 // TODO(titzer): Needs byte register. 445 // TODO(titzer): Needs byte register.
446 selector->Emit(cont->Encode(opcode), g.DefineAsRegister(cont->result()), 446 selector->Emit(cont->Encode(opcode), g.DefineAsRegister(cont->result()),
447 left, right); 447 left, right);
448 } 448 }
449 } 449 }
450 450
451 451
452 // Shared routine for multiple word compare operations. 452 // Shared routine for multiple word compare operations.
453 static inline void VisitWordCompare(InstructionSelector* selector, Node* node, 453 static inline void VisitWordCompare(InstructionSelector* selector, Node* node,
454 InstructionCode opcode, 454 InstructionCode opcode,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 return; 536 return;
537 } 537 }
538 538
539 // Emit the call instruction. 539 // Emit the call instruction.
540 Instruction* call_instr = 540 Instruction* call_instr =
541 Emit(opcode, buffer.output_count, buffer.outputs, 541 Emit(opcode, buffer.output_count, buffer.outputs,
542 buffer.fixed_and_control_count(), buffer.fixed_and_control_args); 542 buffer.fixed_and_control_count(), buffer.fixed_and_control_args);
543 543
544 call_instr->MarkAsCall(); 544 call_instr->MarkAsCall();
545 if (deoptimization != NULL) { 545 if (deoptimization != NULL) {
546 ASSERT(continuation != NULL); 546 DCHECK(continuation != NULL);
547 call_instr->MarkAsControl(); 547 call_instr->MarkAsControl();
548 } 548 }
549 549
550 // Caller clean up of stack for C-style calls. 550 // Caller clean up of stack for C-style calls.
551 if (descriptor->kind() == CallDescriptor::kCallAddress && 551 if (descriptor->kind() == CallDescriptor::kCallAddress &&
552 buffer.pushed_count > 0) { 552 buffer.pushed_count > 0) {
553 ASSERT(deoptimization == NULL && continuation == NULL); 553 DCHECK(deoptimization == NULL && continuation == NULL);
554 Emit(kPopStack | MiscField::encode(buffer.pushed_count), NULL); 554 Emit(kPopStack | MiscField::encode(buffer.pushed_count), NULL);
555 } 555 }
556 } 556 }
557 557
558 } // namespace compiler 558 } // namespace compiler
559 } // namespace internal 559 } // namespace internal
560 } // namespace v8 560 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/ia32/code-generator-ia32.cc ('k') | src/compiler/instruction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698