comparison src/share/vm/oops/method.hpp @ 10393:603ca7e51354

8010460: Interpreter on some platforms loads ConstMethod::_max_stack and misses extra stack slots for JSR 292 Summary: ConstMethod::max_stack() doesn't account for JSR 292 appendix. Reviewed-by: kvn
author roland
date Wed, 24 Apr 2013 11:49:38 +0200
parents 8b40495b9381
children 836a62f43af9 8947af8a9cec
comparison
equal deleted inserted replaced
10392:c07dd9be16e8 10393:603ca7e51354
669 bool has_member_arg() const; // intrinsic_id() == vmIntrinsics::_linkToSpecial, etc. 669 bool has_member_arg() const; // intrinsic_id() == vmIntrinsics::_linkToSpecial, etc.
670 static methodHandle make_method_handle_intrinsic(vmIntrinsics::ID iid, // _invokeBasic, _linkToVirtual 670 static methodHandle make_method_handle_intrinsic(vmIntrinsics::ID iid, // _invokeBasic, _linkToVirtual
671 Symbol* signature, //anything at all 671 Symbol* signature, //anything at all
672 TRAPS); 672 TRAPS);
673 static Klass* check_non_bcp_klass(Klass* klass); 673 static Klass* check_non_bcp_klass(Klass* klass);
674 // these operate only on invoke methods: 674
675 // How many extra stack entries for invokedynamic when it's enabled
676 static const int extra_stack_entries_for_jsr292 = 1;
677
678 // this operates only on invoke methods:
675 // presize interpreter frames for extra interpreter stack entries, if needed 679 // presize interpreter frames for extra interpreter stack entries, if needed
676 // method handles want to be able to push a few extra values (e.g., a bound receiver), and 680 // Account for the extra appendix argument for invokehandle/invokedynamic
677 // invokedynamic sometimes needs to push a bootstrap method, call site, and arglist, 681 static int extra_stack_entries() { return EnableInvokeDynamic ? extra_stack_entries_for_jsr292 : 0; }
678 // all without checking for a stack overflow 682 static int extra_stack_words(); // = extra_stack_entries() * Interpreter::stackElementSize
679 static int extra_stack_entries() { return EnableInvokeDynamic ? 2 : 0; }
680 static int extra_stack_words(); // = extra_stack_entries() * Interpreter::stackElementSize()
681 683
682 // RedefineClasses() support: 684 // RedefineClasses() support:
683 bool is_old() const { return access_flags().is_old(); } 685 bool is_old() const { return access_flags().is_old(); }
684 void set_is_old() { _access_flags.set_is_old(); } 686 void set_is_old() { _access_flags.set_is_old(); }
685 bool is_obsolete() const { return access_flags().is_obsolete(); } 687 bool is_obsolete() const { return access_flags().is_obsolete(); }