413 KlassHandle receiver_klass, 414 TRAPS); 415 416 static bool same_basic_type_for_arguments(BasicType src, BasicType dst, 417 bool raw = false, 418 bool for_return = false); 419 static bool same_basic_type_for_returns(BasicType src, BasicType dst, bool raw = false) { 420 return same_basic_type_for_arguments(src, dst, raw, true); 421 } 422 423 enum { // arg_mask values 424 _INSERT_NO_MASK = -1, 425 _INSERT_REF_MASK = 0, 426 _INSERT_INT_MASK = 1, 427 _INSERT_LONG_MASK = 3 428 }; 429 static void insert_arg_slots(MacroAssembler* _masm, 430 RegisterOrConstant arg_slots, 431 int arg_mask, 432 Register argslot_reg, 433 Register temp_reg, Register temp2_reg); 434 435 static void remove_arg_slots(MacroAssembler* _masm, 436 RegisterOrConstant arg_slots, 437 Register argslot_reg, 438 Register temp_reg, Register temp2_reg); 439 }; 440 441 442 // Access methods for the "entry" field of a java.dyn.MethodHandle. 443 // The field is primarily a jump target for compiled calls. 444 // However, we squirrel away some nice pointers for other uses, 445 // just before the jump target. 446 // Aspects of a method handle entry: 447 // - from_compiled_entry - stub used when compiled code calls the MH 448 // - from_interpreted_entry - stub used when the interpreter calls the MH 449 // - type_checking_entry - stub for runtime casting between MHForm siblings (NYI) 450 class MethodHandleEntry { 451 public: 452 class Data { 453 friend class MethodHandleEntry; 454 size_t _total_size; // size including Data and code stub 455 MethodHandleEntry* _type_checking_entry; 456 address _from_interpreted_entry; 457 MethodHandleEntry* method_entry() { return (MethodHandleEntry*)(this + 1); } 458 }; | 413 KlassHandle receiver_klass, 414 TRAPS); 415 416 static bool same_basic_type_for_arguments(BasicType src, BasicType dst, 417 bool raw = false, 418 bool for_return = false); 419 static bool same_basic_type_for_returns(BasicType src, BasicType dst, bool raw = false) { 420 return same_basic_type_for_arguments(src, dst, raw, true); 421 } 422 423 enum { // arg_mask values 424 _INSERT_NO_MASK = -1, 425 _INSERT_REF_MASK = 0, 426 _INSERT_INT_MASK = 1, 427 _INSERT_LONG_MASK = 3 428 }; 429 static void insert_arg_slots(MacroAssembler* _masm, 430 RegisterOrConstant arg_slots, 431 int arg_mask, 432 Register argslot_reg, 433 Register temp_reg, Register temp2_reg, Register temp3_reg = noreg); 434 435 static void remove_arg_slots(MacroAssembler* _masm, 436 RegisterOrConstant arg_slots, 437 Register argslot_reg, 438 Register temp_reg, Register temp2_reg, Register temp3_reg = noreg); 439 }; 440 441 442 // Access methods for the "entry" field of a java.dyn.MethodHandle. 443 // The field is primarily a jump target for compiled calls. 444 // However, we squirrel away some nice pointers for other uses, 445 // just before the jump target. 446 // Aspects of a method handle entry: 447 // - from_compiled_entry - stub used when compiled code calls the MH 448 // - from_interpreted_entry - stub used when the interpreter calls the MH 449 // - type_checking_entry - stub for runtime casting between MHForm siblings (NYI) 450 class MethodHandleEntry { 451 public: 452 class Data { 453 friend class MethodHandleEntry; 454 size_t _total_size; // size including Data and code stub 455 MethodHandleEntry* _type_checking_entry; 456 address _from_interpreted_entry; 457 MethodHandleEntry* method_entry() { return (MethodHandleEntry*)(this + 1); } 458 }; |