GeneratorAdapter generates jump instructions wrongly
From the end of GeneratorAdapter.ifCmp(...)
int jumpMode = mode;
switch (mode) {
case GE:
jumpMode = LT;
break;
case LE:
jumpMode = GT;
break;
}
I can't tell why this is done at all, because as far as I can tell, it makes
the jump come out wrong. If I do ifCmp(INT_TYPE, GE, label), I get an
IF_ICMPGE. If I do a ifCmp(LONG_TYPE, GE, label), I get LCMP; IFLT, which is
wrong. I want IFGE, which is what I asked for.
I also think that the choice of DCMPG/DGMPL should be made so that the jump is
executed on NaN (consider the common case), or at least, this should be
specifiable.