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 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 int arg_count); | 309 int arg_count); |
310 | 310 |
311 // Call load IC. Receiver is on the stack. Result is returned in r0. | 311 // Call load IC. Receiver is on the stack. Result is returned in r0. |
312 void CallLoadIC(Handle<String> name, RelocInfo::Mode mode); | 312 void CallLoadIC(Handle<String> name, RelocInfo::Mode mode); |
313 | 313 |
314 // Call store IC. If the load is contextual, value is found on top of the | 314 // Call store IC. If the load is contextual, value is found on top of the |
315 // frame. If not, value and receiver are on the frame. Both are consumed. | 315 // frame. If not, value and receiver are on the frame. Both are consumed. |
316 // Result is returned in r0. | 316 // Result is returned in r0. |
317 void CallStoreIC(Handle<String> name, bool is_contextual); | 317 void CallStoreIC(Handle<String> name, bool is_contextual); |
318 | 318 |
319 // Call keyed load IC. Key and receiver are on the stack. Result is returned | 319 // Call keyed load IC. Key and receiver are on the stack. Both are consumed. |
320 // in r0. | 320 // Result is returned in r0. |
321 void CallKeyedLoadIC(); | 321 void CallKeyedLoadIC(); |
322 | 322 |
323 // Call keyed store IC. Key and receiver are on the stack and the value is in | 323 // Call keyed store IC. Key and receiver are on the stack and the value is in |
324 // r0. Result is returned in r0. | 324 // r0. Result is returned in r0. |
325 void CallKeyedStoreIC(); | 325 void CallKeyedStoreIC(); |
326 | 326 |
327 // Call into an IC stub given the number of arguments it removes | 327 // Call into an IC stub given the number of arguments it removes |
328 // from the stack. Register arguments to the IC stub are implicit, | 328 // from the stack. Register arguments to the IC stub are implicit, |
329 // and depend on the type of IC stub. | 329 // and depend on the type of IC stub. |
330 void CallCodeObject(Handle<Code> ic, | 330 void CallCodeObject(Handle<Code> ic, |
(...skipping 17 matching lines...) Expand all Loading... |
348 // so you can't hold on to it if you push on the stack. | 348 // so you can't hold on to it if you push on the stack. |
349 Register PopToRegister(Register but_not_to_this_one = no_reg); | 349 Register PopToRegister(Register but_not_to_this_one = no_reg); |
350 | 350 |
351 // Look at the top of the stack. The register returned is aliased and | 351 // Look at the top of the stack. The register returned is aliased and |
352 // must be copied to a scratch register before modification. | 352 // must be copied to a scratch register before modification. |
353 Register Peek(); | 353 Register Peek(); |
354 | 354 |
355 // Duplicate the top of stack. | 355 // Duplicate the top of stack. |
356 void Dup(); | 356 void Dup(); |
357 | 357 |
| 358 // Duplicate the two elements on top of stack. |
| 359 void Dup2(); |
| 360 |
358 // Flushes all registers, but it puts a copy of the top-of-stack in r0. | 361 // Flushes all registers, but it puts a copy of the top-of-stack in r0. |
359 void SpillAllButCopyTOSToR0(); | 362 void SpillAllButCopyTOSToR0(); |
360 | 363 |
361 // Flushes all registers, but it puts a copy of the top-of-stack in r1 | 364 // Flushes all registers, but it puts a copy of the top-of-stack in r1 |
362 // and the next value on the stack in r0. | 365 // and the next value on the stack in r0. |
363 void SpillAllButCopyTOSToR1R0(); | 366 void SpillAllButCopyTOSToR1R0(); |
364 | 367 |
365 // Pop and save an element from the top of the expression stack and | 368 // Pop and save an element from the top of the expression stack and |
366 // emit a corresponding pop instruction. | 369 // emit a corresponding pop instruction. |
367 void EmitPop(Register reg); | 370 void EmitPop(Register reg); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 inline bool Equals(VirtualFrame* other); | 497 inline bool Equals(VirtualFrame* other); |
495 | 498 |
496 friend class JumpTarget; | 499 friend class JumpTarget; |
497 friend class DeferredCode; | 500 friend class DeferredCode; |
498 }; | 501 }; |
499 | 502 |
500 | 503 |
501 } } // namespace v8::internal | 504 } } // namespace v8::internal |
502 | 505 |
503 #endif // V8_ARM_VIRTUAL_FRAME_ARM_H_ | 506 #endif // V8_ARM_VIRTUAL_FRAME_ARM_H_ |
OLD | NEW |