Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/methodOop.hpp @ 710:e5b0439ef4ae
6655638: dynamic languages need method handles
Summary: initial implementation, with known omissions (x86/64, sparc, compiler optim., c-oops, C++ interp.)
Reviewed-by: kvn, twisti, never
author | jrose |
---|---|
date | Wed, 08 Apr 2009 10:56:49 -0700 |
parents | 7bb995fbd3c0 |
children | be93aad57795 |
comparison
equal
deleted
inserted
replaced
709:1d037ecd7960 | 710:e5b0439ef4ae |
---|---|
318 | 318 |
319 // vtable index | 319 // vtable index |
320 enum VtableIndexFlag { | 320 enum VtableIndexFlag { |
321 // Valid vtable indexes are non-negative (>= 0). | 321 // Valid vtable indexes are non-negative (>= 0). |
322 // These few negative values are used as sentinels. | 322 // These few negative values are used as sentinels. |
323 highest_unused_vtable_index_value = -5, | |
323 invalid_vtable_index = -4, // distinct from any valid vtable index | 324 invalid_vtable_index = -4, // distinct from any valid vtable index |
324 garbage_vtable_index = -3, // not yet linked; no vtable layout yet | 325 garbage_vtable_index = -3, // not yet linked; no vtable layout yet |
325 nonvirtual_vtable_index = -2 // there is no need for vtable dispatch | 326 nonvirtual_vtable_index = -2 // there is no need for vtable dispatch |
326 // 6330203 Note: Do not use -1, which was overloaded with many meanings. | 327 // 6330203 Note: Do not use -1, which was overloaded with many meanings. |
327 }; | 328 }; |
521 int line_number_from_bci(int bci) const; | 522 int line_number_from_bci(int bci) const; |
522 | 523 |
523 // Reflection support | 524 // Reflection support |
524 bool is_overridden_in(klassOop k) const; | 525 bool is_overridden_in(klassOop k) const; |
525 | 526 |
527 // JSR 292 support | |
528 bool is_method_handle_invoke() const { return access_flags().is_method_handle_invoke(); } | |
529 static methodHandle make_invoke_method(KlassHandle holder, | |
530 symbolHandle signature, | |
531 Handle method_type, | |
532 TRAPS); | |
533 // these operate only on invoke methods: | |
534 oop method_handle_type() const; | |
535 static jint* method_type_offsets_chain(); // series of pointer-offsets, terminated by -1 | |
536 // presize interpreter frames for extra interpreter stack entries, if needed | |
537 static int extra_stack_entries() { return EnableMethodHandles ? (int)MethodHandlePushLimit : 0; } | |
538 static int extra_stack_words(); // = extra_stack_entries() * Interpreter::stackElementSize() | |
526 // RedefineClasses() support: | 539 // RedefineClasses() support: |
527 bool is_old() const { return access_flags().is_old(); } | 540 bool is_old() const { return access_flags().is_old(); } |
528 void set_is_old() { _access_flags.set_is_old(); } | 541 void set_is_old() { _access_flags.set_is_old(); } |
529 bool is_obsolete() const { return access_flags().is_obsolete(); } | 542 bool is_obsolete() const { return access_flags().is_obsolete(); } |
530 void set_is_obsolete() { _access_flags.set_is_obsolete(); } | 543 void set_is_obsolete() { _access_flags.set_is_obsolete(); } |