OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 2814 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2825 void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) { | 2825 void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) { |
2826 __ LoadHeapObject(scratch0(), instr->hydrogen()->pairs()); | 2826 __ LoadHeapObject(scratch0(), instr->hydrogen()->pairs()); |
2827 __ li(scratch1(), Operand(Smi::FromInt(instr->hydrogen()->flags()))); | 2827 __ li(scratch1(), Operand(Smi::FromInt(instr->hydrogen()->flags()))); |
2828 // The context is the first argument. | 2828 // The context is the first argument. |
2829 __ Push(cp, scratch0(), scratch1()); | 2829 __ Push(cp, scratch0(), scratch1()); |
2830 CallRuntime(Runtime::kDeclareGlobals, 3, instr); | 2830 CallRuntime(Runtime::kDeclareGlobals, 3, instr); |
2831 } | 2831 } |
2832 | 2832 |
2833 | 2833 |
2834 void LCodeGen::DoGlobalObject(LGlobalObject* instr) { | 2834 void LCodeGen::DoGlobalObject(LGlobalObject* instr) { |
2835 Register context = ToRegister(instr->context()); | |
2836 Register result = ToRegister(instr->result()); | 2835 Register result = ToRegister(instr->result()); |
2837 __ lw(result, ContextOperand(cp, Context::GLOBAL_INDEX)); | 2836 __ lw(result, ContextOperand(cp, Context::GLOBAL_INDEX)); |
2838 } | 2837 } |
2839 | 2838 |
2840 | 2839 |
2841 void LCodeGen::DoGlobalReceiver(LGlobalReceiver* instr) { | 2840 void LCodeGen::DoGlobalReceiver(LGlobalReceiver* instr) { |
2842 Register global = ToRegister(instr->global()); | 2841 Register global = ToRegister(instr->global()); |
2843 Register result = ToRegister(instr->result()); | 2842 Register result = ToRegister(instr->result()); |
2844 __ lw(result, FieldMemOperand(global, GlobalObject::kGlobalReceiverOffset)); | 2843 __ lw(result, FieldMemOperand(global, GlobalObject::kGlobalReceiverOffset)); |
2845 } | 2844 } |
(...skipping 1303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4149 instr->hydrogen()->deoptimize_on_minus_zero(), | 4148 instr->hydrogen()->deoptimize_on_minus_zero(), |
4150 instr->environment()); | 4149 instr->environment()); |
4151 } | 4150 } |
4152 | 4151 |
4153 | 4152 |
4154 void LCodeGen::DoDoubleToI(LDoubleToI* instr) { | 4153 void LCodeGen::DoDoubleToI(LDoubleToI* instr) { |
4155 Register result_reg = ToRegister(instr->result()); | 4154 Register result_reg = ToRegister(instr->result()); |
4156 Register scratch1 = scratch0(); | 4155 Register scratch1 = scratch0(); |
4157 Register scratch2 = ToRegister(instr->TempAt(0)); | 4156 Register scratch2 = ToRegister(instr->TempAt(0)); |
4158 DoubleRegister double_input = ToDoubleRegister(instr->InputAt(0)); | 4157 DoubleRegister double_input = ToDoubleRegister(instr->InputAt(0)); |
4159 DoubleRegister double_scratch = double_scratch0(); | |
4160 FPURegister single_scratch = double_scratch0().low(); | 4158 FPURegister single_scratch = double_scratch0().low(); |
4161 | 4159 |
4162 if (instr->truncating()) { | 4160 if (instr->truncating()) { |
4163 Register scratch3 = ToRegister(instr->TempAt(1)); | 4161 Register scratch3 = ToRegister(instr->TempAt(1)); |
4164 __ EmitECMATruncate(result_reg, | 4162 __ EmitECMATruncate(result_reg, |
4165 double_input, | 4163 double_input, |
4166 single_scratch, | 4164 single_scratch, |
4167 scratch1, | 4165 scratch1, |
4168 scratch2, | 4166 scratch2, |
4169 scratch3); | 4167 scratch3); |
(...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5112 __ Subu(scratch, result, scratch); | 5110 __ Subu(scratch, result, scratch); |
5113 __ lw(result, FieldMemOperand(scratch, | 5111 __ lw(result, FieldMemOperand(scratch, |
5114 FixedArray::kHeaderSize - kPointerSize)); | 5112 FixedArray::kHeaderSize - kPointerSize)); |
5115 __ bind(&done); | 5113 __ bind(&done); |
5116 } | 5114 } |
5117 | 5115 |
5118 | 5116 |
5119 #undef __ | 5117 #undef __ |
5120 | 5118 |
5121 } } // namespace v8::internal | 5119 } } // namespace v8::internal |
OLD | NEW |