OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 __ mov(r1, Operand(count)); | 238 __ mov(r1, Operand(count)); |
239 __ bind(&alloc_locals_loop); | 239 __ bind(&alloc_locals_loop); |
240 __ push(ip); | 240 __ push(ip); |
241 __ sub(r1, r1, Operand(1), SetCC); | 241 __ sub(r1, r1, Operand(1), SetCC); |
242 __ b(ne, &alloc_locals_loop); | 242 __ b(ne, &alloc_locals_loop); |
243 } | 243 } |
244 } else { | 244 } else { |
245 __ LoadRoot(r2, Heap::kStackLimitRootIndex); | 245 __ LoadRoot(r2, Heap::kStackLimitRootIndex); |
246 } | 246 } |
247 // Check the stack for overflow or a break request. | 247 // Check the stack for overflow or a break request. |
248 // Put the lr setup instruction in the delay slot. The kInstrSize is added | |
249 // to the implicit 8 byte offset that always applies to operations with pc | |
250 // and gives a return address 12 bytes down. | |
251 masm()->add(lr, pc, Operand(Assembler::kInstrSize)); | |
252 masm()->cmp(sp, Operand(r2)); | 248 masm()->cmp(sp, Operand(r2)); |
253 StackCheckStub stub; | 249 StackCheckStub stub; |
254 // Call the stub if lower. | 250 // Call the stub if lower. |
255 masm()->mov(pc, | 251 masm()->mov(ip, |
256 Operand(reinterpret_cast<intptr_t>(stub.GetCode().location()), | 252 Operand(reinterpret_cast<intptr_t>(stub.GetCode().location()), |
257 RelocInfo::CODE_TARGET), | 253 RelocInfo::CODE_TARGET), |
258 LeaveCC, | 254 LeaveCC, |
259 lo); | 255 lo); |
| 256 masm()->Call(ip, lo); |
260 } | 257 } |
261 | 258 |
262 | 259 |
263 | 260 |
264 void VirtualFrame::PushReceiverSlotAddress() { | 261 void VirtualFrame::PushReceiverSlotAddress() { |
265 UNIMPLEMENTED(); | 262 UNIMPLEMENTED(); |
266 } | 263 } |
267 | 264 |
268 | 265 |
269 void VirtualFrame::PushTryHandler(HandlerType type) { | 266 void VirtualFrame::PushTryHandler(HandlerType type) { |
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
826 break; | 823 break; |
827 } | 824 } |
828 ASSERT(register_allocation_map_ == 0); // Not yet implemented. | 825 ASSERT(register_allocation_map_ == 0); // Not yet implemented. |
829 } | 826 } |
830 | 827 |
831 #undef __ | 828 #undef __ |
832 | 829 |
833 } } // namespace v8::internal | 830 } } // namespace v8::internal |
834 | 831 |
835 #endif // V8_TARGET_ARCH_ARM | 832 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |