linkedFields.append(fieldOffset, field); fieldOffset += fieldSize;
for (int i=0; i<instructions.size(); i++) { Instruction instruction = instructions.get(i); analyzedInstructions.append(currentCodeAddress, new AnalyzedInstruction(this, instruction, i, registerCount)); assert analyzedInstructions.indexOfKey(currentCodeAddress) == i;
instanceFields.append(fieldOffset, field); fieldOffset += sizeof_uint32_t; continue; instanceFields.append(fieldOffset, field); fields.remove(i); break; final Field field = fields.remove(0); final int type = getTypeAsPrimitiveType(field); instanceFields.append(fieldOffset, field); fieldOffset += (type == kPrimLong || type == kPrimDouble) ? sizeof_uint64_t : sizeof_uint32_t;
static void shuffleForward(int n, FieldOffsetData data) { while (!data.fields.isEmpty()) { final Field f = data.fields.get(0); final int type = getTypeAsPrimitiveType(f); if (getComponentSize(type) < n) { break; } if (!isAligned(n, data.fieldOffset)) { final int oldFieldOffset = data.fieldOffset; data.fieldOffset = roundUp(data.fieldOffset, n); FieldGap.add(oldFieldOffset, data.fieldOffset, data.gaps); } data.fields.remove(0); if (!data.gaps.isEmpty() && data.gaps.first().size >= n) { final FieldGap gap = data.gaps.pollFirst(); data.instanceFields.append(gap.startOffset, f); assert isAligned(n, gap.startOffset); if (gap.size > n) { FieldGap.add(gap.startOffset + n, gap.startOffset + gap.size, data.gaps); } } else { assert isAligned(n, data.fieldOffset); data.instanceFields.append(data.fieldOffset, f); data.fieldOffset += n; } data.currentField++; } }
linkedFields.append(fieldOffset, field); fieldOffset += fieldSize;
for (int i=0; i<instructions.size(); i++) { Instruction instruction = instructions.get(i); analyzedInstructions.append(currentCodeAddress, new AnalyzedInstruction(instruction, i, registerCount)); assert analyzedInstructions.indexOfKey(currentCodeAddress) == i; currentCodeAddress += instruction.getCodeUnits();
for (int i=0; i<instructions.size(); i++) { Instruction instruction = instructions.get(i); analyzedInstructions.append(currentCodeAddress, new AnalyzedInstruction(this, instruction, i, registerCount)); assert analyzedInstructions.indexOfKey(currentCodeAddress) == i;