| 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 |