org.jikesrvm.compilers.baseline.ia32
Class Barriers

java.lang.Object
  extended by org.jikesrvm.compilers.baseline.ia32.Barriers
All Implemented Interfaces:
Constants, HeapLayoutConstants, ArchConstants, BaselineConstants, RegisterConstants, StackframeLayoutConstants, TrapConstants, ThinLockConstants, TIBLayoutConstants, SizeConstants

 class Barriers
extends Object
implements BaselineConstants

Class called from baseline compiler to generate architecture specific write barriers for garbage collectors. For baseline compiled methods, the write barrier calls methods of WriteBarrier.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jikesrvm.ia32.RegisterConstants
RegisterConstants.FloatingPointMachineRegister, RegisterConstants.FPR, RegisterConstants.GPR, RegisterConstants.MachineRegister, RegisterConstants.MM, RegisterConstants.XMM
 
Field Summary
 
Fields inherited from interface org.jikesrvm.ia32.BaselineConstants
BRIDGE_FRAME_EXTRA_SIZE, EBP_SAVE_OFFSET, EBX_SAVE_OFFSET, EDI_SAVE_OFFSET, FPU_SAVE_OFFSET, LG_WORDSIZE, S0, S1, SAVED_GPRS, SAVED_GPRS_FOR_SAVE_LS_REGISTERS, SP, STACKFRAME_FIRST_PARAMETER_OFFSET, STACKFRAME_REG_SAVE_OFFSET, T0, T0_int, T0_SAVE_OFFSET, T1, T1_int, T1_SAVE_OFFSET, TR, WORDSIZE, XMM_SAVE_OFFSET
 
Fields inherited from interface org.jikesrvm.Constants
NOT_REACHED, REFLECTION_FPRS_BITS, REFLECTION_FPRS_MASK, REFLECTION_GPRS_BITS, REFLECTION_GPRS_MASK
 
Fields inherited from interface org.jikesrvm.objectmodel.ThinLockConstants
TL_DEDICATED_U16_OFFSET, TL_DEDICATED_U16_SHIFT, TL_LOCK_COUNT_MASK, TL_LOCK_COUNT_SHIFT, TL_LOCK_COUNT_UNIT, TL_LOCK_ID_MASK, TL_LOCK_ID_SHIFT, TL_NUM_BITS_RC, TL_NUM_BITS_STAT, TL_NUM_BITS_TID, TL_STAT_BIASABLE, TL_STAT_FAT, TL_STAT_MASK, TL_STAT_SHIFT, TL_STAT_THIN, TL_THREAD_ID_MASK, TL_THREAD_ID_SHIFT, TL_UNLOCK_MASK
 
Fields inherited from interface org.jikesrvm.SizeConstants
BITS_IN_ADDRESS, BITS_IN_BOOLEAN, BITS_IN_BYTE, BITS_IN_CHAR, BITS_IN_DOUBLE, BITS_IN_EXTENT, BITS_IN_FLOAT, BITS_IN_INT, BITS_IN_LONG, BITS_IN_OFFSET, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BOOLEAN, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_DOUBLE, BYTES_IN_EXTENT, BYTES_IN_FLOAT, BYTES_IN_INT, BYTES_IN_LONG, BYTES_IN_OFFSET, BYTES_IN_PAGE, BYTES_IN_SHORT, BYTES_IN_WORD, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BOOLEAN, LOG_BITS_IN_BYTE, LOG_BITS_IN_CHAR, LOG_BITS_IN_DOUBLE, LOG_BITS_IN_EXTENT, LOG_BITS_IN_FLOAT, LOG_BITS_IN_INT, LOG_BITS_IN_LONG, LOG_BITS_IN_OFFSET, LOG_BITS_IN_PAGE, LOG_BITS_IN_SHORT, LOG_BITS_IN_WORD, LOG_BYTES_IN_ADDRESS, LOG_BYTES_IN_BOOLEAN, LOG_BYTES_IN_BYTE, LOG_BYTES_IN_CHAR, LOG_BYTES_IN_DOUBLE, LOG_BYTES_IN_EXTENT, LOG_BYTES_IN_FLOAT, LOG_BYTES_IN_INT, LOG_BYTES_IN_LONG, LOG_BYTES_IN_OFFSET, LOG_BYTES_IN_PAGE, LOG_BYTES_IN_SHORT, LOG_BYTES_IN_WORD
 
Fields inherited from interface org.jikesrvm.objectmodel.TIBLayoutConstants
IMT_METHOD_SLOTS, NEEDS_DYNAMIC_LINK, TIB_ARRAY_ELEMENT_TIB_INDEX, TIB_DOES_IMPLEMENT_INDEX, TIB_FIRST_SPECIALIZED_METHOD_INDEX, TIB_FIRST_VIRTUAL_METHOD_INDEX, TIB_INTERFACE_DISPATCH_TABLE_INDEX, TIB_SUPERCLASS_IDS_INDEX, TIB_TYPE_INDEX
 
Fields inherited from interface org.jikesrvm.HeapLayoutConstants
BAD_MAP_COMPRESSION, BOOT_IMAGE_CODE_END, BOOT_IMAGE_CODE_SIZE, BOOT_IMAGE_CODE_START, BOOT_IMAGE_DATA_END, BOOT_IMAGE_DATA_SIZE, BOOT_IMAGE_DATA_START, BOOT_IMAGE_END, BOOT_IMAGE_RMAP_END, BOOT_IMAGE_RMAP_START, MAX_BOOT_IMAGE_RMAP_SIZE, MAXIMUM_MAPPABLE
 
Fields inherited from interface org.jikesrvm.ia32.ArchConstants
SSE2_BASE, SSE2_FULL
 
Fields inherited from interface org.jikesrvm.ia32.StackframeLayoutConstants
BYTES_IN_STACKSLOT, FPU_STATE_SIZE, INVISIBLE_METHOD_ID, LOG_BYTES_IN_STACKSLOT, STACK_SIZE_BOOT, STACK_SIZE_COLLECTOR, STACK_SIZE_DLOPEN, STACK_SIZE_GCDISABLED, STACK_SIZE_GROW, STACK_SIZE_GUARD, STACK_SIZE_JNINATIVE_GROW, STACK_SIZE_MAX, STACK_SIZE_NORMAL, STACK_SIZE_SYSCALL, STACKFRAME_ALIGNMENT, STACKFRAME_BODY_OFFSET, STACKFRAME_FRAME_POINTER_OFFSET, STACKFRAME_HEADER_SIZE, STACKFRAME_METHOD_ID_OFFSET, STACKFRAME_RETURN_ADDRESS_OFFSET, STACKFRAME_SENTINEL_FP, XMM_STATE_SIZE
 
Fields inherited from interface org.jikesrvm.ia32.RegisterConstants
ALL_FPRS, ALL_GPRS, EAX, EBP, EBX, ECX, EDI, EDX, ESI, ESP, FP0, FP1, FP2, FP3, FP4, FP5, FP6, FP7, INSTRUCTION_WIDTH, LG_INSTRUCTION_WIDTH, MM0, MM1, MM10, MM11, MM12, MM13, MM14, MM15, MM2, MM3, MM4, MM5, MM6, MM7, MM8, MM9, NATIVE_NONVOLATILE_FPRS, NATIVE_NONVOLATILE_GPRS, NATIVE_PARAMETER_FPRS, NATIVE_PARAMETER_GPRS, NATIVE_VOLATILE_FPRS, NATIVE_VOLATILE_GPRS, NONVOLATILE_FPRS, NONVOLATILE_GPRS, NUM_FPRS, NUM_GPRS, NUM_NONVOLATILE_FPRS, NUM_NONVOLATILE_GPRS, NUM_PARAMETER_FPRS, NUM_PARAMETER_GPRS, NUM_RETURN_FPRS, NUM_RETURN_GPRS, NUM_VOLATILE_FPRS, NUM_VOLATILE_GPRS, PARAMETER_FPRS, PARAMETER_GPRS, R0, R1, R10, R11, R12, R13, R14, R15, R2, R3, R4, R5, R6, R7, R8, R9, RETURN_FPRS, RETURN_GPRS, STACK_POINTER, THREAD_REGISTER, VOLATILE_FPRS, VOLATILE_GPRS, XMM0, XMM1, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9
 
Fields inherited from interface org.jikesrvm.ia32.TrapConstants
RVM_TRAP_BASE
 
Constructor Summary
Barriers()
           
 
Method Summary
private static void arayStoreBarrierHelper(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler, NormalMethod barrier)
          Helper function for primitive array stores
(package private) static void compileArrayLoadBarrier(ArchitectureSpecific.Assembler asm, boolean pushResult)
           
(package private) static void compileArrayStoreBarrier(ArchitectureSpecific.Assembler asm)
          Generate code to perform an array store barrier.
(package private) static void compileArrayStoreBarrierByte(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler)
          Generate code to perform a bastore barrier.
(package private) static void compileArrayStoreBarrierChar(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler)
          Generate code to perform a castore barrier.
(package private) static void compileArrayStoreBarrierDouble(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler)
          Generate code to perform a dastore barrier.
(package private) static void compileArrayStoreBarrierFloat(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler)
          Generate code to perform a fastore barrier.
(package private) static void compileArrayStoreBarrierInt(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler)
          Generate code to perform a iastore barrier.
(package private) static void compileArrayStoreBarrierLong(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler)
          Generate code to perform a lastore barrier.
(package private) static void compileArrayStoreBarrierShort(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler)
          Generate code to perform a sastore barrier.
(package private) static void compileGetfieldBarrier(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR reg, int locationMetadata)
           
(package private) static void compileGetfieldBarrierImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata)
           
(package private) static void compileGetstaticBarrier(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR reg, int locationMetadata)
           
(package private) static void compileGetstaticBarrierImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata)
           
(package private) static void compileModifyCheck(ArchitectureSpecific.Assembler asm, int offset)
           
(package private) static void compilePutfieldBarrier(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata)
          Generate code to perform a putfield barrier.
(package private) static void compilePutfieldBarrierAddress(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Address field.
(package private) static void compilePutfieldBarrierAddressImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Address field when the field is at a known offset.
(package private) static void compilePutfieldBarrierBoolean(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a boolean field.
(package private) static void compilePutfieldBarrierBooleanImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a boolean field when the field is at a known offset.
(package private) static void compilePutfieldBarrierByte(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a byte field.
(package private) static void compilePutfieldBarrierByteImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a byte field when the field is at a known offset.
(package private) static void compilePutfieldBarrierChar(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a char field.
(package private) static void compilePutfieldBarrierCharImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a char field when the field is at a known offset.
(package private) static void compilePutfieldBarrierDouble(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a double field.
(package private) static void compilePutfieldBarrierDoubleImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a double field when the field is at a known offset.
(package private) static void compilePutfieldBarrierExtent(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Extent field.
(package private) static void compilePutfieldBarrierExtentImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Extent field when the field is at a known offset.
(package private) static void compilePutfieldBarrierFloat(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a float field.
(package private) static void compilePutfieldBarrierFloatImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a float field when the field is at a known offset.
(package private) static void compilePutfieldBarrierImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata)
          Generate code to perform a putfield barrier when the field is at a known offset.
(package private) static void compilePutfieldBarrierInt(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a int field.
(package private) static void compilePutfieldBarrierIntImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a int field when the field is at a known offset.
(package private) static void compilePutfieldBarrierLong(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a long field.
(package private) static void compilePutfieldBarrierLongImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a long field when the field is at a known offset.
(package private) static void compilePutfieldBarrierOffset(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Offset field.
(package private) static void compilePutfieldBarrierOffsetImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Offset field when the field is at a known offset.
(package private) static void compilePutfieldBarrierShort(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a short field.
(package private) static void compilePutfieldBarrierShortImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a short field when the field is at a known offset.
(package private) static void compilePutfieldBarrierWord(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR offset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Word field.
(package private) static void compilePutfieldBarrierWordImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata, BaselineCompilerImpl compiler)
          Generate code to perform a putfield barrier for a unboxed Word field when the field is at a known offset.
(package private) static void compilePutstaticBarrier(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR reg, int locationMetadata)
           
(package private) static void compilePutstaticBarrierImm(ArchitectureSpecific.Assembler asm, Offset fieldOffset, int locationMetadata)
           
private static void genNullCheck(ArchitectureSpecific.Assembler asm, RegisterConstants.GPR objRefReg)
          Generate an implicit null check by loading the TIB of the given object.
private static void putfieldStoreBarrierHelper(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler, Offset fieldOffset, int locationMetadata, NormalMethod barrier)
          Private helper method for primitive putfields
private static void putfieldStoreBarrierHelper(ArchitectureSpecific.Assembler asm, BaselineCompilerImpl compiler, RegisterConstants.GPR offset, int locationMetadata, NormalMethod barrier)
          Private helper method for primitive putfields
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Barriers

Barriers()
Method Detail

compileArrayStoreBarrier

static void compileArrayStoreBarrier(ArchitectureSpecific.Assembler asm)
Generate code to perform an array store barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in

arayStoreBarrierHelper

private static void arayStoreBarrierHelper(ArchitectureSpecific.Assembler asm,
                                           BaselineCompilerImpl compiler,
                                           NormalMethod barrier)
Helper function for primitive array stores

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing
barrier - the designated barrier

compileArrayStoreBarrierByte

static void compileArrayStoreBarrierByte(ArchitectureSpecific.Assembler asm,
                                         BaselineCompilerImpl compiler)
Generate code to perform a bastore barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing

compileArrayStoreBarrierChar

static void compileArrayStoreBarrierChar(ArchitectureSpecific.Assembler asm,
                                         BaselineCompilerImpl compiler)
Generate code to perform a castore barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing

compileArrayStoreBarrierDouble

static void compileArrayStoreBarrierDouble(ArchitectureSpecific.Assembler asm,
                                           BaselineCompilerImpl compiler)
Generate code to perform a dastore barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing

compileArrayStoreBarrierFloat

static void compileArrayStoreBarrierFloat(ArchitectureSpecific.Assembler asm,
                                          BaselineCompilerImpl compiler)
Generate code to perform a fastore barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing

compileArrayStoreBarrierInt

static void compileArrayStoreBarrierInt(ArchitectureSpecific.Assembler asm,
                                        BaselineCompilerImpl compiler)
Generate code to perform a iastore barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing

compileArrayStoreBarrierLong

static void compileArrayStoreBarrierLong(ArchitectureSpecific.Assembler asm,
                                         BaselineCompilerImpl compiler)
Generate code to perform a lastore barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing

compileArrayStoreBarrierShort

static void compileArrayStoreBarrierShort(ArchitectureSpecific.Assembler asm,
                                          BaselineCompilerImpl compiler)
Generate code to perform a sastore barrier. On entry the stack holds: arrayRef, index, value.

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing

compilePutfieldBarrier

static void compilePutfieldBarrier(ArchitectureSpecific.Assembler asm,
                                   RegisterConstants.GPR offset,
                                   int locationMetadata)
Generate code to perform a putfield barrier. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierImm

static void compilePutfieldBarrierImm(ArchitectureSpecific.Assembler asm,
                                      Offset fieldOffset,
                                      int locationMetadata)
Generate code to perform a putfield barrier when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

putfieldStoreBarrierHelper

private static void putfieldStoreBarrierHelper(ArchitectureSpecific.Assembler asm,
                                               BaselineCompilerImpl compiler,
                                               RegisterConstants.GPR offset,
                                               int locationMetadata,
                                               NormalMethod barrier)
Private helper method for primitive putfields

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing
offset - the register holding the offset of the field
locationMetadata - meta-data about the location
barrier - the barrier method to call

putfieldStoreBarrierHelper

private static void putfieldStoreBarrierHelper(ArchitectureSpecific.Assembler asm,
                                               BaselineCompilerImpl compiler,
                                               Offset fieldOffset,
                                               int locationMetadata,
                                               NormalMethod barrier)
Private helper method for primitive putfields

Parameters:
asm - the assembler to generate the code in
compiler - the compiler instance to ensure correct parameter passing
fieldOffset - offset of the field
locationMetadata - meta-data about the location
barrier - the barrier method to call

compilePutfieldBarrierBoolean

static void compilePutfieldBarrierBoolean(ArchitectureSpecific.Assembler asm,
                                          RegisterConstants.GPR offset,
                                          int locationMetadata,
                                          BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a boolean field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierBooleanImm

static void compilePutfieldBarrierBooleanImm(ArchitectureSpecific.Assembler asm,
                                             Offset fieldOffset,
                                             int locationMetadata,
                                             BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a boolean field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierByte

static void compilePutfieldBarrierByte(ArchitectureSpecific.Assembler asm,
                                       RegisterConstants.GPR offset,
                                       int locationMetadata,
                                       BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a byte field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierByteImm

static void compilePutfieldBarrierByteImm(ArchitectureSpecific.Assembler asm,
                                          Offset fieldOffset,
                                          int locationMetadata,
                                          BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a byte field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierChar

static void compilePutfieldBarrierChar(ArchitectureSpecific.Assembler asm,
                                       RegisterConstants.GPR offset,
                                       int locationMetadata,
                                       BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a char field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierCharImm

static void compilePutfieldBarrierCharImm(ArchitectureSpecific.Assembler asm,
                                          Offset fieldOffset,
                                          int locationMetadata,
                                          BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a char field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierDouble

static void compilePutfieldBarrierDouble(ArchitectureSpecific.Assembler asm,
                                         RegisterConstants.GPR offset,
                                         int locationMetadata,
                                         BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a double field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierDoubleImm

static void compilePutfieldBarrierDoubleImm(ArchitectureSpecific.Assembler asm,
                                            Offset fieldOffset,
                                            int locationMetadata,
                                            BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a double field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierFloat

static void compilePutfieldBarrierFloat(ArchitectureSpecific.Assembler asm,
                                        RegisterConstants.GPR offset,
                                        int locationMetadata,
                                        BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a float field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierFloatImm

static void compilePutfieldBarrierFloatImm(ArchitectureSpecific.Assembler asm,
                                           Offset fieldOffset,
                                           int locationMetadata,
                                           BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a float field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierInt

static void compilePutfieldBarrierInt(ArchitectureSpecific.Assembler asm,
                                      RegisterConstants.GPR offset,
                                      int locationMetadata,
                                      BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a int field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierIntImm

static void compilePutfieldBarrierIntImm(ArchitectureSpecific.Assembler asm,
                                         Offset fieldOffset,
                                         int locationMetadata,
                                         BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a int field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierLong

static void compilePutfieldBarrierLong(ArchitectureSpecific.Assembler asm,
                                       RegisterConstants.GPR offset,
                                       int locationMetadata,
                                       BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a long field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierLongImm

static void compilePutfieldBarrierLongImm(ArchitectureSpecific.Assembler asm,
                                          Offset fieldOffset,
                                          int locationMetadata,
                                          BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a long field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierShort

static void compilePutfieldBarrierShort(ArchitectureSpecific.Assembler asm,
                                        RegisterConstants.GPR offset,
                                        int locationMetadata,
                                        BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a short field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierShortImm

static void compilePutfieldBarrierShortImm(ArchitectureSpecific.Assembler asm,
                                           Offset fieldOffset,
                                           int locationMetadata,
                                           BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a short field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierWord

static void compilePutfieldBarrierWord(ArchitectureSpecific.Assembler asm,
                                       RegisterConstants.GPR offset,
                                       int locationMetadata,
                                       BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Word field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierWordImm

static void compilePutfieldBarrierWordImm(ArchitectureSpecific.Assembler asm,
                                          Offset fieldOffset,
                                          int locationMetadata,
                                          BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Word field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierAddress

static void compilePutfieldBarrierAddress(ArchitectureSpecific.Assembler asm,
                                          RegisterConstants.GPR offset,
                                          int locationMetadata,
                                          BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Address field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierAddressImm

static void compilePutfieldBarrierAddressImm(ArchitectureSpecific.Assembler asm,
                                             Offset fieldOffset,
                                             int locationMetadata,
                                             BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Address field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierExtent

static void compilePutfieldBarrierExtent(ArchitectureSpecific.Assembler asm,
                                         RegisterConstants.GPR offset,
                                         int locationMetadata,
                                         BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Extent field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierExtentImm

static void compilePutfieldBarrierExtentImm(ArchitectureSpecific.Assembler asm,
                                            Offset fieldOffset,
                                            int locationMetadata,
                                            BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Extent field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierOffset

static void compilePutfieldBarrierOffset(ArchitectureSpecific.Assembler asm,
                                         RegisterConstants.GPR offset,
                                         int locationMetadata,
                                         BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Offset field. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
offset - the register holding the offset of the field
locationMetadata - meta-data about the location

compilePutfieldBarrierOffsetImm

static void compilePutfieldBarrierOffsetImm(ArchitectureSpecific.Assembler asm,
                                            Offset fieldOffset,
                                            int locationMetadata,
                                            BaselineCompilerImpl compiler)
Generate code to perform a putfield barrier for a unboxed Offset field when the field is at a known offset. On entry the stack holds: object, value.

Parameters:
asm - the assembler to generate the code in
fieldOffset - the offset of the field
locationMetadata - meta-data about the location

compilePutstaticBarrier

static void compilePutstaticBarrier(ArchitectureSpecific.Assembler asm,
                                    RegisterConstants.GPR reg,
                                    int locationMetadata)

compilePutstaticBarrierImm

static void compilePutstaticBarrierImm(ArchitectureSpecific.Assembler asm,
                                       Offset fieldOffset,
                                       int locationMetadata)

compileArrayLoadBarrier

static void compileArrayLoadBarrier(ArchitectureSpecific.Assembler asm,
                                    boolean pushResult)

compileGetfieldBarrier

static void compileGetfieldBarrier(ArchitectureSpecific.Assembler asm,
                                   RegisterConstants.GPR reg,
                                   int locationMetadata)

compileGetfieldBarrierImm

static void compileGetfieldBarrierImm(ArchitectureSpecific.Assembler asm,
                                      Offset fieldOffset,
                                      int locationMetadata)

compileGetstaticBarrier

static void compileGetstaticBarrier(ArchitectureSpecific.Assembler asm,
                                    RegisterConstants.GPR reg,
                                    int locationMetadata)

compileGetstaticBarrierImm

static void compileGetstaticBarrierImm(ArchitectureSpecific.Assembler asm,
                                       Offset fieldOffset,
                                       int locationMetadata)

compileModifyCheck

static void compileModifyCheck(ArchitectureSpecific.Assembler asm,
                               int offset)

genNullCheck

private static void genNullCheck(ArchitectureSpecific.Assembler asm,
                                 RegisterConstants.GPR objRefReg)
Generate an implicit null check by loading the TIB of the given object. Scribbles over S0.

Parameters:
asm - the assembler to generate into
objRefReg - the register containing the reference