| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/arm/lithium-codegen-arm.h" | 7 #include "src/arm/lithium-codegen-arm.h" | 
| 8 #include "src/arm/lithium-gap-resolver-arm.h" | 8 #include "src/arm/lithium-gap-resolver-arm.h" | 
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" | 
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" | 
| (...skipping 4960 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4971     __ bind(&check_bools); | 4971     __ bind(&check_bools); | 
| 4972     __ LoadRoot(ip, Heap::kTrueValueRootIndex); | 4972     __ LoadRoot(ip, Heap::kTrueValueRootIndex); | 
| 4973     __ cmp(scratch2, Operand(ip)); | 4973     __ cmp(scratch2, Operand(ip)); | 
| 4974     __ b(ne, &check_false); | 4974     __ b(ne, &check_false); | 
| 4975     __ mov(input_reg, Operand(1)); | 4975     __ mov(input_reg, Operand(1)); | 
| 4976     __ b(&done); | 4976     __ b(&done); | 
| 4977 | 4977 | 
| 4978     __ bind(&check_false); | 4978     __ bind(&check_false); | 
| 4979     __ LoadRoot(ip, Heap::kFalseValueRootIndex); | 4979     __ LoadRoot(ip, Heap::kFalseValueRootIndex); | 
| 4980     __ cmp(scratch2, Operand(ip)); | 4980     __ cmp(scratch2, Operand(ip)); | 
| 4981     __ RecordComment("Deferred TaggedToI: cannot truncate"); | 4981     DeoptimizeIf(ne, instr, "cannot truncate"); | 
| 4982     DeoptimizeIf(ne, instr); |  | 
| 4983     __ mov(input_reg, Operand::Zero()); | 4982     __ mov(input_reg, Operand::Zero()); | 
| 4984   } else { | 4983   } else { | 
| 4985     __ RecordComment("Deferred TaggedToI: not a heap number"); | 4984     DeoptimizeIf(ne, instr, "not a heap number"); | 
| 4986     DeoptimizeIf(ne, instr); |  | 
| 4987 | 4985 | 
| 4988     __ sub(ip, scratch2, Operand(kHeapObjectTag)); | 4986     __ sub(ip, scratch2, Operand(kHeapObjectTag)); | 
| 4989     __ vldr(double_scratch2, ip, HeapNumber::kValueOffset); | 4987     __ vldr(double_scratch2, ip, HeapNumber::kValueOffset); | 
| 4990     __ TryDoubleToInt32Exact(input_reg, double_scratch2, double_scratch); | 4988     __ TryDoubleToInt32Exact(input_reg, double_scratch2, double_scratch); | 
| 4991     __ RecordComment("Deferred TaggedToI: lost precision or NaN"); | 4989     DeoptimizeIf(ne, instr, "lost precision or NaN"); | 
| 4992     DeoptimizeIf(ne, instr); |  | 
| 4993 | 4990 | 
| 4994     if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) { | 4991     if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) { | 
| 4995       __ cmp(input_reg, Operand::Zero()); | 4992       __ cmp(input_reg, Operand::Zero()); | 
| 4996       __ b(ne, &done); | 4993       __ b(ne, &done); | 
| 4997       __ VmovHigh(scratch1, double_scratch2); | 4994       __ VmovHigh(scratch1, double_scratch2); | 
| 4998       __ tst(scratch1, Operand(HeapNumber::kSignMask)); | 4995       __ tst(scratch1, Operand(HeapNumber::kSignMask)); | 
| 4999       __ RecordComment("Deferred TaggedToI: minus zero"); | 4996       DeoptimizeIf(ne, instr, "minus zero"); | 
| 5000       DeoptimizeIf(ne, instr); |  | 
| 5001     } | 4997     } | 
| 5002   } | 4998   } | 
| 5003   __ bind(&done); | 4999   __ bind(&done); | 
| 5004 } | 5000 } | 
| 5005 | 5001 | 
| 5006 | 5002 | 
| 5007 void LCodeGen::DoTaggedToI(LTaggedToI* instr) { | 5003 void LCodeGen::DoTaggedToI(LTaggedToI* instr) { | 
| 5008   class DeferredTaggedToI FINAL : public LDeferredCode { | 5004   class DeferredTaggedToI FINAL : public LDeferredCode { | 
| 5009    public: | 5005    public: | 
| 5010     DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr) | 5006     DeferredTaggedToI(LCodeGen* codegen, LTaggedToI* instr) | 
| (...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5912   __ Push(scope_info); | 5908   __ Push(scope_info); | 
| 5913   __ push(ToRegister(instr->function())); | 5909   __ push(ToRegister(instr->function())); | 
| 5914   CallRuntime(Runtime::kPushBlockContext, 2, instr); | 5910   CallRuntime(Runtime::kPushBlockContext, 2, instr); | 
| 5915   RecordSafepoint(Safepoint::kNoLazyDeopt); | 5911   RecordSafepoint(Safepoint::kNoLazyDeopt); | 
| 5916 } | 5912 } | 
| 5917 | 5913 | 
| 5918 | 5914 | 
| 5919 #undef __ | 5915 #undef __ | 
| 5920 | 5916 | 
| 5921 } }  // namespace v8::internal | 5917 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|