internal override sealed bool Check(MetaDataOut md)
{
target = (int)dest.GetLabelOffset() - (int)(offset + size);
if ((target < minByteVal) || (target > maxByteVal)) { // check for longver
if (shortVer) {
if (instr == (uint)BranchOp.leave_s)
instr = (uint)BranchOp.leave;
else
instr = instr += longInstrOffset;
size += 3;
shortVer = false;
return true;
}
} else if (!shortVer) { // check for short ver
if (instr == (uint)BranchOp.leave)
instr = (uint)BranchOp.leave_s;
else
instr = instr -= longInstrOffset;
size -= 3;
shortVer = true;
return true;
}
/*
if (shortVer && ((target < minByteVal) || (target > maxByteVal))) {
if (instr < (int)BranchOp.leave) instr += longInstrOffset;
else instr--;
shortVer = false;
size += 3;
return true;
}
*/
return false;
}