| OLD | NEW |
| 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 "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #include "arm64/lithium-codegen-arm64.h" | 7 #include "arm64/lithium-codegen-arm64.h" |
| 8 #include "arm64/lithium-gap-resolver-arm64.h" | 8 #include "arm64/lithium-gap-resolver-arm64.h" |
| 9 #include "code-stubs.h" | 9 #include "code-stubs.h" |
| 10 #include "stub-cache.h" | 10 #include "stub-cache.h" |
| (...skipping 2411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2422 __ Ldr(scratch, FieldMemOperand(value, HeapNumber::kValueOffset)); | 2422 __ Ldr(scratch, FieldMemOperand(value, HeapNumber::kValueOffset)); |
| 2423 __ JumpIfMinusZero(scratch, instr->TrueLabel(chunk())); | 2423 __ JumpIfMinusZero(scratch, instr->TrueLabel(chunk())); |
| 2424 } | 2424 } |
| 2425 EmitGoto(instr->FalseDestination(chunk())); | 2425 EmitGoto(instr->FalseDestination(chunk())); |
| 2426 } | 2426 } |
| 2427 | 2427 |
| 2428 | 2428 |
| 2429 void LCodeGen::DoCompareNumericAndBranch(LCompareNumericAndBranch* instr) { | 2429 void LCodeGen::DoCompareNumericAndBranch(LCompareNumericAndBranch* instr) { |
| 2430 LOperand* left = instr->left(); | 2430 LOperand* left = instr->left(); |
| 2431 LOperand* right = instr->right(); | 2431 LOperand* right = instr->right(); |
| 2432 Condition cond = TokenToCondition(instr->op(), false); | 2432 bool is_unsigned = instr->hydrogen()->CheckFlag(HInstruction::kUint32); |
| 2433 Condition cond = TokenToCondition(instr->op(), is_unsigned); |
| 2433 | 2434 |
| 2434 if (left->IsConstantOperand() && right->IsConstantOperand()) { | 2435 if (left->IsConstantOperand() && right->IsConstantOperand()) { |
| 2435 // We can statically evaluate the comparison. | 2436 // We can statically evaluate the comparison. |
| 2436 double left_val = ToDouble(LConstantOperand::cast(left)); | 2437 double left_val = ToDouble(LConstantOperand::cast(left)); |
| 2437 double right_val = ToDouble(LConstantOperand::cast(right)); | 2438 double right_val = ToDouble(LConstantOperand::cast(right)); |
| 2438 int next_block = EvalComparison(instr->op(), left_val, right_val) ? | 2439 int next_block = EvalComparison(instr->op(), left_val, right_val) ? |
| 2439 instr->TrueDestination(chunk_) : instr->FalseDestination(chunk_); | 2440 instr->TrueDestination(chunk_) : instr->FalseDestination(chunk_); |
| 2440 EmitGoto(next_block); | 2441 EmitGoto(next_block); |
| 2441 } else { | 2442 } else { |
| 2442 if (instr->is_double()) { | 2443 if (instr->is_double()) { |
| (...skipping 3568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6011 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); | 6012 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); |
| 6012 // Index is equal to negated out of object property index plus 1. | 6013 // Index is equal to negated out of object property index plus 1. |
| 6013 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); | 6014 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); |
| 6014 __ Ldr(result, FieldMemOperand(result, | 6015 __ Ldr(result, FieldMemOperand(result, |
| 6015 FixedArray::kHeaderSize - kPointerSize)); | 6016 FixedArray::kHeaderSize - kPointerSize)); |
| 6016 __ Bind(deferred->exit()); | 6017 __ Bind(deferred->exit()); |
| 6017 __ Bind(&done); | 6018 __ Bind(&done); |
| 6018 } | 6019 } |
| 6019 | 6020 |
| 6020 } } // namespace v8::internal | 6021 } } // namespace v8::internal |
| OLD | NEW |