< prev index next >

src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp

Print this page

 711 // [ cache              ]
 712 // [ mdx                ]
 713 // [ mirror             ]
 714 // [ Method*            ]
 715 //
 716 // 32-bit ARM:
 717 // [ last_sp            ]
 718 //
 719 // [ sender_sp          ]
 720 // [ saved FP           ] <--- FP
 721 // [ saved LR           ]
 722 // [ optional padding(*)]
 723 // [ local variable m   ]
 724 //   ...
 725 // [ local variable 1   ]
 726 // [ parameter n        ]
 727 //   ...
 728 // [ parameter 1        ] <--- Rlocals
 729 //
 730 





 731 address TemplateInterpreterGenerator::generate_Reference_get_entry(void) {
 732   // Code: _aload_0, _getfield, _areturn
 733   // parameter size = 1
 734   //
 735   // The code that gets generated by this routine is split into 2 parts:
 736   //    1. The "intrinsified" code performing an ON_WEAK_OOP_REF load,
 737   //    2. The slow path - which is an expansion of the regular method entry.
 738   //
 739   // Notes:-
 740   // * An intrinsic is always executed, where an ON_WEAK_OOP_REF load is performed.
 741   // * We may jump to the slow path iff the receiver is null. If the
 742   //   Reference object is null then we no longer perform an ON_WEAK_OOP_REF load
 743   //   Thus we can use the regular method entry code to generate the NPE.
 744   //
 745   // Rmethod: Method*
 746   // Rthread: thread
 747   // Rsender_sp: sender sp, must be preserved for slow path, set SP to it on fast path
 748   // Rparams: parameters
 749 
 750   address entry = __ pc();

 711 // [ cache              ]
 712 // [ mdx                ]
 713 // [ mirror             ]
 714 // [ Method*            ]
 715 //
 716 // 32-bit ARM:
 717 // [ last_sp            ]
 718 //
 719 // [ sender_sp          ]
 720 // [ saved FP           ] <--- FP
 721 // [ saved LR           ]
 722 // [ optional padding(*)]
 723 // [ local variable m   ]
 724 //   ...
 725 // [ local variable 1   ]
 726 // [ parameter n        ]
 727 //   ...
 728 // [ parameter 1        ] <--- Rlocals
 729 //
 730 
 731 address TemplateInterpreterGenerator::generate_Continuation_doYield_entry(void) {
 732   Unimplemented();
 733   return NULL;
 734 }
 735 
 736 address TemplateInterpreterGenerator::generate_Reference_get_entry(void) {
 737   // Code: _aload_0, _getfield, _areturn
 738   // parameter size = 1
 739   //
 740   // The code that gets generated by this routine is split into 2 parts:
 741   //    1. The "intrinsified" code performing an ON_WEAK_OOP_REF load,
 742   //    2. The slow path - which is an expansion of the regular method entry.
 743   //
 744   // Notes:-
 745   // * An intrinsic is always executed, where an ON_WEAK_OOP_REF load is performed.
 746   // * We may jump to the slow path iff the receiver is null. If the
 747   //   Reference object is null then we no longer perform an ON_WEAK_OOP_REF load
 748   //   Thus we can use the regular method entry code to generate the NPE.
 749   //
 750   // Rmethod: Method*
 751   // Rthread: thread
 752   // Rsender_sp: sender sp, must be preserved for slow path, set SP to it on fast path
 753   // Rparams: parameters
 754 
 755   address entry = __ pc();
< prev index next >