public void setRegister(int offset, RegisterRecord record) { int i = offset - startOffset; if (registers[i] == null) { count++; } registers[i] = record; }
public void setRegister(int offset, RegisterRecord record) { int i = offset - startOffset; if (registers[i] == null) count++; registers[i] = record; }
private void decodeAction(int opcode, int offset, ActionFactory factory) { LineRecord line = debug != null?debug.getLine(offset) : null; if (line != null) { factory.setLine(offset, line); } // interleave register records in the action list RegisterRecord record = (debug != null)?debug.getRegisters(offset):null; if (record != null) { factory.setRegister(offset, record); } Action a; if (opcode < 0x80) { a = ActionFactory.createAction(opcode); factory.setAction(offset, a); return; } int len = reader.readUI16(); int pos = offset + 3; switch (opcode) { case Flash.Swf.ActionConstants.sactionDefineFunction: a = decodeDefineFunction(pos, len); factory.setAction(offset, a); return; case Flash.Swf.ActionConstants.sactionDefineFunction2: a = decodeDefineFunction2(pos, len); factory.setAction(offset, a); return; case Flash.Swf.ActionConstants.sactionWith: a = decodeWith(factory); break; case Flash.Swf.ActionConstants.sactionTry: a = decodeTry(factory); break; case Flash.Swf.ActionConstants.sactionPush: Push p = decodePush(offset, pos + len, factory); checkConsumed(pos, len, p); return; case Flash.Swf.ActionConstants.sactionStrictMode: a = decodeStrictMode(); break; case Flash.Swf.ActionConstants.sactionCall: // this actions opcode has the high bit set, but there is no length. considered a permanent bug. a = ActionFactory.createCall(); break; case Flash.Swf.ActionConstants.sactionGotoFrame: a = decodeGotoFrame(); break; case Flash.Swf.ActionConstants.sactionGetURL: a = decodeGetURL(); break; case Flash.Swf.ActionConstants.sactionStoreRegister: a = decodeStoreRegister(); break; case Flash.Swf.ActionConstants.sactionConstantPool: a = decodeConstantPool(); break; case Flash.Swf.ActionConstants.sactionWaitForFrame: a = decodeWaitForFrame(opcode, factory); break; case Flash.Swf.ActionConstants.sactionSetTarget: a = decodeSetTarget(); break; case Flash.Swf.ActionConstants.sactionGotoLabel: a = decodeGotoLabel(); break; case Flash.Swf.ActionConstants.sactionWaitForFrame2: a = decodeWaitForFrame(opcode, factory); break; case Flash.Swf.ActionConstants.sactionGetURL2: a = decodeGetURL2(); break; case Flash.Swf.ActionConstants.sactionJump: case Flash.Swf.ActionConstants.sactionIf: a = decodeBranch(opcode, factory); break; case Flash.Swf.ActionConstants.sactionGotoFrame2: a = decodeGotoFrame2(); break; default: a = decodeUnknown(opcode, len); break; } checkConsumed(pos, len, a); factory.setAction(offset, a); }