/** {@inheritDoc} */ public void visitBranch(int opcode, int offset, int length, int target) { switch (opcode) { case ByteOps.GOTO: { visitCommon(offset, length, false); targetLists[offset] = IntList.makeImmutable(target); break; } case ByteOps.JSR: { /* * Each jsr is quarantined into a separate block (containing * only the jsr instruction) but is otherwise treated * as a conditional branch. (That is to say, both its * target and next instruction begin new blocks.) */ addWorkIfNecessary(offset, true); // Fall through to next case... } default: { int next = offset + length; visitCommon(offset, length, true); addWorkIfNecessary(next, true); targetLists[offset] = IntList.makeImmutable(next, target); break; } } addWorkIfNecessary(target, true); }
/** {@inheritDoc} */ public void visitBranch(int opcode, int offset, int length, int target) { switch (opcode) { case ByteOps.GOTO: { visitCommon(offset, length, false); targetLists[offset] = IntList.makeImmutable(target); break; } case ByteOps.JSR: { /* * Each jsr is quarantined into a separate block (containing * only the jsr instruction) but is otherwise treated * as a conditional branch. (That is to say, both its * target and next instruction begin new blocks.) */ addWorkIfNecessary(offset, true); // Fall through to next case... } default: { int next = offset + length; visitCommon(offset, length, true); addWorkIfNecessary(next, true); targetLists[offset] = IntList.makeImmutable(next, target); break; } } addWorkIfNecessary(target, true); }
/** {@inheritDoc} */ public void visitBranch(int opcode, int offset, int length, int target) { switch (opcode) { case ByteOps.GOTO: { visitCommon(offset, length, false); targetLists[offset] = IntList.makeImmutable(target); break; } case ByteOps.JSR: { /* * Each jsr is quarantined into a separate block (containing * only the jsr instruction) but is otherwise treated * as a conditional branch. (That is to say, both its * target and next instruction begin new blocks.) */ addWorkIfNecessary(offset, true); // Fall through to next case... } default: { int next = offset + length; visitCommon(offset, length, true); addWorkIfNecessary(next, true); targetLists[offset] = IntList.makeImmutable(next, target); break; } } addWorkIfNecessary(target, true); }
/** {@inheritDoc} */ @Override public void visitBranch(int opcode, int offset, int length, int target) { switch (opcode) { case ByteOps.GOTO: { visitCommon(offset, length, false); targetLists[offset] = IntList.makeImmutable(target); break; } case ByteOps.JSR: { /* * Each jsr is quarantined into a separate block (containing * only the jsr instruction) but is otherwise treated * as a conditional branch. (That is to say, both its * target and next instruction begin new blocks.) */ addWorkIfNecessary(offset, true); // Fall through to next case... } default: { int next = offset + length; visitCommon(offset, length, true); addWorkIfNecessary(next, true); targetLists[offset] = IntList.makeImmutable(next, target); break; } } addWorkIfNecessary(target, true); }
/** {@inheritDoc} */ public void visitBranch(int opcode, int offset, int length, int target) { switch (opcode) { case ByteOps.GOTO: { visitCommon(offset, length, false); targetLists[offset] = IntList.makeImmutable(target); break; } case ByteOps.JSR: { /* * Each jsr is quarantined into a separate block (containing * only the jsr instruction) but is otherwise treated * as a conditional branch. (That is to say, both its * target and next instruction begin new blocks.) */ addWorkIfNecessary(offset, true); // Fall through to next case... } default: { int next = offset + length; visitCommon(offset, length, true); addWorkIfNecessary(next, true); targetLists[offset] = IntList.makeImmutable(next, target); break; } } addWorkIfNecessary(target, true); }
/** {@inheritDoc} */ @Override public void visitBranch(int opcode, int offset, int length, int target) { switch (opcode) { case ByteOps.GOTO: { visitCommon(offset, length, false); targetLists[offset] = IntList.makeImmutable(target); break; } case ByteOps.JSR: { /* * Each jsr is quarantined into a separate block (containing * only the jsr instruction) but is otherwise treated * as a conditional branch. (That is to say, both its * target and next instruction begin new blocks.) */ addWorkIfNecessary(offset, true); // Fall through to next case... } default: { int next = offset + length; visitCommon(offset, length, true); addWorkIfNecessary(next, true); targetLists[offset] = IntList.makeImmutable(next, target); break; } } addWorkIfNecessary(target, true); }
/** * Makes a frame for a subroutine start block, given that this is the * ending frame of one of the subroutine's calling blocks. Subroutine * calls may be nested and thus may have nested locals state, so we * start with an initial state as seen by the subroutine, but keep track * of the individual locals states that will be expected when the individual * subroutine calls return. * * @param subLabel label of subroutine start block * @param callerLabel {@code >=0;} label of the caller block where this frame * came from. * @return a new instance to begin a called subroutine. */ public Frame makeNewSubroutineStartFrame(int subLabel, int callerLabel) { IntList newSubroutines = subroutines.mutableCopy(); newSubroutines.add(subLabel); Frame newFrame = new Frame(locals.getPrimary(), stack, IntList.makeImmutable(subLabel)); return newFrame.mergeWithSubroutineCaller(this, subLabel, callerLabel); }
/** * Makes a frame for a subroutine start block, given that this is the * ending frame of one of the subroutine's calling blocks. Subroutine * calls may be nested and thus may have nested locals state, so we * start with an initial state as seen by the subroutine, but keep track * of the individual locals states that will be expected when the individual * subroutine calls return. * * @param subLabel label of subroutine start block * @param callerLabel {@code >=0;} label of the caller block where this frame * came from. * @return a new instance to begin a called subroutine. */ public Frame makeNewSubroutineStartFrame(int subLabel, int callerLabel) { IntList newSubroutines = subroutines.mutableCopy(); newSubroutines.add(subLabel); Frame newFrame = new Frame(locals.getPrimary(), stack, IntList.makeImmutable(subLabel)); return newFrame.mergeWithSubroutineCaller(this, subLabel, callerLabel); }
/** * Makes a frame for a subroutine start block, given that this is the * ending frame of one of the subroutine's calling blocks. Subroutine * calls may be nested and thus may have nested locals state, so we * start with an initial state as seen by the subroutine, but keep track * of the individual locals states that will be expected when the individual * subroutine calls return. * * @param subLabel label of subroutine start block * @param callerLabel {@code >=0;} label of the caller block where this frame * came from. * @return a new instance to begin a called subroutine. */ public Frame makeNewSubroutineStartFrame(int subLabel, int callerLabel) { IntList newSubroutines = subroutines.mutableCopy(); newSubroutines.add(subLabel); Frame newFrame = new Frame(locals.getPrimary(), stack, IntList.makeImmutable(subLabel)); return newFrame.mergeWithSubroutineCaller(this, subLabel, callerLabel); }
/** * Makes a frame for a subroutine start block, given that this is the * ending frame of one of the subroutine's calling blocks. Subroutine * calls may be nested and thus may have nested locals state, so we * start with an initial state as seen by the subroutine, but keep track * of the individual locals states that will be expected when the individual * subroutine calls return. * * @param subLabel label of subroutine start block * @param callerLabel {@code >=0;} label of the caller block where this frame * came from. * @return a new instance to begin a called subroutine. */ public Frame makeNewSubroutineStartFrame(int subLabel, int callerLabel) { IntList newSubroutines = subroutines.mutableCopy(); newSubroutines.add(subLabel); Frame newFrame = new Frame(locals.getPrimary(), stack, IntList.makeImmutable(subLabel)); return newFrame.mergeWithSubroutineCaller(this, subLabel, callerLabel); }
/** * Makes a frame for a subroutine start block, given that this is the * ending frame of one of the subroutine's calling blocks. Subroutine * calls may be nested and thus may have nested locals state, so we * start with an initial state as seen by the subroutine, but keep track * of the individual locals states that will be expected when the individual * subroutine calls return. * * @param subLabel label of subroutine start block * @param callerLabel {@code >=0;} label of the caller block where this frame * came from. * @return a new instance to begin a called subroutine. */ public Frame makeNewSubroutineStartFrame(int subLabel, int callerLabel) { IntList newSubroutines = subroutines.mutableCopy(); newSubroutines.add(subLabel); Frame newFrame = new Frame(locals.getPrimary(), stack, IntList.makeImmutable(subLabel)); return newFrame.mergeWithSubroutineCaller(this, subLabel, callerLabel); }
/** * Makes a frame for a subroutine start block, given that this is the * ending frame of one of the subroutine's calling blocks. Subroutine * calls may be nested and thus may have nested locals state, so we * start with an initial state as seen by the subroutine, but keep track * of the individual locals states that will be expected when the individual * subroutine calls return. * * @param subLabel label of subroutine start block * @param callerLabel {@code >=0;} label of the caller block where this frame * came from. * @return a new instance to begin a called subroutine. */ public Frame makeNewSubroutineStartFrame(int subLabel, int callerLabel) { IntList newSubroutines = subroutines.mutableCopy(); newSubroutines.add(subLabel); Frame newFrame = new Frame(locals.getPrimary(), stack, IntList.makeImmutable(subLabel)); return newFrame.mergeWithSubroutineCaller(this, subLabel, callerLabel); }
IntList.makeImmutable (newSubStartLabel), newSubStartLabel), labelToSubroutines.get(b.getLabel()));
return IntList.makeImmutable(noException);
IntList.makeImmutable(i), i); addBlock(bb, startFrames[i].getSubroutines());
IntList.makeImmutable(i), i); addBlock(bb, startFrames[i].getSubroutines());
IntList.makeImmutable(i), i); addBlock(bb, startFrames[i].getSubroutines());
IntList.makeImmutable(i), i); addBlock(bb, startFrames[i].getSubroutines());
IntList.makeImmutable(i), i); addBlock(bb, startFrames[i].getSubroutines());
IntList.makeImmutable(i), i); addBlock(bb, startFrames[i].getSubroutines());