OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved.7 | 1 // Copyright 2012 the V8 project authors. All rights reserved.7 |
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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 | 143 |
144 // a1: Callee's JS function. | 144 // a1: Callee's JS function. |
145 // cp: Callee's context. | 145 // cp: Callee's context. |
146 // fp: Caller's frame pointer. | 146 // fp: Caller's frame pointer. |
147 // lr: Caller's pc. | 147 // lr: Caller's pc. |
148 | 148 |
149 // Classic mode functions and builtins need to replace the receiver with the | 149 // Classic mode functions and builtins need to replace the receiver with the |
150 // global proxy when called as functions (without an explicit receiver | 150 // global proxy when called as functions (without an explicit receiver |
151 // object). | 151 // object). |
152 if (info_->this_has_uses() && | 152 if (info_->this_has_uses() && |
153 info_->is_classic_mode() && | 153 info_->is_sloppy_mode() && |
154 !info_->is_native()) { | 154 !info_->is_native()) { |
155 Label ok; | 155 Label ok; |
156 int receiver_offset = info_->scope()->num_parameters() * kPointerSize; | 156 int receiver_offset = info_->scope()->num_parameters() * kPointerSize; |
157 __ LoadRoot(at, Heap::kUndefinedValueRootIndex); | 157 __ LoadRoot(at, Heap::kUndefinedValueRootIndex); |
158 __ lw(a2, MemOperand(sp, receiver_offset)); | 158 __ lw(a2, MemOperand(sp, receiver_offset)); |
159 __ Branch(&ok, ne, a2, Operand(at)); | 159 __ Branch(&ok, ne, a2, Operand(at)); |
160 | 160 |
161 __ lw(a2, GlobalObjectOperand()); | 161 __ lw(a2, GlobalObjectOperand()); |
162 __ lw(a2, FieldMemOperand(a2, GlobalObject::kGlobalReceiverOffset)); | 162 __ lw(a2, FieldMemOperand(a2, GlobalObject::kGlobalReceiverOffset)); |
163 | 163 |
(...skipping 2912 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3076 case FLOAT64_ELEMENTS: | 3076 case FLOAT64_ELEMENTS: |
3077 case EXTERNAL_FLOAT32_ELEMENTS: | 3077 case EXTERNAL_FLOAT32_ELEMENTS: |
3078 case EXTERNAL_FLOAT64_ELEMENTS: | 3078 case EXTERNAL_FLOAT64_ELEMENTS: |
3079 case FAST_DOUBLE_ELEMENTS: | 3079 case FAST_DOUBLE_ELEMENTS: |
3080 case FAST_ELEMENTS: | 3080 case FAST_ELEMENTS: |
3081 case FAST_SMI_ELEMENTS: | 3081 case FAST_SMI_ELEMENTS: |
3082 case FAST_HOLEY_DOUBLE_ELEMENTS: | 3082 case FAST_HOLEY_DOUBLE_ELEMENTS: |
3083 case FAST_HOLEY_ELEMENTS: | 3083 case FAST_HOLEY_ELEMENTS: |
3084 case FAST_HOLEY_SMI_ELEMENTS: | 3084 case FAST_HOLEY_SMI_ELEMENTS: |
3085 case DICTIONARY_ELEMENTS: | 3085 case DICTIONARY_ELEMENTS: |
3086 case NON_STRICT_ARGUMENTS_ELEMENTS: | 3086 case SLOPPY_ARGUMENTS_ELEMENTS: |
3087 UNREACHABLE(); | 3087 UNREACHABLE(); |
3088 break; | 3088 break; |
3089 } | 3089 } |
3090 } | 3090 } |
3091 } | 3091 } |
3092 | 3092 |
3093 | 3093 |
3094 void LCodeGen::DoLoadKeyedFixedDoubleArray(LLoadKeyed* instr) { | 3094 void LCodeGen::DoLoadKeyedFixedDoubleArray(LLoadKeyed* instr) { |
3095 Register elements = ToRegister(instr->elements()); | 3095 Register elements = ToRegister(instr->elements()); |
3096 bool key_is_constant = instr->key()->IsConstantOperand(); | 3096 bool key_is_constant = instr->key()->IsConstantOperand(); |
(...skipping 1086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4183 case FLOAT64_ELEMENTS: | 4183 case FLOAT64_ELEMENTS: |
4184 case EXTERNAL_FLOAT32_ELEMENTS: | 4184 case EXTERNAL_FLOAT32_ELEMENTS: |
4185 case EXTERNAL_FLOAT64_ELEMENTS: | 4185 case EXTERNAL_FLOAT64_ELEMENTS: |
4186 case FAST_DOUBLE_ELEMENTS: | 4186 case FAST_DOUBLE_ELEMENTS: |
4187 case FAST_ELEMENTS: | 4187 case FAST_ELEMENTS: |
4188 case FAST_SMI_ELEMENTS: | 4188 case FAST_SMI_ELEMENTS: |
4189 case FAST_HOLEY_DOUBLE_ELEMENTS: | 4189 case FAST_HOLEY_DOUBLE_ELEMENTS: |
4190 case FAST_HOLEY_ELEMENTS: | 4190 case FAST_HOLEY_ELEMENTS: |
4191 case FAST_HOLEY_SMI_ELEMENTS: | 4191 case FAST_HOLEY_SMI_ELEMENTS: |
4192 case DICTIONARY_ELEMENTS: | 4192 case DICTIONARY_ELEMENTS: |
4193 case NON_STRICT_ARGUMENTS_ELEMENTS: | 4193 case SLOPPY_ARGUMENTS_ELEMENTS: |
4194 UNREACHABLE(); | 4194 UNREACHABLE(); |
4195 break; | 4195 break; |
4196 } | 4196 } |
4197 } | 4197 } |
4198 } | 4198 } |
4199 | 4199 |
4200 | 4200 |
4201 void LCodeGen::DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr) { | 4201 void LCodeGen::DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr) { |
4202 DoubleRegister value = ToDoubleRegister(instr->value()); | 4202 DoubleRegister value = ToDoubleRegister(instr->value()); |
4203 Register elements = ToRegister(instr->elements()); | 4203 Register elements = ToRegister(instr->elements()); |
(...skipping 1538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5742 __ Subu(scratch, result, scratch); | 5742 __ Subu(scratch, result, scratch); |
5743 __ lw(result, FieldMemOperand(scratch, | 5743 __ lw(result, FieldMemOperand(scratch, |
5744 FixedArray::kHeaderSize - kPointerSize)); | 5744 FixedArray::kHeaderSize - kPointerSize)); |
5745 __ bind(&done); | 5745 __ bind(&done); |
5746 } | 5746 } |
5747 | 5747 |
5748 | 5748 |
5749 #undef __ | 5749 #undef __ |
5750 | 5750 |
5751 } } // namespace v8::internal | 5751 } } // namespace v8::internal |
OLD | NEW |