663 // Verification
664 virtual void verify_on(outputStream* st);
665 void verify() { verify_on(tty); }
666
667 #ifndef PRODUCT
668 bool verify_vtable_index(int index);
669 bool verify_itable_index(int index);
670 #endif
671
672 virtual void oop_verify_on(oop obj, outputStream* st);
673
674 static bool is_null(narrowKlass obj);
675 static bool is_null(Klass* obj);
676
677 // klass encoding for klass pointer in objects.
678 static narrowKlass encode_klass_not_null(Klass* v);
679 static narrowKlass encode_klass(Klass* v);
680
681 static Klass* decode_klass_not_null(narrowKlass v);
682 static Klass* decode_klass(narrowKlass v);
683
684 private:
685 // barriers used by klass_oop_store
686 void klass_update_barrier_set(oop v);
687 void klass_update_barrier_set_pre(oop* p, oop v);
688 };
689
690 // Helper to convert the oop iterate macro suffixes into bool values that can be used by template functions.
691 #define nvs_nv_to_bool true
692 #define nvs_v_to_bool false
693 #define nvs_to_bool(nv_suffix) nvs##nv_suffix##_to_bool
694
695 // Oop iteration macros for declarations.
696 // Used to generate declarations in the *Klass header files.
697
698 #define OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \
699 void oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure); \
700 void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr);
701
702 #if INCLUDE_ALL_GCS
703 #define OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix) \
704 void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure);
705 #endif // INCLUDE_ALL_GCS
706
707
|
663 // Verification
664 virtual void verify_on(outputStream* st);
665 void verify() { verify_on(tty); }
666
667 #ifndef PRODUCT
668 bool verify_vtable_index(int index);
669 bool verify_itable_index(int index);
670 #endif
671
672 virtual void oop_verify_on(oop obj, outputStream* st);
673
674 static bool is_null(narrowKlass obj);
675 static bool is_null(Klass* obj);
676
677 // klass encoding for klass pointer in objects.
678 static narrowKlass encode_klass_not_null(Klass* v);
679 static narrowKlass encode_klass(Klass* v);
680
681 static Klass* decode_klass_not_null(narrowKlass v);
682 static Klass* decode_klass(narrowKlass v);
683 };
684
685 // Helper to convert the oop iterate macro suffixes into bool values that can be used by template functions.
686 #define nvs_nv_to_bool true
687 #define nvs_v_to_bool false
688 #define nvs_to_bool(nv_suffix) nvs##nv_suffix##_to_bool
689
690 // Oop iteration macros for declarations.
691 // Used to generate declarations in the *Klass header files.
692
693 #define OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \
694 void oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure); \
695 void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr);
696
697 #if INCLUDE_ALL_GCS
698 #define OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix) \
699 void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure);
700 #endif // INCLUDE_ALL_GCS
701
702
|