private void setFinalStaticJTOCEntry(VM_Field field, int fieldOffset) {
private void setFinalStaticJTOCEntry(VM_Field field, Offset fieldOffset) {
  private void setFinalStaticJTOCEntry(VM_Field field, int fieldOffset) {    if (!field.isFinal()) return;    // value Index: index into the classes constant pool.    int valueIndex = field.getConstantValueIndex();    // index for field value in JTOC    int fieldIndex = fieldOffset >> LOG_BYTES_IN_INT;    // if there's no value in the constant pool, bail out    if (valueIndex <= 0) return;    int literalOffset= field.getDeclaringClass().getLiteralOffset(valueIndex);    // if field is object, should use reference form of setSlotContents.    // But getSlotContentsAsObject() uses Magic to recast as Object, and    // Magic is not allowed when BootImageWriter is executing under JDK,    // so we only do the "proper" thing when the vm is running.  This is OK    // for now, because the bootImage is not collected (all object get BIG    // reference counts    //    if (VM.runningVM && VM_Statics.isReference(fieldIndex)) {      Object obj = VM_Statics.getSlotContentsAsObject(literalOffset>>LOG_BYTES_IN_INT);      VM_Statics.setSlotContents(fieldIndex,obj);    } else if (field.getType().getSize() == BYTES_IN_INT) {      // copy one word from constant pool to JTOC      int value = VM_Statics.getSlotContentsAsInt(literalOffset>>LOG_BYTES_IN_INT);      VM_Statics.setSlotContents(fieldIndex,value);    } else {      // copy two words from constant pool to JTOC      long value = VM_Statics.getSlotContentsAsLong(literalOffset>>LOG_BYTES_IN_INT);      VM_Statics.setSlotContents(fieldIndex,value);    }  }