< prev index next >

src/share/vm/classfile/javaClasses.hpp

Print this page

        

*** 892,902 **** public: enum { hc_referent_offset = 0, hc_queue_offset = 1, hc_next_offset = 2, ! hc_discovered_offset = 3 // Is not last, see SoftRefs. }; enum { hc_static_lock_offset = 0, hc_static_pending_offset = 1 }; --- 892,902 ---- public: enum { hc_referent_offset = 0, hc_queue_offset = 1, hc_next_offset = 2, ! hc_discovered_offset = 3 // If not last, see SoftReference and Ephemeron. }; enum { hc_static_lock_offset = 0, hc_static_pending_offset = 1 };
*** 953,962 **** --- 953,994 ---- static HeapWord* pending_list_lock_addr(); static HeapWord* pending_list_addr(); }; + // Interface to java.lang.ref.WeakReference objects + + class java_lang_ref_WeakReference: public java_lang_ref_Reference { + }; + + + // Interface to java.lang.ref.Ephemeron objects + + class java_lang_ref_Ephemeron : public java_lang_ref_WeakReference { + public: + enum { + hc_value_offset = hc_discovered_offset + 1 + }; + + static int value_offset; + + // Accessors + static oop value(oop ref) { + return ref->obj_field(value_offset); + } + static void set_value(oop ref, oop value) { + ref->obj_field_put(value_offset, value); + } + static void set_value_raw(oop ref, oop value) { + ref->obj_field_put_raw(value_offset, value); + } + static HeapWord* value_addr(oop ref) { + return ref->obj_field_addr<HeapWord>(value_offset); + } + }; + + // Interface to java.lang.ref.SoftReference objects class java_lang_ref_SoftReference: public java_lang_ref_Reference { public: enum {
< prev index next >