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(); } |