源码:
boolean fCompressable;
com.tangosol.io.WriteBuffer.BufferOutput out;
if (dfl != 0.0D || !isSkippable()) {
fCompressable = isCompressable();
encodePosition(iPos);
out = m_out;
if (isTypeIdEncoded(-6)) {
try {
long nBits = Double.doubleToLongBits(dfl);
if ((nBits & 0xffffffffffffL) == 0L && fCompressable) {
switch ((int) (nBits >>> 48)) {
case 65520:
out.writePackedInt(-39);
break;
case 32752:
out.writePackedInt(-38);
break;
case 32760:
out.writePackedInt(-40);
break;
case 49136:
case 16438:
case 16437:
case 16436:
case 16435:
case 16434:
case 16433:
case 16432:
case 16430:
case 16428:
case 16426:
case 16424:
case 16422:
case 16420:
case 16418:
case 16416:
case 16412:
case 16408:
case 16404:
case 16400:
case 16392:
case 16384:
case 16368:
case 0:
out.writePackedInt(-42 - (int) dfl);
break;
}
out.writePackedInt(-6);
out.writeLong(nBits);
}
out.writeDouble(dfl);
} catch (IOException e) {
throw ensureRuntimeException(e);
}
}
}
反编译后:
boolean fCompressable;
com.tangosol.io.WriteBuffer.BufferOutput out;
if(dfl == 0.0D && isSkippable())
break MISSING_BLOCK_LABEL_383;
fCompressable = isCompressable();
encodePosition(iPos);
out = m_out;
if(!isTypeIdEncoded(-6)) goto _L2; else goto _L1
_L1:
long nBits;
nBits = Double.doubleToLongBits(dfl);
if((nBits & 0xffffffffffffL) != 0L || !fCompressable)
break MISSING_BLOCK_LABEL_343;
(int)(nBits >>> 48);
JVM INSTR lookupswitch 27: default 343
// 0: 328
// 16368: 328
// 16384: 328
// 16392: 328
// 16400: 328
// 16404: 328
// 16408: 328
// 16412: 328
// 16416: 328
// 16418: 328
// 16420: 328
// 16422: 328
// 16424: 328
// 16426: 328
// 16428: 328
// 16430: 328
// 16432: 328
// 16433: 328
// 16434: 328
// 16435: 328
// 16436: 328
// 16437: 328
// 16438: 328
// 32752: 304
// 32760: 316
// 49136: 328
// 65520: 292;
goto _L3 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L4 _L5 _L6 _L4 _L7
_L3:
break MISSING_BLOCK_LABEL_343;
_L7:
out.writePackedInt(-39);
break MISSING_BLOCK_LABEL_383;
_L5:
try
{
out.writePackedInt(-38);
}
catch(IOException e)
{
throw ensureRuntimeException(e);
}
break MISSING_BLOCK_LABEL_383;
_L6:
out.writePackedInt(-40);
break MISSING_BLOCK_LABEL_383;
_L4:
out.writePackedInt(-42 - (int)dfl);
break MISSING_BLOCK_LABEL_383;
out.writePackedInt(-6);
out.writeLong(nBits);
break MISSING_BLOCK_LABEL_383;
_L2:
out.writeDouble(dfl);