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

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

Issue 2683203002: Revert of [compiler] Pass deoptimization_kind through DeoptimizeParameters and FlagsContinuation (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « src/compiler/mips64/code-generator-mips64.cc ('k') | src/compiler/ppc/code-generator-ppc.cc » ('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/base/adapters.h" 5 #include "src/base/adapters.h"
6 #include "src/base/bits.h" 6 #include "src/base/bits.h"
7 #include "src/compiler/instruction-selector-impl.h" 7 #include "src/compiler/instruction-selector-impl.h"
8 #include "src/compiler/node-matchers.h" 8 #include "src/compiler/node-matchers.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 10
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 } 300 }
301 301
302 DCHECK_NE(0u, input_count); 302 DCHECK_NE(0u, input_count);
303 DCHECK_NE(0u, output_count); 303 DCHECK_NE(0u, output_count);
304 DCHECK_GE(arraysize(inputs), input_count); 304 DCHECK_GE(arraysize(inputs), input_count);
305 DCHECK_GE(arraysize(outputs), output_count); 305 DCHECK_GE(arraysize(outputs), output_count);
306 306
307 opcode = cont->Encode(opcode); 307 opcode = cont->Encode(opcode);
308 if (cont->IsDeoptimize()) { 308 if (cont->IsDeoptimize()) {
309 selector->EmitDeoptimize(opcode, output_count, outputs, input_count, inputs, 309 selector->EmitDeoptimize(opcode, output_count, outputs, input_count, inputs,
310 cont->kind(), cont->reason(), cont->frame_state()); 310 cont->reason(), cont->frame_state());
311 } else { 311 } else {
312 selector->Emit(opcode, output_count, outputs, input_count, inputs); 312 selector->Emit(opcode, output_count, outputs, input_count, inputs);
313 } 313 }
314 } 314 }
315 315
316 static void VisitBinop(InstructionSelector* selector, Node* node, 316 static void VisitBinop(InstructionSelector* selector, Node* node,
317 InstructionCode opcode, bool has_reverse_opcode, 317 InstructionCode opcode, bool has_reverse_opcode,
318 InstructionCode reverse_opcode) { 318 InstructionCode reverse_opcode) {
319 FlagsContinuation cont; 319 FlagsContinuation cont;
320 VisitBinop(selector, node, opcode, has_reverse_opcode, reverse_opcode, &cont); 320 VisitBinop(selector, node, opcode, has_reverse_opcode, reverse_opcode, &cont);
(...skipping 1613 matching lines...) Expand 10 before | Expand all | Expand 10 after
1934 // Shared routine for multiple compare operations. 1934 // Shared routine for multiple compare operations.
1935 static void VisitCompare(InstructionSelector* selector, InstructionCode opcode, 1935 static void VisitCompare(InstructionSelector* selector, InstructionCode opcode,
1936 InstructionOperand left, InstructionOperand right, 1936 InstructionOperand left, InstructionOperand right,
1937 FlagsContinuation* cont) { 1937 FlagsContinuation* cont) {
1938 Mips64OperandGenerator g(selector); 1938 Mips64OperandGenerator g(selector);
1939 opcode = cont->Encode(opcode); 1939 opcode = cont->Encode(opcode);
1940 if (cont->IsBranch()) { 1940 if (cont->IsBranch()) {
1941 selector->Emit(opcode, g.NoOutput(), left, right, 1941 selector->Emit(opcode, g.NoOutput(), left, right,
1942 g.Label(cont->true_block()), g.Label(cont->false_block())); 1942 g.Label(cont->true_block()), g.Label(cont->false_block()));
1943 } else if (cont->IsDeoptimize()) { 1943 } else if (cont->IsDeoptimize()) {
1944 selector->EmitDeoptimize(opcode, g.NoOutput(), left, right, cont->kind(), 1944 selector->EmitDeoptimize(opcode, g.NoOutput(), left, right, cont->reason(),
1945 cont->reason(), cont->frame_state()); 1945 cont->frame_state());
1946 } else if (cont->IsSet()) { 1946 } else if (cont->IsSet()) {
1947 selector->Emit(opcode, g.DefineAsRegister(cont->result()), left, right); 1947 selector->Emit(opcode, g.DefineAsRegister(cont->result()), left, right);
1948 } else { 1948 } else {
1949 DCHECK(cont->IsTrap()); 1949 DCHECK(cont->IsTrap());
1950 selector->Emit(opcode, g.NoOutput(), left, right, 1950 selector->Emit(opcode, g.NoOutput(), left, right,
1951 g.TempImmediate(cont->trap_id())); 1951 g.TempImmediate(cont->trap_id()));
1952 } 1952 }
1953 } 1953 }
1954 1954
1955 1955
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
2151 void EmitWordCompareZero(InstructionSelector* selector, Node* value, 2151 void EmitWordCompareZero(InstructionSelector* selector, Node* value,
2152 FlagsContinuation* cont) { 2152 FlagsContinuation* cont) {
2153 Mips64OperandGenerator g(selector); 2153 Mips64OperandGenerator g(selector);
2154 InstructionCode opcode = cont->Encode(kMips64Cmp); 2154 InstructionCode opcode = cont->Encode(kMips64Cmp);
2155 InstructionOperand const value_operand = g.UseRegister(value); 2155 InstructionOperand const value_operand = g.UseRegister(value);
2156 if (cont->IsBranch()) { 2156 if (cont->IsBranch()) {
2157 selector->Emit(opcode, g.NoOutput(), value_operand, g.TempImmediate(0), 2157 selector->Emit(opcode, g.NoOutput(), value_operand, g.TempImmediate(0),
2158 g.Label(cont->true_block()), g.Label(cont->false_block())); 2158 g.Label(cont->true_block()), g.Label(cont->false_block()));
2159 } else if (cont->IsDeoptimize()) { 2159 } else if (cont->IsDeoptimize()) {
2160 selector->EmitDeoptimize(opcode, g.NoOutput(), value_operand, 2160 selector->EmitDeoptimize(opcode, g.NoOutput(), value_operand,
2161 g.TempImmediate(0), cont->kind(), cont->reason(), 2161 g.TempImmediate(0), cont->reason(),
2162 cont->frame_state()); 2162 cont->frame_state());
2163 } else if (cont->IsTrap()) { 2163 } else if (cont->IsTrap()) {
2164 selector->Emit(opcode, g.NoOutput(), value_operand, g.TempImmediate(0), 2164 selector->Emit(opcode, g.NoOutput(), value_operand, g.TempImmediate(0),
2165 g.TempImmediate(cont->trap_id())); 2165 g.TempImmediate(cont->trap_id()));
2166 } else { 2166 } else {
2167 selector->Emit(opcode, g.DefineAsRegister(cont->result()), value_operand, 2167 selector->Emit(opcode, g.DefineAsRegister(cont->result()), value_operand,
2168 g.TempImmediate(0)); 2168 g.TempImmediate(0));
2169 } 2169 }
2170 } 2170 }
2171 2171
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
2290 2290
2291 } // namespace 2291 } // namespace
2292 2292
2293 void InstructionSelector::VisitBranch(Node* branch, BasicBlock* tbranch, 2293 void InstructionSelector::VisitBranch(Node* branch, BasicBlock* tbranch,
2294 BasicBlock* fbranch) { 2294 BasicBlock* fbranch) {
2295 FlagsContinuation cont(kNotEqual, tbranch, fbranch); 2295 FlagsContinuation cont(kNotEqual, tbranch, fbranch);
2296 VisitWordCompareZero(this, branch, branch->InputAt(0), &cont); 2296 VisitWordCompareZero(this, branch, branch->InputAt(0), &cont);
2297 } 2297 }
2298 2298
2299 void InstructionSelector::VisitDeoptimizeIf(Node* node) { 2299 void InstructionSelector::VisitDeoptimizeIf(Node* node) {
2300 DeoptimizeParameters p = DeoptimizeParametersOf(node->op());
2301 FlagsContinuation cont = FlagsContinuation::ForDeoptimize( 2300 FlagsContinuation cont = FlagsContinuation::ForDeoptimize(
2302 kNotEqual, p.kind(), p.reason(), node->InputAt(1)); 2301 kNotEqual, DeoptimizeReasonOf(node->op()), node->InputAt(1));
2303 VisitWordCompareZero(this, node, node->InputAt(0), &cont); 2302 VisitWordCompareZero(this, node, node->InputAt(0), &cont);
2304 } 2303 }
2305 2304
2306 void InstructionSelector::VisitDeoptimizeUnless(Node* node) { 2305 void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
2307 DeoptimizeParameters p = DeoptimizeParametersOf(node->op());
2308 FlagsContinuation cont = FlagsContinuation::ForDeoptimize( 2306 FlagsContinuation cont = FlagsContinuation::ForDeoptimize(
2309 kEqual, p.kind(), p.reason(), node->InputAt(1)); 2307 kEqual, DeoptimizeReasonOf(node->op()), node->InputAt(1));
2310 VisitWordCompareZero(this, node, node->InputAt(0), &cont); 2308 VisitWordCompareZero(this, node, node->InputAt(0), &cont);
2311 } 2309 }
2312 2310
2313 void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) { 2311 void InstructionSelector::VisitTrapIf(Node* node, Runtime::FunctionId func_id) {
2314 FlagsContinuation cont = 2312 FlagsContinuation cont =
2315 FlagsContinuation::ForTrap(kNotEqual, func_id, node->InputAt(1)); 2313 FlagsContinuation::ForTrap(kNotEqual, func_id, node->InputAt(1));
2316 VisitWordCompareZero(this, node, node->InputAt(0), &cont); 2314 VisitWordCompareZero(this, node, node->InputAt(0), &cont);
2317 } 2315 }
2318 2316
2319 void InstructionSelector::VisitTrapUnless(Node* node, 2317 void InstructionSelector::VisitTrapUnless(Node* node,
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
2642 } else { 2640 } else {
2643 DCHECK(kArchVariant == kMips64r2); 2641 DCHECK(kArchVariant == kMips64r2);
2644 return MachineOperatorBuilder::AlignmentRequirements:: 2642 return MachineOperatorBuilder::AlignmentRequirements::
2645 NoUnalignedAccessSupport(); 2643 NoUnalignedAccessSupport();
2646 } 2644 }
2647 } 2645 }
2648 2646
2649 } // namespace compiler 2647 } // namespace compiler
2650 } // namespace internal 2648 } // namespace internal
2651 } // namespace v8 2649 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/mips64/code-generator-mips64.cc ('k') | src/compiler/ppc/code-generator-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698