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 |