| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1797 __ cmp(temp2, Operand(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); | 1797 __ cmp(temp2, Operand(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
| 1798 __ b(lt, is_not_object); | 1798 __ b(lt, is_not_object); |
| 1799 __ cmp(temp2, Operand(LAST_NONCALLABLE_SPEC_OBJECT_TYPE)); | 1799 __ cmp(temp2, Operand(LAST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
| 1800 return le; | 1800 return le; |
| 1801 } | 1801 } |
| 1802 | 1802 |
| 1803 | 1803 |
| 1804 void LCodeGen::DoIsObjectAndBranch(LIsObjectAndBranch* instr) { | 1804 void LCodeGen::DoIsObjectAndBranch(LIsObjectAndBranch* instr) { |
| 1805 Register reg = ToRegister(instr->InputAt(0)); | 1805 Register reg = ToRegister(instr->InputAt(0)); |
| 1806 Register temp1 = ToRegister(instr->TempAt(0)); | 1806 Register temp1 = ToRegister(instr->TempAt(0)); |
| 1807 Register temp2 = scratch0(); | |
| 1808 | 1807 |
| 1809 int true_block = chunk_->LookupDestination(instr->true_block_id()); | 1808 int true_block = chunk_->LookupDestination(instr->true_block_id()); |
| 1810 int false_block = chunk_->LookupDestination(instr->false_block_id()); | 1809 int false_block = chunk_->LookupDestination(instr->false_block_id()); |
| 1811 Label* true_label = chunk_->GetAssemblyLabel(true_block); | 1810 Label* true_label = chunk_->GetAssemblyLabel(true_block); |
| 1812 Label* false_label = chunk_->GetAssemblyLabel(false_block); | 1811 Label* false_label = chunk_->GetAssemblyLabel(false_block); |
| 1813 | 1812 |
| 1814 Condition true_cond = | 1813 Condition true_cond = |
| 1815 EmitIsObject(reg, temp1, false_label, true_label); | 1814 EmitIsObject(reg, temp1, false_label, true_label); |
| 1816 | 1815 |
| 1817 EmitBranch(true_block, false_block, true_cond); | 1816 EmitBranch(true_block, false_block, true_cond); |
| (...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2752 | 2751 |
| 2753 void LCodeGen::DoOuterContext(LOuterContext* instr) { | 2752 void LCodeGen::DoOuterContext(LOuterContext* instr) { |
| 2754 Register context = ToRegister(instr->context()); | 2753 Register context = ToRegister(instr->context()); |
| 2755 Register result = ToRegister(instr->result()); | 2754 Register result = ToRegister(instr->result()); |
| 2756 __ ldr(result, | 2755 __ ldr(result, |
| 2757 MemOperand(context, Context::SlotOffset(Context::PREVIOUS_INDEX))); | 2756 MemOperand(context, Context::SlotOffset(Context::PREVIOUS_INDEX))); |
| 2758 } | 2757 } |
| 2759 | 2758 |
| 2760 | 2759 |
| 2761 void LCodeGen::DoGlobalObject(LGlobalObject* instr) { | 2760 void LCodeGen::DoGlobalObject(LGlobalObject* instr) { |
| 2762 Register context = ToRegister(instr->context()); | |
| 2763 Register result = ToRegister(instr->result()); | 2761 Register result = ToRegister(instr->result()); |
| 2764 __ ldr(result, ContextOperand(cp, Context::GLOBAL_INDEX)); | 2762 __ ldr(result, ContextOperand(cp, Context::GLOBAL_INDEX)); |
| 2765 } | 2763 } |
| 2766 | 2764 |
| 2767 | 2765 |
| 2768 void LCodeGen::DoGlobalReceiver(LGlobalReceiver* instr) { | 2766 void LCodeGen::DoGlobalReceiver(LGlobalReceiver* instr) { |
| 2769 Register global = ToRegister(instr->global()); | 2767 Register global = ToRegister(instr->global()); |
| 2770 Register result = ToRegister(instr->result()); | 2768 Register result = ToRegister(instr->result()); |
| 2771 __ ldr(result, FieldMemOperand(global, GlobalObject::kGlobalReceiverOffset)); | 2769 __ ldr(result, FieldMemOperand(global, GlobalObject::kGlobalReceiverOffset)); |
| 2772 } | 2770 } |
| (...skipping 1185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3958 instr->hydrogen()->deoptimize_on_undefined(), | 3956 instr->hydrogen()->deoptimize_on_undefined(), |
| 3959 instr->environment()); | 3957 instr->environment()); |
| 3960 } | 3958 } |
| 3961 | 3959 |
| 3962 | 3960 |
| 3963 void LCodeGen::DoDoubleToI(LDoubleToI* instr) { | 3961 void LCodeGen::DoDoubleToI(LDoubleToI* instr) { |
| 3964 Register result_reg = ToRegister(instr->result()); | 3962 Register result_reg = ToRegister(instr->result()); |
| 3965 Register scratch1 = scratch0(); | 3963 Register scratch1 = scratch0(); |
| 3966 Register scratch2 = ToRegister(instr->TempAt(0)); | 3964 Register scratch2 = ToRegister(instr->TempAt(0)); |
| 3967 DwVfpRegister double_input = ToDoubleRegister(instr->InputAt(0)); | 3965 DwVfpRegister double_input = ToDoubleRegister(instr->InputAt(0)); |
| 3968 DwVfpRegister double_scratch = double_scratch0(); | |
| 3969 SwVfpRegister single_scratch = double_scratch0().low(); | 3966 SwVfpRegister single_scratch = double_scratch0().low(); |
| 3970 | 3967 |
| 3971 Label done; | 3968 Label done; |
| 3972 | 3969 |
| 3973 if (instr->truncating()) { | 3970 if (instr->truncating()) { |
| 3974 Register scratch3 = ToRegister(instr->TempAt(1)); | 3971 Register scratch3 = ToRegister(instr->TempAt(1)); |
| 3975 __ EmitECMATruncate(result_reg, | 3972 __ EmitECMATruncate(result_reg, |
| 3976 double_input, | 3973 double_input, |
| 3977 single_scratch, | 3974 single_scratch, |
| 3978 scratch1, | 3975 scratch1, |
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4527 ASSERT(osr_pc_offset_ == -1); | 4524 ASSERT(osr_pc_offset_ == -1); |
| 4528 osr_pc_offset_ = masm()->pc_offset(); | 4525 osr_pc_offset_ = masm()->pc_offset(); |
| 4529 } | 4526 } |
| 4530 | 4527 |
| 4531 | 4528 |
| 4532 | 4529 |
| 4533 | 4530 |
| 4534 #undef __ | 4531 #undef __ |
| 4535 | 4532 |
| 4536 } } // namespace v8::internal | 4533 } } // namespace v8::internal |
| OLD | NEW |