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

Side by Side Diff: src/arm64/lithium-codegen-arm64.cc

Issue 357973002: ARM64: avoid duplicate load of double constants (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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/arm64/lithium-arm64.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/arm64/lithium-codegen-arm64.h" 7 #include "src/arm64/lithium-codegen-arm64.h"
8 #include "src/arm64/lithium-gap-resolver-arm64.h" 8 #include "src/arm64/lithium-gap-resolver-arm64.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/hydrogen-osr.h" 10 #include "src/hydrogen-osr.h"
(...skipping 2466 matching lines...) Expand 10 before | Expand all | Expand 10 after
2477 2477
2478 if (left->IsConstantOperand() && right->IsConstantOperand()) { 2478 if (left->IsConstantOperand() && right->IsConstantOperand()) {
2479 // We can statically evaluate the comparison. 2479 // We can statically evaluate the comparison.
2480 double left_val = ToDouble(LConstantOperand::cast(left)); 2480 double left_val = ToDouble(LConstantOperand::cast(left));
2481 double right_val = ToDouble(LConstantOperand::cast(right)); 2481 double right_val = ToDouble(LConstantOperand::cast(right));
2482 int next_block = EvalComparison(instr->op(), left_val, right_val) ? 2482 int next_block = EvalComparison(instr->op(), left_val, right_val) ?
2483 instr->TrueDestination(chunk_) : instr->FalseDestination(chunk_); 2483 instr->TrueDestination(chunk_) : instr->FalseDestination(chunk_);
2484 EmitGoto(next_block); 2484 EmitGoto(next_block);
2485 } else { 2485 } else {
2486 if (instr->is_double()) { 2486 if (instr->is_double()) {
2487 if (right->IsConstantOperand()) { 2487 __ Fcmp(ToDoubleRegister(left), ToDoubleRegister(right));
2488 __ Fcmp(ToDoubleRegister(left),
2489 ToDouble(LConstantOperand::cast(right)));
2490 } else if (left->IsConstantOperand()) {
2491 // Commute the operands and the condition.
2492 __ Fcmp(ToDoubleRegister(right),
2493 ToDouble(LConstantOperand::cast(left)));
2494 cond = CommuteCondition(cond);
2495 } else {
2496 __ Fcmp(ToDoubleRegister(left), ToDoubleRegister(right));
2497 }
2498 2488
2499 // If a NaN is involved, i.e. the result is unordered (V set), 2489 // If a NaN is involved, i.e. the result is unordered (V set),
2500 // jump to false block label. 2490 // jump to false block label.
2501 __ B(vs, instr->FalseLabel(chunk_)); 2491 __ B(vs, instr->FalseLabel(chunk_));
2502 EmitBranch(instr, cond); 2492 EmitBranch(instr, cond);
2503 } else { 2493 } else {
2504 if (instr->hydrogen_value()->representation().IsInteger32()) { 2494 if (instr->hydrogen_value()->representation().IsInteger32()) {
2505 if (right->IsConstantOperand()) { 2495 if (right->IsConstantOperand()) {
2506 EmitCompareAndBranch(instr, 2496 EmitCompareAndBranch(instr,
2507 cond, 2497 cond,
(...skipping 3545 matching lines...) Expand 10 before | Expand all | Expand 10 after
6053 Handle<ScopeInfo> scope_info = instr->scope_info(); 6043 Handle<ScopeInfo> scope_info = instr->scope_info();
6054 __ Push(scope_info); 6044 __ Push(scope_info);
6055 __ Push(ToRegister(instr->function())); 6045 __ Push(ToRegister(instr->function()));
6056 CallRuntime(Runtime::kPushBlockContext, 2, instr); 6046 CallRuntime(Runtime::kPushBlockContext, 2, instr);
6057 RecordSafepoint(Safepoint::kNoLazyDeopt); 6047 RecordSafepoint(Safepoint::kNoLazyDeopt);
6058 } 6048 }
6059 6049
6060 6050
6061 6051
6062 } } // namespace v8::internal 6052 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm64/lithium-arm64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698