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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 // Invoke builtin given the number of arguments it expects on (and | 305 // Invoke builtin given the number of arguments it expects on (and |
306 // removes from) the stack. | 306 // removes from) the stack. |
307 void InvokeBuiltin(Builtins::JavaScript id, | 307 void InvokeBuiltin(Builtins::JavaScript id, |
308 InvokeJSFlags flag, | 308 InvokeJSFlags flag, |
309 int arg_count); | 309 int arg_count); |
310 | 310 |
311 // Call load IC. Receiver is on the stack and the property name is in r2. | 311 // Call load IC. Receiver is on the stack and the property name is in r2. |
312 // Result is returned in r0. | 312 // Result is returned in r0. |
313 void CallLoadIC(RelocInfo::Mode mode); | 313 void CallLoadIC(RelocInfo::Mode mode); |
314 | 314 |
| 315 // Call store IC. If the load is contextual, value is found on top of the |
| 316 // frame. If not, value and receiver are on the frame. Both are consumed. |
| 317 // Result is returned in r0. |
| 318 void CallStoreIC(Handle<String> name, bool is_contextual); |
| 319 |
315 // Call keyed load IC. Key and receiver are on the stack. Result is returned | 320 // Call keyed load IC. Key and receiver are on the stack. Result is returned |
316 // in r0. | 321 // in r0. |
317 void CallKeyedLoadIC(); | 322 void CallKeyedLoadIC(); |
318 | 323 |
319 // Call keyed store IC. Key and receiver are on the stack and the value is in | 324 // Call keyed store IC. Key and receiver are on the stack and the value is in |
320 // r0. Result is returned in r0. | 325 // r0. Result is returned in r0. |
321 void CallKeyedStoreIC(); | 326 void CallKeyedStoreIC(); |
322 | 327 |
323 // Call into an IC stub given the number of arguments it removes | 328 // Call into an IC stub given the number of arguments it removes |
324 // from the stack. Register arguments to the IC stub are implicit, | 329 // from the stack. Register arguments to the IC stub are implicit, |
(...skipping 16 matching lines...) Expand all Loading... |
341 | 346 |
342 // Pop an element from the top of the expression stack. The register | 347 // Pop an element from the top of the expression stack. The register |
343 // will be one normally used for the top of stack register allocation | 348 // will be one normally used for the top of stack register allocation |
344 // so you can't hold on to it if you push on the stack. | 349 // so you can't hold on to it if you push on the stack. |
345 Register PopToRegister(Register but_not_to_this_one = no_reg); | 350 Register PopToRegister(Register but_not_to_this_one = no_reg); |
346 | 351 |
347 // Look at the top of the stack. The register returned is aliased and | 352 // Look at the top of the stack. The register returned is aliased and |
348 // must be copied to a scratch register before modification. | 353 // must be copied to a scratch register before modification. |
349 Register Peek(); | 354 Register Peek(); |
350 | 355 |
| 356 // Duplicate the top of stack. |
| 357 void Dup(); |
| 358 |
351 // Flushes all registers, but it puts a copy of the top-of-stack in r0. | 359 // Flushes all registers, but it puts a copy of the top-of-stack in r0. |
352 void SpillAllButCopyTOSToR0(); | 360 void SpillAllButCopyTOSToR0(); |
353 | 361 |
354 // Flushes all registers, but it puts a copy of the top-of-stack in r1 | 362 // Flushes all registers, but it puts a copy of the top-of-stack in r1 |
355 // and the next value on the stack in r0. | 363 // and the next value on the stack in r0. |
356 void SpillAllButCopyTOSToR1R0(); | 364 void SpillAllButCopyTOSToR1R0(); |
357 | 365 |
358 // Pop and save an element from the top of the expression stack and | 366 // Pop and save an element from the top of the expression stack and |
359 // emit a corresponding pop instruction. | 367 // emit a corresponding pop instruction. |
360 void EmitPop(Register reg); | 368 void EmitPop(Register reg); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 inline bool Equals(VirtualFrame* other); | 495 inline bool Equals(VirtualFrame* other); |
488 | 496 |
489 friend class JumpTarget; | 497 friend class JumpTarget; |
490 friend class DeferredCode; | 498 friend class DeferredCode; |
491 }; | 499 }; |
492 | 500 |
493 | 501 |
494 } } // namespace v8::internal | 502 } } // namespace v8::internal |
495 | 503 |
496 #endif // V8_ARM_VIRTUAL_FRAME_ARM_H_ | 504 #endif // V8_ARM_VIRTUAL_FRAME_ARM_H_ |
OLD | NEW |