Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp @ 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 | 8f972594effc |
children | da91efe96a93 |
comparison
equal
deleted
inserted
replaced
6241:aba91a731143 | 6266:1d7922586cf6 |
---|---|
2954 | 2954 |
2955 | 2955 |
2956 void LIR_Assembler::emit_profile_call(LIR_OpProfileCall* op) { | 2956 void LIR_Assembler::emit_profile_call(LIR_OpProfileCall* op) { |
2957 ciMethod* method = op->profiled_method(); | 2957 ciMethod* method = op->profiled_method(); |
2958 int bci = op->profiled_bci(); | 2958 int bci = op->profiled_bci(); |
2959 ciMethod* callee = op->profiled_callee(); | |
2959 | 2960 |
2960 // Update counter for all call types | 2961 // Update counter for all call types |
2961 ciMethodData* md = method->method_data_or_null(); | 2962 ciMethodData* md = method->method_data_or_null(); |
2962 assert(md != NULL, "Sanity"); | 2963 assert(md != NULL, "Sanity"); |
2963 ciProfileData* data = md->bci_to_data(bci); | 2964 ciProfileData* data = md->bci_to_data(bci); |
2982 __ add(mdo, O7, mdo); | 2983 __ add(mdo, O7, mdo); |
2983 } | 2984 } |
2984 | 2985 |
2985 Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias); | 2986 Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias); |
2986 Bytecodes::Code bc = method->java_code_at_bci(bci); | 2987 Bytecodes::Code bc = method->java_code_at_bci(bci); |
2988 const bool callee_is_static = callee->is_loaded() && callee->is_static(); | |
2987 // Perform additional virtual call profiling for invokevirtual and | 2989 // Perform additional virtual call profiling for invokevirtual and |
2988 // invokeinterface bytecodes | 2990 // invokeinterface bytecodes |
2989 if ((bc == Bytecodes::_invokevirtual || bc == Bytecodes::_invokeinterface) && | 2991 if ((bc == Bytecodes::_invokevirtual || bc == Bytecodes::_invokeinterface) && |
2992 !callee_is_static && // required for optimized MH invokes | |
2990 C1ProfileVirtualCalls) { | 2993 C1ProfileVirtualCalls) { |
2991 assert(op->recv()->is_single_cpu(), "recv must be allocated"); | 2994 assert(op->recv()->is_single_cpu(), "recv must be allocated"); |
2992 Register recv = op->recv()->as_register(); | 2995 Register recv = op->recv()->as_register(); |
2993 assert_different_registers(mdo, tmp1, recv); | 2996 assert_different_registers(mdo, tmp1, recv); |
2994 assert(data->is_VirtualCallData(), "need VirtualCallData for virtual calls"); | 2997 assert(data->is_VirtualCallData(), "need VirtualCallData for virtual calls"); |