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