src/cpu/x86/vm/methodHandles_x86.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7081938 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/methodHandles_x86.hpp

Print this page




 115  private:
 116   intptr_t* _continuation;          // what to do when control gets back here
 117   oopDesc*  _saved_target;          // target method handle to invoke on saved_args
 118   oopDesc*  _saved_args_layout;     // caching point for MethodTypeForm.vmlayout cookie
 119   intptr_t* _saved_args_base;       // base of pushed arguments (slot 0, arg N) (-3)
 120   intptr_t  _conversion;            // misc. information from original AdapterMethodHandle (-2)
 121   intptr_t* _exact_sender_sp;       // parallel to interpreter_frame_sender_sp (-1)
 122   intptr_t* _sender_link;           // *must* coincide with frame::link_offset (0)
 123   address   _sender_pc;             // *must* coincide with frame::return_addr_offset (1)
 124 
 125  public:
 126   intptr_t* continuation() const        { return _continuation; }
 127   oop       saved_target() const        { return _saved_target; }
 128   oop       saved_args_layout() const   { return _saved_args_layout; }
 129   intptr_t* saved_args_base() const     { return _saved_args_base; }
 130   intptr_t  conversion() const          { return _conversion; }
 131   intptr_t* exact_sender_sp() const     { return _exact_sender_sp; }
 132   intptr_t* sender_link() const         { return _sender_link; }
 133   address   sender_pc() const           { return _sender_pc; }
 134 
 135   intptr_t* extended_sender_sp() const  { return saved_args_base(); }



 136 
 137   intptr_t  return_value_slot_number() const {
 138     return adapter_conversion_vminfo(conversion());
 139   }
 140   BasicType return_value_type() const {
 141     return adapter_conversion_dest_type(conversion());
 142   }
 143   bool has_return_value_slot() const {
 144     return return_value_type() != T_VOID;
 145   }
 146   intptr_t* return_value_slot_addr() const {
 147     assert(has_return_value_slot(), "");
 148     return saved_arg_slot_addr(return_value_slot_number());
 149   }
 150   intptr_t* saved_target_slot_addr() const {
 151     return saved_arg_slot_addr(saved_args_length());
 152   }
 153   intptr_t* saved_arg_slot_addr(int slot) const {
 154     assert(slot >= 0, "");
 155     return (intptr_t*)( (address)saved_args_base() + (slot * Interpreter::stackElementSize) );




 115  private:
 116   intptr_t* _continuation;          // what to do when control gets back here
 117   oopDesc*  _saved_target;          // target method handle to invoke on saved_args
 118   oopDesc*  _saved_args_layout;     // caching point for MethodTypeForm.vmlayout cookie
 119   intptr_t* _saved_args_base;       // base of pushed arguments (slot 0, arg N) (-3)
 120   intptr_t  _conversion;            // misc. information from original AdapterMethodHandle (-2)
 121   intptr_t* _exact_sender_sp;       // parallel to interpreter_frame_sender_sp (-1)
 122   intptr_t* _sender_link;           // *must* coincide with frame::link_offset (0)
 123   address   _sender_pc;             // *must* coincide with frame::return_addr_offset (1)
 124 
 125  public:
 126   intptr_t* continuation() const        { return _continuation; }
 127   oop       saved_target() const        { return _saved_target; }
 128   oop       saved_args_layout() const   { return _saved_args_layout; }
 129   intptr_t* saved_args_base() const     { return _saved_args_base; }
 130   intptr_t  conversion() const          { return _conversion; }
 131   intptr_t* exact_sender_sp() const     { return _exact_sender_sp; }
 132   intptr_t* sender_link() const         { return _sender_link; }
 133   address   sender_pc() const           { return _sender_pc; }
 134 
 135   intptr_t* extended_sender_sp() const {
 136     // The extended sender SP is above the current RicochetFrame.
 137     return (intptr_t*) (((address) this) + sizeof(RicochetFrame));
 138   }
 139 
 140   intptr_t  return_value_slot_number() const {
 141     return adapter_conversion_vminfo(conversion());
 142   }
 143   BasicType return_value_type() const {
 144     return adapter_conversion_dest_type(conversion());
 145   }
 146   bool has_return_value_slot() const {
 147     return return_value_type() != T_VOID;
 148   }
 149   intptr_t* return_value_slot_addr() const {
 150     assert(has_return_value_slot(), "");
 151     return saved_arg_slot_addr(return_value_slot_number());
 152   }
 153   intptr_t* saved_target_slot_addr() const {
 154     return saved_arg_slot_addr(saved_args_length());
 155   }
 156   intptr_t* saved_arg_slot_addr(int slot) const {
 157     assert(slot >= 0, "");
 158     return (intptr_t*)( (address)saved_args_base() + (slot * Interpreter::stackElementSize) );


src/cpu/x86/vm/methodHandles_x86.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File