Mercurial > hg > graal-jvmci-8
comparison src/share/vm/ci/ciEnv.cpp @ 3279:08ccee2c4dbf
6993078: JSR 292 too many pushes: Lesp points into register window
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Thu, 21 Apr 2011 00:25:40 -0700 |
parents | 1d1603768966 |
children | 81d815b05abb |
comparison
equal
deleted
inserted
replaced
3278:66b0e2371912 | 3279:08ccee2c4dbf |
---|---|
754 int index, Bytecodes::Code bc) { | 754 int index, Bytecodes::Code bc) { |
755 // Compare the following logic with InterpreterRuntime::resolve_invokedynamic. | 755 // Compare the following logic with InterpreterRuntime::resolve_invokedynamic. |
756 assert(bc == Bytecodes::_invokedynamic, "must be invokedynamic"); | 756 assert(bc == Bytecodes::_invokedynamic, "must be invokedynamic"); |
757 | 757 |
758 bool is_resolved = cpool->cache()->main_entry_at(index)->is_resolved(bc); | 758 bool is_resolved = cpool->cache()->main_entry_at(index)->is_resolved(bc); |
759 if (is_resolved && (oop) cpool->cache()->secondary_entry_at(index)->f1() == NULL) | 759 if (is_resolved && cpool->cache()->secondary_entry_at(index)->is_f1_null()) |
760 // FIXME: code generation could allow for null (unlinked) call site | 760 // FIXME: code generation could allow for null (unlinked) call site |
761 is_resolved = false; | 761 is_resolved = false; |
762 | 762 |
763 // Call site might not be resolved yet. We could create a real invoker method from the | 763 // Call site might not be resolved yet. We could create a real invoker method from the |
764 // compiler, but it is simpler to stop the code path here with an unlinked method. | 764 // compiler, but it is simpler to stop the code path here with an unlinked method. |
768 return get_unloaded_method(mh_klass, ciSymbol::invokeExact_name(), sig_sym); | 768 return get_unloaded_method(mh_klass, ciSymbol::invokeExact_name(), sig_sym); |
769 } | 769 } |
770 | 770 |
771 // Get the invoker methodOop from the constant pool. | 771 // Get the invoker methodOop from the constant pool. |
772 oop f1_value = cpool->cache()->main_entry_at(index)->f1(); | 772 oop f1_value = cpool->cache()->main_entry_at(index)->f1(); |
773 methodOop signature_invoker = methodOop(f1_value); | 773 methodOop signature_invoker = (methodOop) f1_value; |
774 assert(signature_invoker != NULL && signature_invoker->is_method() && signature_invoker->is_method_handle_invoke(), | 774 assert(signature_invoker != NULL && signature_invoker->is_method() && signature_invoker->is_method_handle_invoke(), |
775 "correct result from LinkResolver::resolve_invokedynamic"); | 775 "correct result from LinkResolver::resolve_invokedynamic"); |
776 | 776 |
777 return get_object(signature_invoker)->as_method(); | 777 return get_object(signature_invoker)->as_method(); |
778 } | 778 } |