< prev index next >

src/hotspot/share/oops/access.hpp

Print this page
rev 48471 : [mq]: RFE_Access_constantPoolCache_new_decorator


 183 const DecoratorSet ON_PHANTOM_OOP_REF = UCONST64(1) << 16;
 184 const DecoratorSet ON_UNKNOWN_OOP_REF = UCONST64(1) << 17;
 185 const DecoratorSet ON_DECORATOR_MASK  = ON_STRONG_OOP_REF | ON_WEAK_OOP_REF |
 186                                         ON_PHANTOM_OOP_REF | ON_UNKNOWN_OOP_REF;
 187 
 188 // === Access Location ===
 189 // Accesses can take place in, e.g. the heap, old or young generation and different native roots.
 190 // The location is important to the GC as it may imply different actions. The following decorators are used:
 191 // * IN_HEAP: The access is performed in the heap. Many barriers such as card marking will
 192 //   be omitted if this decorator is not set.
 193 // * IN_HEAP_ARRAY: The access is performed on a heap allocated array. This is sometimes a special case
 194 //   for some GCs, and implies that it is an IN_HEAP.
 195 // * IN_ROOT: The access is performed in an off-heap data structure pointing into the Java heap.
 196 // * IN_CONCURRENT_ROOT: The access is performed in an off-heap data structure pointing into the Java heap,
 197 //   but is notably not scanned during safepoints. This is sometimes a special case for some GCs and
 198 //   implies that it is also an IN_ROOT.
 199 const DecoratorSet IN_HEAP            = UCONST64(1) << 18;
 200 const DecoratorSet IN_HEAP_ARRAY      = UCONST64(1) << 19;
 201 const DecoratorSet IN_ROOT            = UCONST64(1) << 20;
 202 const DecoratorSet IN_CONCURRENT_ROOT = UCONST64(1) << 21;

 203 const DecoratorSet IN_DECORATOR_MASK  = IN_HEAP | IN_HEAP_ARRAY |
 204                                         IN_ROOT | IN_CONCURRENT_ROOT;

 205 
 206 // == Value Decorators ==
 207 // * OOP_NOT_NULL: This property can make certain barriers faster such as compressing oops.
 208 const DecoratorSet OOP_NOT_NULL       = UCONST64(1) << 22;
 209 const DecoratorSet OOP_DECORATOR_MASK = OOP_NOT_NULL;
 210 
 211 // == Arraycopy Decorators ==
 212 // * ARRAYCOPY_DEST_NOT_INITIALIZED: This property can be important to e.g. SATB barriers by
 213 //   marking that the previous value uninitialized nonsense rather than a real value.
 214 // * ARRAYCOPY_CHECKCAST: This property means that the class of the objects in source
 215 //   are not guaranteed to be subclasses of the class of the destination array. This requires
 216 //   a check-cast barrier during the copying operation. If this is not set, it is assumed
 217 //   that the array is covariant: (the source array type is-a destination array type)
 218 // * ARRAYCOPY_DISJOINT: This property means that it is known that the two array ranges
 219 //   are disjoint.
 220 // * ARRAYCOPY_ARRAYOF: The copy is in the arrayof form.
 221 // * ARRAYCOPY_ATOMIC: The accesses have to be atomic over the size of its elements.
 222 // * ARRAYCOPY_ALIGNED: The accesses have to be aligned on a HeapWord.
 223 const DecoratorSet ARRAYCOPY_DEST_NOT_INITIALIZED = UCONST64(1) << 24;
 224 const DecoratorSet ARRAYCOPY_CHECKCAST            = UCONST64(1) << 25;
 225 const DecoratorSet ARRAYCOPY_DISJOINT             = UCONST64(1) << 26;
 226 const DecoratorSet ARRAYCOPY_ARRAYOF              = UCONST64(1) << 27;
 227 const DecoratorSet ARRAYCOPY_ATOMIC               = UCONST64(1) << 28;
 228 const DecoratorSet ARRAYCOPY_ALIGNED              = UCONST64(1) << 29;




 183 const DecoratorSet ON_PHANTOM_OOP_REF = UCONST64(1) << 16;
 184 const DecoratorSet ON_UNKNOWN_OOP_REF = UCONST64(1) << 17;
 185 const DecoratorSet ON_DECORATOR_MASK  = ON_STRONG_OOP_REF | ON_WEAK_OOP_REF |
 186                                         ON_PHANTOM_OOP_REF | ON_UNKNOWN_OOP_REF;
 187 
 188 // === Access Location ===
 189 // Accesses can take place in, e.g. the heap, old or young generation and different native roots.
 190 // The location is important to the GC as it may imply different actions. The following decorators are used:
 191 // * IN_HEAP: The access is performed in the heap. Many barriers such as card marking will
 192 //   be omitted if this decorator is not set.
 193 // * IN_HEAP_ARRAY: The access is performed on a heap allocated array. This is sometimes a special case
 194 //   for some GCs, and implies that it is an IN_HEAP.
 195 // * IN_ROOT: The access is performed in an off-heap data structure pointing into the Java heap.
 196 // * IN_CONCURRENT_ROOT: The access is performed in an off-heap data structure pointing into the Java heap,
 197 //   but is notably not scanned during safepoints. This is sometimes a special case for some GCs and
 198 //   implies that it is also an IN_ROOT.
 199 const DecoratorSet IN_HEAP            = UCONST64(1) << 18;
 200 const DecoratorSet IN_HEAP_ARRAY      = UCONST64(1) << 19;
 201 const DecoratorSet IN_ROOT            = UCONST64(1) << 20;
 202 const DecoratorSet IN_CONCURRENT_ROOT = UCONST64(1) << 21;
 203 const DecoratorSet IN_ARCHIVE_ROOT    = UCONST64(1) << 22;
 204 const DecoratorSet IN_DECORATOR_MASK  = IN_HEAP | IN_HEAP_ARRAY |
 205                                         IN_ROOT | IN_CONCURRENT_ROOT |
 206                                         IN_ARCHIVE_ROOT;
 207 
 208 // == Value Decorators ==
 209 // * OOP_NOT_NULL: This property can make certain barriers faster such as compressing oops.
 210 const DecoratorSet OOP_NOT_NULL       = UCONST64(1) << 23;
 211 const DecoratorSet OOP_DECORATOR_MASK = OOP_NOT_NULL;
 212 
 213 // == Arraycopy Decorators ==
 214 // * ARRAYCOPY_DEST_NOT_INITIALIZED: This property can be important to e.g. SATB barriers by
 215 //   marking that the previous value uninitialized nonsense rather than a real value.
 216 // * ARRAYCOPY_CHECKCAST: This property means that the class of the objects in source
 217 //   are not guaranteed to be subclasses of the class of the destination array. This requires
 218 //   a check-cast barrier during the copying operation. If this is not set, it is assumed
 219 //   that the array is covariant: (the source array type is-a destination array type)
 220 // * ARRAYCOPY_DISJOINT: This property means that it is known that the two array ranges
 221 //   are disjoint.
 222 // * ARRAYCOPY_ARRAYOF: The copy is in the arrayof form.
 223 // * ARRAYCOPY_ATOMIC: The accesses have to be atomic over the size of its elements.
 224 // * ARRAYCOPY_ALIGNED: The accesses have to be aligned on a HeapWord.
 225 const DecoratorSet ARRAYCOPY_DEST_NOT_INITIALIZED = UCONST64(1) << 24;
 226 const DecoratorSet ARRAYCOPY_CHECKCAST            = UCONST64(1) << 25;
 227 const DecoratorSet ARRAYCOPY_DISJOINT             = UCONST64(1) << 26;
 228 const DecoratorSet ARRAYCOPY_ARRAYOF              = UCONST64(1) << 27;
 229 const DecoratorSet ARRAYCOPY_ATOMIC               = UCONST64(1) << 28;
 230 const DecoratorSet ARRAYCOPY_ALIGNED              = UCONST64(1) << 29;


< prev index next >