Mercurial > hg > graal-jvmci-8
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 |