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 }