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 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 | 280 |
281 // The receiver frame slot. | 281 // The receiver frame slot. |
282 MemOperand Receiver() { return ParameterAt(-1); } | 282 MemOperand Receiver() { return ParameterAt(-1); } |
283 | 283 |
284 // Push a try-catch or try-finally handler on top of the virtual frame. | 284 // Push a try-catch or try-finally handler on top of the virtual frame. |
285 void PushTryHandler(HandlerType type); | 285 void PushTryHandler(HandlerType type); |
286 | 286 |
287 // Call stub given the number of arguments it expects on (and | 287 // Call stub given the number of arguments it expects on (and |
288 // removes from) the stack. | 288 // removes from) the stack. |
289 void CallStub(CodeStub* stub, int arg_count) { | 289 void CallStub(CodeStub* stub, int arg_count) { |
290 PrepareForCall(arg_count, arg_count); | 290 Forget(arg_count); |
291 RawCallStub(stub); | 291 ASSERT(cgen()->HasValidEntryRegisters()); |
| 292 masm()->CallStub(stub); |
292 } | 293 } |
293 | 294 |
294 // Call stub that expects its argument in r0. The argument is given | |
295 // as a result which must be the register r0. | |
296 void CallStub(CodeStub* stub, Result* arg); | |
297 | |
298 // Call stub that expects its arguments in r1 and r0. The arguments | |
299 // are given as results which must be the appropriate registers. | |
300 void CallStub(CodeStub* stub, Result* arg0, Result* arg1); | |
301 | |
302 // Call runtime given the number of arguments expected on (and | 295 // Call runtime given the number of arguments expected on (and |
303 // removed from) the stack. | 296 // removed from) the stack. |
304 void CallRuntime(Runtime::Function* f, int arg_count); | 297 void CallRuntime(Runtime::Function* f, int arg_count); |
305 void CallRuntime(Runtime::FunctionId id, int arg_count); | 298 void CallRuntime(Runtime::FunctionId id, int arg_count); |
306 | 299 |
307 // Invoke builtin given the number of arguments it expects on (and | 300 // Invoke builtin given the number of arguments it expects on (and |
308 // removes from) the stack. | 301 // removes from) the stack. |
309 void InvokeBuiltin(Builtins::JavaScript id, | 302 void InvokeBuiltin(Builtins::JavaScript id, |
310 InvokeJSFlags flag, | 303 InvokeJSFlags flag, |
311 int arg_count); | 304 int arg_count); |
312 | 305 |
313 // Call into an IC stub given the number of arguments it removes | 306 // Call into an IC stub given the number of arguments it removes |
314 // from the stack. Register arguments are passed as results and | 307 // from the stack. Register arguments to the IC stub are implicit, |
315 // consumed by the call. | 308 // and depend on the type of IC stub. |
316 void CallCodeObject(Handle<Code> ic, | 309 void CallCodeObject(Handle<Code> ic, |
317 RelocInfo::Mode rmode, | 310 RelocInfo::Mode rmode, |
318 int dropped_args); | 311 int dropped_args); |
319 void CallCodeObject(Handle<Code> ic, | |
320 RelocInfo::Mode rmode, | |
321 Result* arg, | |
322 int dropped_args); | |
323 void CallCodeObject(Handle<Code> ic, | |
324 RelocInfo::Mode rmode, | |
325 Result* arg0, | |
326 Result* arg1, | |
327 int dropped_args); | |
328 | 312 |
329 // Drop a number of elements from the top of the expression stack. May | 313 // Drop a number of elements from the top of the expression stack. May |
330 // emit code to affect the physical frame. Does not clobber any registers | 314 // emit code to affect the physical frame. Does not clobber any registers |
331 // excepting possibly the stack pointer. | 315 // excepting possibly the stack pointer. |
332 void Drop(int count); | 316 void Drop(int count); |
333 | 317 |
334 // Drop one element. | 318 // Drop one element. |
335 void Drop() { Drop(1); } | 319 void Drop() { Drop(1); } |
336 | 320 |
337 // Duplicate the top element of the frame. | 321 // Duplicate the top element of the frame. |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 // should be equal. | 488 // should be equal. |
505 void MergeMoveMemoryToRegisters(VirtualFrame* expected); | 489 void MergeMoveMemoryToRegisters(VirtualFrame* expected); |
506 | 490 |
507 // Invalidates a frame slot (puts an invalid frame element in it). | 491 // Invalidates a frame slot (puts an invalid frame element in it). |
508 // Copies on the frame are correctly handled, and if this slot was | 492 // Copies on the frame are correctly handled, and if this slot was |
509 // the backing store of copies, the index of the new backing store | 493 // the backing store of copies, the index of the new backing store |
510 // is returned. Otherwise, returns kIllegalIndex. | 494 // is returned. Otherwise, returns kIllegalIndex. |
511 // Register counts are correctly updated. | 495 // Register counts are correctly updated. |
512 int InvalidateFrameSlotAt(int index); | 496 int InvalidateFrameSlotAt(int index); |
513 | 497 |
514 // Call a code stub that has already been prepared for calling (via | |
515 // PrepareForCall). | |
516 void RawCallStub(CodeStub* stub); | |
517 | |
518 // Calls a code object which has already been prepared for calling | |
519 // (via PrepareForCall). | |
520 void RawCallCodeObject(Handle<Code> code, RelocInfo::Mode rmode); | |
521 | |
522 bool Equals(VirtualFrame* other); | 498 bool Equals(VirtualFrame* other); |
523 | 499 |
524 // Classes that need raw access to the elements_ array. | 500 // Classes that need raw access to the elements_ array. |
525 friend class DeferredCode; | 501 friend class DeferredCode; |
526 friend class JumpTarget; | 502 friend class JumpTarget; |
527 }; | 503 }; |
528 | 504 |
529 | 505 |
530 } } // namespace v8::internal | 506 } } // namespace v8::internal |
531 | 507 |
532 #endif // V8_ARM_VIRTUAL_FRAME_ARM_H_ | 508 #endif // V8_ARM_VIRTUAL_FRAME_ARM_H_ |
OLD | NEW |