2536 RegisterOrConstant itable_index, |
2536 RegisterOrConstant itable_index, |
2537 Register method_result, |
2537 Register method_result, |
2538 Register temp_reg, Register temp2_reg, |
2538 Register temp_reg, Register temp2_reg, |
2539 Label& no_such_interface); |
2539 Label& no_such_interface); |
2540 |
2540 |
|
2541 // virtual method calling |
|
2542 void lookup_virtual_method(Register recv_klass, |
|
2543 RegisterOrConstant vtable_index, |
|
2544 Register method_result); |
|
2545 |
2541 // Test sub_klass against super_klass, with fast and slow paths. |
2546 // Test sub_klass against super_klass, with fast and slow paths. |
2542 |
2547 |
2543 // The fast path produces a tri-state answer: yes / no / maybe-slow. |
2548 // The fast path produces a tri-state answer: yes / no / maybe-slow. |
2544 // One of the three labels can be NULL, meaning take the fall-through. |
2549 // One of the three labels can be NULL, meaning take the fall-through. |
2545 // If super_check_offset is -1, the value is loaded up from super_klass. |
2550 // If super_check_offset is -1, the value is loaded up from super_klass. |
2575 Register temp_reg, |
2580 Register temp_reg, |
2576 Register temp2_reg, |
2581 Register temp2_reg, |
2577 Label& L_success); |
2582 Label& L_success); |
2578 |
2583 |
2579 // method handles (JSR 292) |
2584 // method handles (JSR 292) |
2580 void check_method_handle_type(Register mtype_reg, Register mh_reg, |
|
2581 Register temp_reg, |
|
2582 Label& wrong_method_type); |
|
2583 void load_method_handle_vmslots(Register vmslots_reg, Register mh_reg, |
|
2584 Register temp_reg); |
|
2585 void jump_to_method_handle_entry(Register mh_reg, Register temp_reg, bool emit_delayed_nop = true); |
|
2586 // offset relative to Gargs of argument at tos[arg_slot]. |
2585 // offset relative to Gargs of argument at tos[arg_slot]. |
2587 // (arg_slot == 0 means the last argument, not the first). |
2586 // (arg_slot == 0 means the last argument, not the first). |
2588 RegisterOrConstant argument_offset(RegisterOrConstant arg_slot, |
2587 RegisterOrConstant argument_offset(RegisterOrConstant arg_slot, |
2589 Register temp_reg, |
2588 Register temp_reg, |
2590 int extra_slot_offset = 0); |
2589 int extra_slot_offset = 0); |
2591 // Address of Gargs and argument_offset. |
2590 // Address of Gargs and argument_offset. |
2592 Address argument_address(RegisterOrConstant arg_slot, |
2591 Address argument_address(RegisterOrConstant arg_slot, |
2593 Register temp_reg, |
2592 Register temp_reg = noreg, |
2594 int extra_slot_offset = 0); |
2593 int extra_slot_offset = 0); |
2595 |
2594 |
2596 // Stack overflow checking |
2595 // Stack overflow checking |
2597 |
2596 |
2598 // Note: this clobbers G3_scratch |
2597 // Note: this clobbers G3_scratch |