in compiler/src/main/java/org/apache/royale/abc/ABCEmitter.java [850:982]
void emitBlock(IBasicBlock b, ABCWriter blockWriter)
{
for (int i = 0; i < b.size() && !b.get(i).isBranch(); i++)
{
Instruction insn = b.get(i);
blockWriter.write(insn.getOpcode());
switch (insn.getOpcode())
{
case OP_hasnext2:
{
blockWriter.writeU30((Integer)insn.getOperand(0));
blockWriter.writeU30((Integer)insn.getOperand(1));
break;
}
case OP_findproperty:
case OP_findpropstrict:
case OP_getlex:
case OP_getsuper:
case OP_setsuper:
case OP_deleteproperty:
case OP_getdescendants:
case OP_getproperty:
case OP_setproperty:
case OP_initproperty:
case OP_istype:
case OP_coerce:
case OP_astype:
case OP_finddef:
{
blockWriter.writeU30(namePool.id((Name)insn.getOperand(0)));
break;
}
case OP_callproperty:
case OP_callproplex:
case OP_callpropvoid:
case OP_callsuper:
case OP_callsupervoid:
case OP_constructprop:
{
blockWriter.writeU30(namePool.id((Name)insn.getOperand(0)));
blockWriter.writeU30((Integer)insn.getOperand(1));
break;
}
case OP_constructsuper:
case OP_call:
case OP_construct:
case OP_newarray:
case OP_newobject:
case OP_getlocal:
case OP_setlocal:
case OP_getslot:
case OP_setslot:
case OP_kill:
case OP_inclocal:
case OP_declocal:
case OP_inclocal_i:
case OP_declocal_i:
case OP_newcatch:
case OP_getglobalslot:
case OP_setglobalslot:
case OP_applytype:
case OP_getscopeobject:
case OP_pushshort:
{
blockWriter.writeU30(insn.getImmediate());
break;
}
case OP_pushbyte:
{
blockWriter.write(insn.getImmediate());
break;
}
case OP_newclass:
{
blockWriter.writeU30(getClassId((ClassInfo)insn.getOperand(0)));
break;
}
case OP_newfunction:
{
blockWriter.writeU30(getMethodId((MethodInfo)insn.getOperand(0)));
break;
}
case OP_callstatic:
{
blockWriter.writeU30(getMethodId((MethodInfo)insn.getOperand(0)));
blockWriter.writeU30((Integer)(insn.getOperand(1)));
break;
}
case OP_pushstring:
case OP_dxns:
case OP_debugfile:
{
blockWriter.writeU30(stringPool.id(insn.getOperand(0).toString()));
break;
}
case OP_pushnamespace:
{
blockWriter.writeU30(nsPool.id((Namespace)insn.getOperand(0)));
break;
}
case OP_pushint:
{
blockWriter.writeU30(intPool.id((Integer)insn.getOperand(0)));
break;
}
case OP_pushuint:
{
blockWriter.writeU30(uintPool.id((Long)insn.getOperand(0)));
break;
}
case OP_pushdouble:
{
blockWriter.writeU30(doublePool.id((Double)insn.getOperand(0)));
break;
}
case OP_debugline:
case OP_bkptline:
{
blockWriter.writeU30(insn.getImmediate());
break;
}
case OP_debug:
{
blockWriter.write((Integer)(insn.getOperand(0)));
blockWriter.writeU30(stringPool.id(insn.getOperand(1).toString()));
blockWriter.write((Integer)insn.getOperand(2));
blockWriter.writeU30(0);
break;
}
}
}
}