Mercurial > hg > graal-jvmci-8
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(); } |