Mercurial > hg > truffle
comparison src/share/vm/opto/library_call.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 | d50605d9417e |
children | 09aad8452938 |
comparison
equal
deleted
inserted
replaced
6241:aba91a731143 | 6266:1d7922586cf6 |
---|---|
2169 "not reverse Bytes"); | 2169 "not reverse Bytes"); |
2170 if (id == vmIntrinsics::_reverseBytes_i && !Matcher::has_match_rule(Op_ReverseBytesI)) return false; | 2170 if (id == vmIntrinsics::_reverseBytes_i && !Matcher::has_match_rule(Op_ReverseBytesI)) return false; |
2171 if (id == vmIntrinsics::_reverseBytes_l && !Matcher::has_match_rule(Op_ReverseBytesL)) return false; | 2171 if (id == vmIntrinsics::_reverseBytes_l && !Matcher::has_match_rule(Op_ReverseBytesL)) return false; |
2172 if (id == vmIntrinsics::_reverseBytes_c && !Matcher::has_match_rule(Op_ReverseBytesUS)) return false; | 2172 if (id == vmIntrinsics::_reverseBytes_c && !Matcher::has_match_rule(Op_ReverseBytesUS)) return false; |
2173 if (id == vmIntrinsics::_reverseBytes_s && !Matcher::has_match_rule(Op_ReverseBytesS)) return false; | 2173 if (id == vmIntrinsics::_reverseBytes_s && !Matcher::has_match_rule(Op_ReverseBytesS)) return false; |
2174 _sp += arg_size(); // restore stack pointer | 2174 _sp += arg_size(); // restore stack pointer |
2175 switch (id) { | 2175 switch (id) { |
2176 case vmIntrinsics::_reverseBytes_i: | 2176 case vmIntrinsics::_reverseBytes_i: |
2177 push(_gvn.transform(new (C, 2) ReverseBytesINode(0, pop()))); | 2177 push(_gvn.transform(new (C, 2) ReverseBytesINode(0, pop()))); |
2178 break; | 2178 break; |
2179 case vmIntrinsics::_reverseBytes_l: | 2179 case vmIntrinsics::_reverseBytes_l: |
2342 | 2342 |
2343 int type_words = type2size[ (type == T_ADDRESS) ? T_LONG : type ]; | 2343 int type_words = type2size[ (type == T_ADDRESS) ? T_LONG : type ]; |
2344 | 2344 |
2345 // Argument words: "this" plus (oop/offset) or (lo/hi) args plus maybe 1 or 2 value words | 2345 // Argument words: "this" plus (oop/offset) or (lo/hi) args plus maybe 1 or 2 value words |
2346 int nargs = 1 + (is_native_ptr ? 2 : 3) + (is_store ? type_words : 0); | 2346 int nargs = 1 + (is_native_ptr ? 2 : 3) + (is_store ? type_words : 0); |
2347 assert(callee()->arg_size() == nargs, "must be"); | |
2347 | 2348 |
2348 debug_only(int saved_sp = _sp); | 2349 debug_only(int saved_sp = _sp); |
2349 _sp += nargs; | 2350 _sp += nargs; |
2350 | 2351 |
2351 Node* val; | 2352 Node* val; |
4045 ik == env()->find_system_klass(ik->name())) { | 4046 ik == env()->find_system_klass(ik->name())) { |
4046 return true; | 4047 return true; |
4047 } | 4048 } |
4048 } | 4049 } |
4049 } | 4050 } |
4050 else if (method->is_method_handle_adapter()) { | 4051 else if (method->is_method_handle_intrinsic() || |
4052 method->is_compiled_lambda_form()) { | |
4051 // This is an internal adapter frame from the MethodHandleCompiler -- skip it | 4053 // This is an internal adapter frame from the MethodHandleCompiler -- skip it |
4052 return true; | 4054 return true; |
4053 } | 4055 } |
4054 | 4056 |
4055 return false; | 4057 return false; |