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