Mercurial > hg > graal-compiler
comparison src/share/vm/classfile/systemDictionary.cpp @ 16348:fefb82b01d6f
Make find_method_handle_intrinsic work in Xint mode
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Fri, 27 Jun 2014 11:50:07 +0200 |
parents | b7a1ece4f07b |
children | ad431bf0de07 |
comparison
equal
deleted
inserted
replaced
16347:c6a1215d025b | 16348:fefb82b01d6f |
---|---|
2284 methodHandle m; | 2284 methodHandle m; |
2285 if (spe == NULL || spe->method() == NULL) { | 2285 if (spe == NULL || spe->method() == NULL) { |
2286 spe = NULL; | 2286 spe = NULL; |
2287 // Must create lots of stuff here, but outside of the SystemDictionary lock. | 2287 // Must create lots of stuff here, but outside of the SystemDictionary lock. |
2288 m = Method::make_method_handle_intrinsic(iid, signature, CHECK_(empty)); | 2288 m = Method::make_method_handle_intrinsic(iid, signature, CHECK_(empty)); |
2289 nmethod* nm = CompileBroker::compile_method(m, InvocationEntryBci, CompLevel_highest_tier, | 2289 CompileBroker::compile_method(m, InvocationEntryBci, CompLevel_highest_tier, |
2290 methodHandle(), CompileThreshold, "MH", CHECK_(empty)); | 2290 methodHandle(), CompileThreshold, "MH", CHECK_(empty)); |
2291 | 2291 |
2292 // Now grab the lock. We might have to throw away the new method, | 2292 // Now grab the lock. We might have to throw away the new method, |
2293 // if a racing thread has managed to install one at the same time. | 2293 // if a racing thread has managed to install one at the same time. |
2294 { | 2294 { |
2298 spe = invoke_method_table()->add_entry(index, hash, signature, iid); | 2298 spe = invoke_method_table()->add_entry(index, hash, signature, iid); |
2299 if (spe->method() == NULL) | 2299 if (spe->method() == NULL) |
2300 spe->set_method(m()); | 2300 spe->set_method(m()); |
2301 } | 2301 } |
2302 } else if (spe->method()->code() == NULL) { | 2302 } else if (spe->method()->code() == NULL) { |
2303 nmethod* nm = CompileBroker::compile_method(spe->method(), InvocationEntryBci, CompLevel_highest_tier, | 2303 CompileBroker::compile_method(spe->method(), InvocationEntryBci, CompLevel_highest_tier, |
2304 methodHandle(), CompileThreshold, "MH", CHECK_(empty)); | 2304 methodHandle(), CompileThreshold, "MH", CHECK_(empty)); |
2305 } | 2305 } |
2306 | 2306 |
2307 guarantee(spe != NULL && spe->method() != NULL && spe->method()->code() != NULL, "Could not compile a method handle intrinsic"); | 2307 guarantee(spe != NULL && spe->method() != NULL && (!UseCompiler || spe->method()->code() != NULL), "Could not compile a method handle intrinsic"); |
2308 return spe->method(); | 2308 return spe->method(); |
2309 } | 2309 } |
2310 | 2310 |
2311 // Helper for unpacking the return value from linkMethod and linkCallSite. | 2311 // Helper for unpacking the return value from linkMethod and linkCallSite. |
2312 static methodHandle unpack_method_and_appendix(Handle mname, | 2312 static methodHandle unpack_method_and_appendix(Handle mname, |