comparison src/cpu/sparc/vm/assembler_sparc.hpp @ 6266:1d7922586cf6

7023639: JSR 292 method handle invocation needs a fast path for compiled code 6984705: JSR 292 method handle creation should not go through JNI Summary: remove assembly code for JDK 7 chained method handles Reviewed-by: jrose, twisti, kvn, mhaupt Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author twisti
date Tue, 24 Jul 2012 10:51:00 -0700
parents 8a48c2906f91
children da91efe96a93
comparison
equal deleted inserted replaced
6241:aba91a731143 6266:1d7922586cf6
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