Interface Op
These also provide small examples of how to declare the type signatures for methods that generate
portions of bytecode. Inevitably, those methods will have expectations of what is on the stack,
and would like to express the overall effect on that stack in terms of the incoming stack.
Conventionally, generation methods should accept the emitter (typed with the incoming stack) as
its first parameter and return that emitter typed with the resulting stack. This allows those
methods to be invoked using, e.g., Emitter.emit(Function), and also sets them up to use
the pattern:
return em
.emit(Op::ldc__i, 1)
.emit(Op::iadd);
With this pattern, the Java type checker will ensure that the expected effect on the stack is in
fact what the emitted code does. Once the pattern is understood, the type signature of each
opcode method is trivially derived from Chapter 6 of the JVM specification. We do, however, have
to treat each form separately. Method invocation opcodes require some additional support (see
Methods.Inv), because they consume arguments of arbitrary number and types.
-
Method Summary
Static MethodsModifier and TypeMethodDescriptionstatic <ET,N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, Types.TRef<ET[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TRef<ET>>> Emit anaaloadinstructionstatic <ET,N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, Types.TRef<ET[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, ? extends Types.TRef<? extends ET>>>
Emitter<N3> Emit anaastoreinstructionstatic <T extends Types.TRef<?>,N extends Emitter.Next>
Emitter<Emitter.Ent<N, T>> aconst_null(Emitter<N> em, T type) Emit anaconst_nullinstructionstatic <T extends Types.TRef<?>,N extends Emitter.Next>
Emitter<Emitter.Ent<N, T>> Emit analoadinstructionstatic <ET,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TRef<ET[]>>> anewarray(Emitter<N0> em, Types.TRef<ET> elemType) Emit ananewarrayinstructionstatic <TL,TR, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, ? extends Types.TRef<TR>>>
Emitter<Emitter.Dead> areturn(Emitter<N0> em, Methods.RetReq<? extends Types.TRef<TL>> retReq) Emit anareturninstructionstatic <AT,ET extends Types.SPrim<AT>, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, Types.TRef<AT>>>
Emitter<Emitter.Ent<N1, Types.TInt>> arraylength__prim(Emitter<N0> em, ET elemType) Emit anarraylengthinstruction, when the array has primitive elementsstatic <ET,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, Types.TRef<ET[]>>>
Emitter<Emitter.Ent<N1, Types.TInt>> arraylength__ref(Emitter<N0> em) Emit anarraylengthinstruction, when the array has reference elementsstatic <TL,TR, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, ? extends Types.TRef<TR>>>
Emitter<N1> astore(Emitter<N0> em, Local<? extends Types.TRef<TL>> local) Emit anastoreinstructionstatic <T1 extends Types.TRef<? extends Throwable>,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, T1>>
Emitter<Emitter.Dead> Emit anathrowinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<byte[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit abaloadinstruction for a byte arraystatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<boolean[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> baload__boolean(Emitter<N0> em) Emit abaloadinstruction for a boolean arraystatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<byte[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N3> Emit abastoreinstruction for a byte arraystatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<boolean[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N3> bastore__boolean(Emitter<N0> em) Emit abastoreinstruction for a boolean arraystatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<char[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit acaloadinstructionstatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<char[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N3> Emit acastoreinstructionstatic <ST,CT extends ST, T1 extends Types.TRef<ST>, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, T1>>
Emitter<Emitter.Ent<N1, Types.TRef<CT>>> checkcast(Emitter<N0> em, Types.TRef<CT> type) Emit acheckcastinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N1, Types.TFloat>> Emit ad2finstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N1, Types.TInt>> Emit ad2iinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N1, Types.TLong>> Emit ad2linstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N2, Types.TDouble>> Emit adaddinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<double[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TDouble>> Emit adaloadinstructionstatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<double[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<N3> Emit adastoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit adcmpginstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit adcmplinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N2, Types.TDouble>> Emit addivinstructionstatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TDouble>> dload(Emitter<N> em, Local<Types.TDouble> local) Emit adloadinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N2, Types.TDouble>> Emit admulinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N1, Types.TDouble>> Emit adneginstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N2, Types.TDouble>> Emit adreminstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Dead> dreturn(Emitter<N0> em, Methods.RetReq<Types.TDouble> retReq) Emit adreturninstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<N1> dstore(Emitter<N0> em, Local<Types.TDouble> local) Emit adstoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>>
Emitter<Emitter.Ent<N2, Types.TDouble>> Emit adsubinstructionstatic <V1 extends Types.TCat1,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<N0, V1>> Emit adupinstructionstatic <V2 extends Types.TCat1,V1 extends Types.TCat1, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2, V1>, V2>, V1>> Emit adup_x1instructionstatic <V3 extends Types.TCat1,V2 extends Types.TCat1, V1 extends Types.TCat1, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3, V1>, V3>, V2>, V1>> dup_x2__111(Emitter<N0> em) Emit adup_x2instruction, inserting 3 values down (Form 1)static <V2 extends Types.TCat2,V1 extends Types.TCat1, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2, V1>, V2>, V1>> dup_x2__21(Emitter<N0> em) Emit adup_x2instruction, inserting 2 values down (Form 2)static <V2 extends Types.TCat1,V1 extends Types.TCat1, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<N0, V2>, V1>> Emit adup2instruction, duplicating two operands (Form 1)static <V1 extends Types.TCat2,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<N0, V1>> Emit adup2instruction, duplicating one operand (Form 2)static <V3 extends Types.TCat1,V2 extends Types.TCat1, V1 extends Types.TCat1, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3, V2>, V1>, V3>, V2>, V1>> dup2_x1__111(Emitter<N0> em) Emit adup2_x1instruction, duplicating two operands, three values down (Form 1)static <V2 extends Types.TCat1,V1 extends Types.TCat2, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2, V1>, V2>, V1>> dup2_x1__12(Emitter<N0> em) Emit adup2_x1instruction, duplicating one operand, two values down (Form 2)static <V4 extends Types.TCat1,V3 extends Types.TCat1, V2 extends Types.TCat1, V1 extends Types.TCat1, N4 extends Emitter.Next, N3 extends Emitter.Ent<N4, V4>, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N4, V2>, V1>, V4>, V3>, V2>, V1>> dup2_x2_1111(Emitter<N0> em) Emit adup2_x2instruction, duplicating two operands, four values down (Form 1)static <V3 extends Types.TCat1,V2 extends Types.TCat1, V1 extends Types.TCat2, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3, V1>, V3>, V2>, V1>> dup2_x2_112(Emitter<N0> em) Emit adup2_x2instruction, duplicating one operand, three values down (Form 2)static <V3 extends Types.TCat2,V2 extends Types.TCat1, V1 extends Types.TCat1, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3, V2>, V1>, V3>, V2>, V1>> dup2_x2_211(Emitter<N0> em) Emit adup2_x2instruction, duplicating two operands, three values down (Form 3)static <V2 extends Types.TCat2,V1 extends Types.TCat2, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>>
Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2, V1>, V2>, V1>> dup2_x2_22(Emitter<N0> em) Emit adup2_x2instruction, duplicating one operand, two values down (Form 4)static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N1, Types.TDouble>> Emit anf2dinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N1, Types.TInt>> Emit anf2iinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N1, Types.TLong>> Emit anf2linstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N2, Types.TFloat>> Emit anfaddinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<float[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TFloat>> Emit anfaloadinstructionstatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<float[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<N3> Emit anfastoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anfcmpginstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anfcmplinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N2, Types.TFloat>> Emit anfdivinstructionstatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TFloat>> fload(Emitter<N> em, Local<Types.TFloat> local) Emit anfloadinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N2, Types.TFloat>> Emit anfmulinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N1, Types.TFloat>> Emit anfneginstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N2, Types.TFloat>> Emit anfreminstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Dead> freturn(Emitter<N0> em, Methods.RetReq<Types.TFloat> retReq) Emit anfreturninstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<N1> fstore(Emitter<N0> em, Local<Types.TFloat> local) Emit anfstoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>>
Emitter<Emitter.Ent<N2, Types.TFloat>> Emit anfsubinstructionstatic <OT,T1 extends Types.TRef<? extends OT>, FT extends Types.BNonVoid, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, T1>>
Emitter<Emitter.Ent<N1, FT>> getfield(Emitter<N0> em, Types.TRef<OT> owner, String name, FT type) Emit agetfieldinstructionstatic <FT extends Types.BNonVoid,N extends Emitter.Next>
Emitter<Emitter.Ent<N, FT>> getstatic(Emitter<N> em, Types.TRef<?> owner, String name, FT type) Emit agetstaticinstructionstatic <N extends Emitter.Next>
Lbl.LblEm<N, Emitter.Dead> Emit agotoinstruction to a new target labelstatic <N extends Emitter.Next>
Emitter<Emitter.Dead> Emit agotoinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TInt>> Emit ani2binstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TInt>> Emit ani2cinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TDouble>> Emit ani2dinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TFloat>> Emit ani2finstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TLong>> Emit ani2linstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TInt>> Emit ani2sinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit aniaddinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<int[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anialoadinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit aniandinstructionstatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<int[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N3> Emit aniastoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anidivinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Lbl.LblEm<N2, N2> Emit anif_acmpeqinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Emitter<N2> Emit anif_acmpeqinstruction to a given target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Lbl.LblEm<N2, N2> Emit anif_acmpneinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Emitter<N2> Emit anif_acmpneinstruction to a given target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N2, N2> Emit anif_icmpeqinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N2> Emit anif_icmpeqinstruction to a given target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N2, N2> Emit anif_icmpgeinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N2> Emit anif_icmpgeinstruction to a given target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N2, N2> Emit anif_icmpgtinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N2> Emit anif_icmpgtinstruction to a given target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N2, N2> Emit anif_icmpleinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N2> Emit anif_icmpleinstruction to a given target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N2, N2> Emit anif_icmpltinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N2> Emit anif_icmpltinstruction to a given target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N2, N2> Emit anif_icmpneinstruction to a new target labelstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N2> Emit anif_icmpneinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N1, N1> Emit anifeqinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N1> Emit anifeqinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N1, N1> Emit anifgeinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N1> Emit anifgeinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N1, N1> Emit anifgtinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N1> Emit anifgtinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N1, N1> Emit anifleinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N1> Emit anifleinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N1, N1> Emit anifltinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N1> Emit anifltinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Lbl.LblEm<N1, N1> Emit anifneinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N1> Emit anifneinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Lbl.LblEm<N1, N1> Emit anifnonnullinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Emitter<N1> Emit anifnonnullinstruction to a given target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Lbl.LblEm<N1, N1> Emit anifnullinstruction to a new target labelstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Emitter<N1> Emit anifnullinstruction to a given target labelstatic <N extends Emitter.Next>
Emitter<N> iinc(Emitter<N> em, Local<Types.TInt> local, int increment) Emit aniincinstructionstatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TInt>> iload(Emitter<N> em, Local<Types.TInt> local) Emit aniloadinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit animulinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TInt>> Emit anineginstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Emitter<Emitter.Ent<N1, Types.TInt>> instanceof_(Emitter<N0> em, Types.TRef<?> type) Emit aninstanceofinstructionstatic <SN extends Emitter.Next,MN extends Emitter.Next, MR extends Types.BType>
Methods.Inv<MR, SN, MN> invokedynamic__unsupported(Emitter<SN> em, String name, Methods.MthDesc<MR, MN> desc, org.objectweb.asm.Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) Emit aninvokedynamicinstructionstatic <OT,SN extends Emitter.Next, MN extends Emitter.Next, MR extends Types.BType>
Methods.ObjInv<MR, OT, SN, MN> invokeinterface(Emitter<SN> em, Types.TRef<OT> ownerType, String name, Methods.MthDesc<MR, MN> desc) Emit aninvokeinterfaceinstructionstatic <OT,SN extends Emitter.Next, MN extends Emitter.Next, MR extends Types.BType>
Methods.ObjInv<MR, OT, SN, MN> invokespecial(Emitter<SN> em, Types.TRef<OT> ownerType, String name, Methods.MthDesc<MR, MN> desc, boolean isInterface) Emit aninvokespecialinstructionstatic <SN extends Emitter.Next,MN extends Emitter.Next, MR extends Types.BType>
Methods.Inv<MR, SN, MN> invokestatic(Emitter<SN> em, Types.TRef<?> ownerType, String name, Methods.MthDesc<MR, MN> desc, boolean isInterface) Emit aninvokestaticinstructionstatic <OT,SN extends Emitter.Next, MN extends Emitter.Next, MR extends Types.BType>
Methods.ObjInv<MR, OT, SN, MN> invokevirtual(Emitter<SN> em, Types.TRef<OT> ownerType, String name, Methods.MthDesc<MR, MN> desc, boolean isInterface) Emit aninvokevirtualinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit aniorinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anireminstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Dead> ireturn(Emitter<N0> em, Methods.RetReq<Types.TInt> retReq) Emit anireturninstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anishlinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anishrinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N1> istore(Emitter<N0> em, Local<Types.TInt> local) Emit anistoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anisubinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit aniushrinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anixorinstructionstatic Emitter<?> jsr__deprecated(Emitter<?> em, Lbl<?> target) DO NOT emit anjsrinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N1, Types.TDouble>> Emit anl2dinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N1, Types.TFloat>> Emit anl2finstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N1, Types.TInt>> Emit anl2iinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anladdinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<long[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlaloadinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlandinstructionstatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<long[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<N3> Emit anlastoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit anlcmpinstructionstatic <T,N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TRef<T>>> Emit anldcinstruction for a referencestatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TDouble>> Emit anldcinstruction for a doublestatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TFloat>> Emit anldcinstruction for a floatstatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TInt>> Emit anldcinstruction for an integerstatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TLong>> Emit anldcinstruction for a longstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anldivinstructionstatic <N extends Emitter.Next>
Emitter<Emitter.Ent<N, Types.TLong>> lload(Emitter<N> em, Local<Types.TLong> local) Emit anlloadinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlmulinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N1, Types.TLong>> Emit anlneginstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Dead> Emit alookupswitchinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlorinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlreminstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Dead> lreturn(Emitter<N0> em, Methods.RetReq<Types.TInt> retReq) Emit anlreturninstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlshlinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlshrinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<N1> lstore(Emitter<N0> em, Local<Types.TLong> local) Emit anlstoreinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlsubinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlushrinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>>
Emitter<Emitter.Ent<N2, Types.TLong>> Emit anlxorinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Emitter<N1> monitorenter(Emitter<N0> em) Emit amonitorenterinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TRef<?>>>
Emitter<N1> monitorexit(Emitter<N0> em) Emit amonitorexitinstructionstatic Emitter<?> multianewarray__unsupported(Emitter<?> em, Types.TRef<?> type, int dimensions) Emit amultianewarrayinstructionstatic <T extends Types.TRef<?>,N extends Emitter.Next>
Emitter<Emitter.Ent<N, T>> Emit anewinstructionstatic <AT,ET extends Types.SPrim<AT>, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N1, Types.TRef<AT>>> Emit anewarrayinstructionstatic <N extends Emitter.Next>
Emitter<N> Emit anopinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, ? extends Types.TCat1>>
Emitter<N1> Emit apopinstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, ? extends Types.TCat1>, N0 extends Emitter.Ent<N1, ? extends Types.TCat1>>
Emitter<N2> Emit apop2instruction to pop two operands (Form 1)static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, ? extends Types.TCat2>>
Emitter<N1> Emit apop2instruction to pop one operand (Form 2)static <OT,T2 extends Types.TRef<? extends OT>, FT extends Types.BNonVoid, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, T2>, N0 extends Emitter.Ent<N1, ? extends FT>>
Emitter<N2> putfield(Emitter<N0> em, Types.TRef<OT> owner, String name, FT type) Emit aputfieldinstructionstatic <FT extends Types.BNonVoid,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, ? extends FT>>
Emitter<N1> putstatic(Emitter<N0> em, Types.TRef<?> owner, String name, FT type) Emit aputstaticinstructionstatic Emitter<?> ret__deprecated(Emitter<?> em, Local<?> local) DO NOT emit anretinstructionstatic <N extends Emitter.Next>
Emitter<Emitter.Dead> return_(Emitter<N> em, Methods.RetReq<Types.TVoid> retReq) Emit areturninstructionstatic <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Types.TRef<short[]>>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Ent<N2, Types.TInt>> Emit ansaloadinstructionstatic <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Types.TRef<short[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<N3> Emit ansastoreinstructionstatic <T2 extends Types.TCat1,T1 extends Types.TCat1, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, T2>, N0 extends Emitter.Ent<N1, T1>>
Emitter<Emitter.Ent<Emitter.Ent<N2, T1>, T2>> Emit aswapinstructionstatic <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Types.TInt>>
Emitter<Emitter.Dead> tableswitch(Emitter<N0> em, int low, Lbl<N1> dflt, List<Lbl<N1>> cases) Emit atableswitchinstruction
-
Method Details
-
aaload
static <ET,N2 extends Emitter.Next, Emitter<Emitter.Ent<N2,N1 extends Emitter.Ent<N2, Types.TRef<ET[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TRef<ET>>> aaload(Emitter<N0> em) Emit anaaloadinstruction- Type Parameters:
ET- the element typeN2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
aastore
static <ET,N3 extends Emitter.Next, Emitter<N3> aastoreN2 extends Emitter.Ent<N3, Types.TRef<ET[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, ? extends Types.TRef<? extends ET>>> (Emitter<N0> em) Emit anaastoreinstruction- Type Parameters:
ET- the element typeN3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, index,N0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
aconst_null
static <T extends Types.TRef<?>,N extends Emitter.Next> Emitter<Emitter.Ent<N,T>> aconst_null(Emitter<N> em, T type) Emit anaconst_nullinstruction- Type Parameters:
T- the ascribed type of thenullN- the tail of the stack (...)- Parameters:
em- the emittertype- the ascribed type of thenull- Returns:
- the emitter with ...,
(T) null
-
aload
static <T extends Types.TRef<?>,N extends Emitter.Next> Emitter<Emitter.Ent<N,T>> aload(Emitter<N> em, Local<T> local) Emit analoadinstruction- Type Parameters:
T- the type of the localN- the tail of the stack (...)- Parameters:
em- the emitterlocal- the handle to the local- Returns:
- the emitter with ..., value
-
anewarray
static <ET,N1 extends Emitter.Next, Emitter<Emitter.Ent<N1,N0 extends Emitter.Ent<N1, Types.TInt>> Types.TRef<ET[]>>> anewarray(Emitter<N0> em, Types.TRef<ET> elemType) Emit ananewarrayinstruction- Type Parameters:
ET- the element typeN1- the tail of the stack (...)N0- ..., count- Parameters:
em- the emitterelemType- the element type- Returns:
- the emitter with ..., arrayref
-
areturn
static <TL,TR, Emitter<Emitter.Dead> areturnN1 extends Emitter.Next, N0 extends Emitter.Ent<N1, ? extends Types.TRef<TR>>> (Emitter<N0> em, Methods.RetReq<? extends Types.TRef<TL>> retReq) Emit anareturninstruction- Type Parameters:
TL- the required return (ref) typeTR- the value (ref) type on the stackN1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emitterretReq- some proof of this method's required return type- Returns:
- the dead emitter
-
arraylength__prim
static <AT,ET extends Types.SPrim<AT>, Emitter<Emitter.Ent<N1,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, Types.TRef<AT>>> Types.TInt>> arraylength__prim(Emitter<N0> em, ET elemType) Emit anarraylengthinstruction, when the array has primitive elements- Type Parameters:
ET- the element typeN1- the tail of the stack (...)N0- ..., arrayref- Parameters:
em- the emitterelemType- the element type- Returns:
- the emitter with ..., length
-
arraylength__ref
static <ET,N1 extends Emitter.Next, Emitter<Emitter.Ent<N1,N0 extends Emitter.Ent<N1, Types.TRef<ET[]>>> Types.TInt>> arraylength__ref(Emitter<N0> em) Emit anarraylengthinstruction, when the array has reference elements- Type Parameters:
ET- the element typeN1- the tail of the stack (...)N0- ..., arrayref- Parameters:
em- the emitter- Returns:
- the emitter with ..., length
-
astore
static <TL,TR, Emitter<N1> astoreN1 extends Emitter.Next, N0 extends Emitter.Ent<N1, ? extends Types.TRef<TR>>> (Emitter<N0> em, Local<? extends Types.TRef<TL>> local) Emit anastoreinstruction- Type Parameters:
TL- the local variable (ref) typeTR- the value (ref) type on the stackN1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emitterlocal- the target local variable- Returns:
- the emitter with ...
-
athrow
static <T1 extends Types.TRef<? extends Throwable>,N1 extends Emitter.Next, Emitter<Emitter.Dead> athrowN0 extends Emitter.Ent<N1, T1>> (Emitter<N0> em) Emit anathrowinstruction- Type Parameters:
T1- the value (Throwable ref) type on the stackN1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emitter- Returns:
- the dead emitter
-
baload__boolean
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<boolean[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> baload__boolean(Emitter<N0> em) Emit abaloadinstruction for a boolean array- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
baload
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<byte[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> baload(Emitter<N0> em) Emit abaloadinstruction for a byte array- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
bastore__boolean
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> bastore__booleanTypes.TRef<boolean[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em) Emit abastoreinstruction for a boolean array- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
bastore
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> bastoreTypes.TRef<byte[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em) Emit abastoreinstruction for a byte array- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
caload
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<char[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> caload(Emitter<N0> em) Emit acaloadinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
castore
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> castoreTypes.TRef<char[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em) Emit acastoreinstruction- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
checkcast
static <ST,CT extends ST, Emitter<Emitter.Ent<N1,T1 extends Types.TRef<ST>, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, T1>> Types.TRef<CT>>> checkcast(Emitter<N0> em, Types.TRef<CT> type) Emit acheckcastinstruction- Type Parameters:
ST- the inferred type of the value on the stack, i.e., the less-specific typeCT- the desired type, i.e., the more-specific typeT1- the reference type for the inferred typeN1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emittertype- the reference type for the desired type- Returns:
- the emitter with ..., objectref
-
d2f
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TDouble>> Types.TFloat>> d2f(Emitter<N0> em) Emit ad2finstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
d2i
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TDouble>> Types.TInt>> d2i(Emitter<N0> em) Emit ad2iinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
d2l
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TDouble>> Types.TLong>> d2l(Emitter<N0> em) Emit ad2linstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
dadd
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>> Types.TDouble>> dadd(Emitter<N0> em) Emit adaddinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
daload
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<double[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TDouble>> daload(Emitter<N0> em) Emit adaloadinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
dastore
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> dastoreTypes.TRef<double[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TDouble>> (Emitter<N0> em) Emit adastoreinstruction- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
dcmpg
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>> Types.TInt>> dcmpg(Emitter<N0> em) Emit adcmpginstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
dcmpl
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>> Types.TInt>> dcmpl(Emitter<N0> em) Emit adcmplinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
ddiv
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>> Types.TDouble>> ddiv(Emitter<N0> em) Emit addivinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
dload
static <N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TDouble>> dload(Emitter<N> em, Local<Types.TDouble> local) Emit adloadinstruction- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitterlocal- the handle to the local- Returns:
- the emitter with ..., value
-
dmul
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>> Types.TDouble>> dmul(Emitter<N0> em) Emit admulinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
dneg
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TDouble>> Types.TDouble>> dneg(Emitter<N0> em) Emit adneginstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
drem
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>> Types.TDouble>> drem(Emitter<N0> em) Emit adreminstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
dreturn
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Dead> dreturnTypes.TDouble>> (Emitter<N0> em, Methods.RetReq<Types.TDouble> retReq) Emit adreturninstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterretReq- some proof of this method's required return type- Returns:
- the dead emitter
-
dstore
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> dstoreTypes.TDouble>> (Emitter<N0> em, Local<Types.TDouble> local) Emit adstoreinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterlocal- the target local variable- Returns:
- the emitter with ...
-
dsub
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TDouble>, N0 extends Emitter.Ent<N1, Types.TDouble>> Types.TDouble>> dsub(Emitter<N0> em) Emit adsubinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
dup
static <V1 extends Types.TCat1,N1 extends Emitter.Next, Emitter<Emitter.Ent<N0,N0 extends Emitter.Ent<N1, V1>> V1>> dup(Emitter<N0> em) Emit adupinstruction- Type Parameters:
V1- the type of the value on the stackN1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., value, value
-
dup_x1
static <V2 extends Types.TCat1,V1 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2,N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V1>, dup_x1V2>, V1>> (Emitter<N0> em) Emit adup_x1instruction- Type Parameters:
V2- the type of value2 on the stackV1- the type of value1 on the stackN2- the tail of the stack (...)N1- ..., value2N0- ..., value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value1, value2, value1
-
dup_x2__111
static <V3 extends Types.TCat1,V2 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3,V1 extends Types.TCat1, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V1>, dup_x2__111V3>, V2>, V1>> (Emitter<N0> em) Emit adup_x2instruction, inserting 3 values down (Form 1)- Type Parameters:
V3- the type of value3 on the stackV2- the type of value2 on the stackV1- the type of value1 on the stackN3- the tail of the stack (...)N2- ..., value3N1- ..., value3, value2N0- ..., value3, value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value1, value3, value2, value1
-
dup_x2__21
static <V2 extends Types.TCat2,V1 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2,N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V1>, dup_x2__21V2>, V1>> (Emitter<N0> em) Emit adup_x2instruction, inserting 2 values down (Form 2)- Type Parameters:
V2- the type of value2 on the stackV1- the type of value1 on the stackN2- the tail of the stack (...)N1- ..., value2N0- ..., value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value1, value2, value1
-
dup2__11
static <V2 extends Types.TCat1,V1 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<N0,N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V2>, dup2__11V1>> (Emitter<N0> em) Emit adup2instruction, duplicating two operands (Form 1)- Type Parameters:
V2- the type of value2 on the stackV1- the type of vlaue1 on the stackN2- the tail of the stack (...)N1- ..., value2N0- ..., value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value2, value1, value2, value1
-
dup2__2
static <V1 extends Types.TCat2,N1 extends Emitter.Next, Emitter<Emitter.Ent<N0,N0 extends Emitter.Ent<N1, V1>> V1>> dup2__2(Emitter<N0> em) Emit adup2instruction, duplicating one operand (Form 2)- Type Parameters:
V1- the type of the value on the stackN1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., value, value
-
dup2_x1__111
static <V3 extends Types.TCat1,V2 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3,V1 extends Types.TCat1, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V2>, dup2_x1__111V1>, V3>, V2>, V1>> (Emitter<N0> em) Emit adup2_x1instruction, duplicating two operands, three values down (Form 1)- Type Parameters:
V3- the type of value3 on the stackV2- the type of value2 on the stackV1- the type of value1 on the stackN3- the tail of the stack (...)N2- ..., value3N1- ..., value3, value2N0- ..., value3, value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value2, value1, value3, value2, value1
-
dup2_x1__12
static <V2 extends Types.TCat1,V1 extends Types.TCat2, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2,N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V1>, dup2_x1__12V2>, V1>> (Emitter<N0> em) Emit adup2_x1instruction, duplicating one operand, two values down (Form 2)- Type Parameters:
V2- the type of value2 on the stackV1- the type of value1 on the stackN2- the tail of the stack (...)N1- ..., value2N0- ..., value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value1, value2, value1
-
dup2_x2_1111
static <V4 extends Types.TCat1,V3 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N4,V2 extends Types.TCat1, V1 extends Types.TCat1, N4 extends Emitter.Next, N3 extends Emitter.Ent<N4, V4>, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V2>, dup2_x2_1111V1>, V4>, V3>, V2>, V1>> (Emitter<N0> em) Emit adup2_x2instruction, duplicating two operands, four values down (Form 1)- Type Parameters:
V4- the type of value4 on the stackV3- the type of value3 on the stackV2- the type of value2 on the stackV1- the type of value1 on the stackN4- the tail of the stack (...)N3- ..., value4N2- ..., value4, value3N1- ..., value4, value3, value2N0- ..., value4, value3, value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value2, value1, value4, value3, value2, value1
-
dup2_x2_112
static <V3 extends Types.TCat1,V2 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3,V1 extends Types.TCat2, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V1>, dup2_x2_112V3>, V2>, V1>> (Emitter<N0> em) Emit adup2_x2instruction, duplicating one operand, three values down (Form 2)- Type Parameters:
V3- the type of value3 on the stackV2- the type of value2 on the stackV1- the type of value1 on the stackN3- the tail of the stack (...)N2- ..., value3N1- ..., value3, value2N0- ..., value3, value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value1, value3, value2, value1
-
dup2_x2_211
static <V3 extends Types.TCat2,V2 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<Emitter.Ent<N3,V1 extends Types.TCat1, N3 extends Emitter.Next, N2 extends Emitter.Ent<N3, V3>, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V2>, dup2_x2_211V1>, V3>, V2>, V1>> (Emitter<N0> em) Emit adup2_x2instruction, duplicating two operands, three values down (Form 3)- Type Parameters:
V3- the type of value3 on the stackV2- the type of value2 on the stackV1- the type of value1 on the stackN3- the tail of the stack (...)N2- ..., value3N1- ..., value3, value2N0- ..., value3, value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value2, value1, value3, value2, value1
-
dup2_x2_22
static <V2 extends Types.TCat2,V1 extends Types.TCat2, Emitter<Emitter.Ent<Emitter.Ent<Emitter.Ent<N2,N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, V2>, N0 extends Emitter.Ent<N1, V1>> V1>, dup2_x2_22V2>, V1>> (Emitter<N0> em) Emit adup2_x2instruction, duplicating one operand, two values down (Form 4)- Type Parameters:
V2- the type of value2 on the stackV1- the type of value1 on the stackN2- the tail of the stack (...)N1- ..., value2N0- ..., value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value1, value2, value1
-
f2d
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TFloat>> Types.TDouble>> f2d(Emitter<N0> em) Emit anf2dinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
f2i
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TFloat>> Types.TInt>> f2i(Emitter<N0> em) Emit anf2iinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
f2l
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TFloat>> Types.TLong>> f2l(Emitter<N0> em) Emit anf2linstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
fadd
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>> Types.TFloat>> fadd(Emitter<N0> em) Emit anfaddinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
faload
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<float[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TFloat>> faload(Emitter<N0> em) Emit anfaloadinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
fastore
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> fastoreTypes.TRef<float[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TFloat>> (Emitter<N0> em) Emit anfastoreinstruction- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
fcmpg
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>> Types.TInt>> fcmpg(Emitter<N0> em) Emit anfcmpginstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
fcmpl
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>> Types.TInt>> fcmpl(Emitter<N0> em) Emit anfcmplinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
fdiv
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>> Types.TFloat>> fdiv(Emitter<N0> em) Emit anfdivinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
fload
static <N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TFloat>> fload(Emitter<N> em, Local<Types.TFloat> local) Emit anfloadinstruction- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitterlocal- the handle to the local- Returns:
- the emitter with ..., value
-
fmul
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>> Types.TFloat>> fmul(Emitter<N0> em) Emit anfmulinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
fneg
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TFloat>> Types.TFloat>> fneg(Emitter<N0> em) Emit anfneginstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
frem
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>> Types.TFloat>> frem(Emitter<N0> em) Emit anfreminstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
freturn
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Dead> freturnTypes.TFloat>> (Emitter<N0> em, Methods.RetReq<Types.TFloat> retReq) Emit anfreturninstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterretReq- some proof of this method's required return type- Returns:
- the dead emitter
-
fstore
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> fstoreTypes.TFloat>> (Emitter<N0> em, Local<Types.TFloat> local) Emit anfstoreinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterlocal- the target local variable- Returns:
- the emitter with ...
-
fsub
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TFloat>, N0 extends Emitter.Ent<N1, Types.TFloat>> Types.TFloat>> fsub(Emitter<N0> em) Emit anfsubinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
getfield
static <OT,T1 extends Types.TRef<? extends OT>, Emitter<Emitter.Ent<N1,FT extends Types.BNonVoid, N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, T1>> FT>> getfield(Emitter<N0> em, Types.TRef<OT> owner, String name, FT type) Emit agetfieldinstructionLATER: Some sort of field handle?
- Type Parameters:
OT- the owner typeT1- the type of the object on the stack owning the fieldFT- the type of the fieldN1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emitterowner- the owner typename- the name of the fieldtype- the type of the field- Returns:
- the emitter with ..., value
-
getstatic
static <FT extends Types.BNonVoid,N extends Emitter.Next> Emitter<Emitter.Ent<N,FT>> getstatic(Emitter<N> em, Types.TRef<?> owner, String name, FT type) Emit agetstaticinstructionLATER: Some sort of field handle?
- Type Parameters:
FT- the type of the fieldN- the tail of the stack (...)- Parameters:
em- the emitterowner- the owner typename- the name of the fieldtype- the type of the field- Returns:
- the emitter with ..., value
-
goto_
Emit agotoinstruction to a new target label- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitter- Returns:
- the new target label and the dead emitter
-
goto_
Emit agotoinstruction to a given target label- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emittertarget- the target label- Returns:
- the dead emitter
-
i2b
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TInt>> Types.TInt>> i2b(Emitter<N0> em) Emit ani2binstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
i2c
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TInt>> Types.TInt>> i2c(Emitter<N0> em) Emit ani2cinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
i2d
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TInt>> Types.TDouble>> i2d(Emitter<N0> em) Emit ani2dinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
i2f
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TInt>> Types.TFloat>> i2f(Emitter<N0> em) Emit ani2finstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
i2l
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TInt>> Types.TLong>> i2l(Emitter<N0> em) Emit ani2linstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
i2s
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TInt>> Types.TInt>> i2s(Emitter<N0> em) Emit ani2sinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
iadd
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> iadd(Emitter<N0> em) Emit aniaddinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
iaload
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<int[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> iaload(Emitter<N0> em) Emit anialoadinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
iand
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> iand(Emitter<N0> em) Emit aniandinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
iastore
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> iastoreTypes.TRef<int[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em) Emit aniastoreinstruction- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
idiv
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> idiv(Emitter<N0> em) Emit anidivinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
if_acmpeq
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>> N2> if_acmpeq(Emitter<N0> em) Emit anif_acmpeqinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_acmpeq
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_acmpeqTypes.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>> (Emitter<N0> em, Lbl<N2> target) Emit anif_acmpeqinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
if_acmpne
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>> N2> if_acmpne(Emitter<N0> em) Emit anif_acmpneinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_acmpne
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_acmpneTypes.TRef<?>>, N0 extends Emitter.Ent<N1, Types.TRef<?>>> (Emitter<N0> em, Lbl<N2> target) Emit anif_acmpneinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
if_icmpeq
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> N2> if_icmpeq(Emitter<N0> em) Emit anif_icmpeqinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_icmpeq
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_icmpeqTypes.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em, Lbl<N2> target) Emit anif_icmpeqinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
if_icmpge
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> N2> if_icmpge(Emitter<N0> em) Emit anif_icmpgeinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_icmpge
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_icmpgeTypes.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em, Lbl<N2> target) Emit anif_icmpgeinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
if_icmpgt
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> N2> if_icmpgt(Emitter<N0> em) Emit anif_icmpgtinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_icmpgt
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_icmpgtTypes.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em, Lbl<N2> target) Emit anif_icmpgtinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
if_icmple
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> N2> if_icmple(Emitter<N0> em) Emit anif_icmpleinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_icmple
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_icmpleTypes.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em, Lbl<N2> target) Emit anif_icmpleinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
if_icmplt
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> N2> if_icmplt(Emitter<N0> em) Emit anif_icmpltinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_icmplt
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_icmpltTypes.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em, Lbl<N2> target) Emit anif_icmpltinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
if_icmpne
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Lbl.LblEm<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> N2> if_icmpne(Emitter<N0> em) Emit anif_icmpneinstruction to a new target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
if_icmpne
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> if_icmpneTypes.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em, Lbl<N2> target) Emit anif_icmpneinstruction to a given target label- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
ifeq
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TInt>> N1> ifeq(Emitter<N0> em) Emit anifeqinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
ifeq
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifeqTypes.TInt>> (Emitter<N0> em, Lbl<N1> target) Emit anifeqinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
ifge
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TInt>> N1> ifge(Emitter<N0> em) Emit anifgeinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
ifge
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifgeTypes.TInt>> (Emitter<N0> em, Lbl<N1> target) Emit anifgeinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
ifgt
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TInt>> N1> ifgt(Emitter<N0> em) Emit anifgtinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
ifgt
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifgtTypes.TInt>> (Emitter<N0> em, Lbl<N1> target) Emit anifgtinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
ifle
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TInt>> N1> ifle(Emitter<N0> em) Emit anifleinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
ifle
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifleTypes.TInt>> (Emitter<N0> em, Lbl<N1> target) Emit anifleinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
iflt
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TInt>> N1> iflt(Emitter<N0> em) Emit anifltinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
iflt
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifltTypes.TInt>> (Emitter<N0> em, Lbl<N1> target) Emit anifltinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
ifne
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TInt>> N1> ifne(Emitter<N0> em) Emit anifneinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
ifne
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifneTypes.TInt>> (Emitter<N0> em, Lbl<N1> target) Emit anifneinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
ifnonnull
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TRef<?>>> N1> ifnonnull(Emitter<N0> em) Emit anifnonnullinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
ifnonnull
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifnonnullTypes.TRef<?>>> (Emitter<N0> em, Lbl<N1> target) Emit anifnonnullinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
ifnull
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Lbl.LblEm<N1,Types.TRef<?>>> N1> ifnull(Emitter<N0> em) Emit anifnullinstruction to a new target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the new target label and the emitter with ...
-
ifnull
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> ifnullTypes.TRef<?>>> (Emitter<N0> em, Lbl<N1> target) Emit anifnullinstruction to a given target label- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emittertarget- the target label- Returns:
- the emitter with ...
-
iinc
static <N extends Emitter.Next> Emitter<N> iinc(Emitter<N> em, Local<Types.TInt> local, int increment) Emit aniincinstruction- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitterlocal- the target local to incrementincrement- the constant value to increment by- Returns:
- the emitter with ...
-
iload
static <N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TInt>> iload(Emitter<N> em, Local<Types.TInt> local) Emit aniloadinstruction- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitterlocal- the handle to the local- Returns:
- the emitter with ..., value
-
imul
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> imul(Emitter<N0> em) Emit animulinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
ineg
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TInt>> Types.TInt>> ineg(Emitter<N0> em) Emit anineginstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
instanceof_
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TRef<?>>> Types.TInt>> instanceof_(Emitter<N0> em, Types.TRef<?> type) Emit aninstanceofinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emittertype- the given type (T)- Returns:
- the emitter with ..., result
-
invokedynamic__unsupported
static <SN extends Emitter.Next,MN extends Emitter.Next, Methods.Inv<MR,MR extends Types.BType> SN, invokedynamic__unsupportedMN> (Emitter<SN> em, String name, Methods.MthDesc<MR, MN> desc, org.objectweb.asm.Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) Emit aninvokedynamicinstructionWARNING: This is probably not implemented correctly. The JVM spec does not provide an example, but the best we can tell, after all the call site resolution machinery, the net arguments actually consumed from the stack is determined by the given method descriptor. We also just let the ASM types
Type,Handle, andConstantDynamicleak from an API perspective.- Type Parameters:
SN- the JVM stack at the call site. Some may be popped as argumentsMN- the parameters expected by the method descriptorMR- the return type from the method descriptor- Parameters:
em- the emittername- the name of the methoddesc- the method descriptorbootstrapMethodHandle- as inMethodVisitor.visitInvokeDynamicInsn(String, String, Handle, Object...)bootstrapMethodArguments- as inMethodVisitor.visitInvokeDynamicInsn(String, String, Handle, Object...)- Returns:
- an object to complete type checking of the arguments and, if applicable, the result
-
invokeinterface
static <OT,SN extends Emitter.Next, Methods.ObjInv<MR,MN extends Emitter.Next, MR extends Types.BType> OT, invokeinterfaceSN, MN> (Emitter<SN> em, Types.TRef<OT> ownerType, String name, Methods.MthDesc<MR, MN> desc) Emit aninvokeinterfaceinstruction- Type Parameters:
OT- the owner (interface) typeSN- the JVM stack at the call site. Some may be popped as argumentsMN- the parameters expected by the method descriptorMR- the return type from the method descriptor- Parameters:
em- the emitterownerType- the owner (interface) typename- the name of the methoddesc- the method descriptor- Returns:
- an object to complete type checking of the arguments and, if applicable, the result
-
invokespecial
static <OT,SN extends Emitter.Next, Methods.ObjInv<MR,MN extends Emitter.Next, MR extends Types.BType> OT, invokespecialSN, MN> (Emitter<SN> em, Types.TRef<OT> ownerType, String name, Methods.MthDesc<MR, MN> desc, boolean isInterface) Emit aninvokespecialinstruction- Type Parameters:
OT- the owner (super) typeSN- the JVM stack at the call site. Some may be popped as argumentsMN- the parameters expected by the method descriptorMR- the return type from the method descriptor- Parameters:
em- the emitterownerType- the owner (super) typename- the name of the methoddesc- the method descriptorisInterface- true to indicate the owner type is an interface- Returns:
- an object to complete type checking of the arguments and, if applicable, the result
-
invokestatic
static <SN extends Emitter.Next,MN extends Emitter.Next, Methods.Inv<MR,MR extends Types.BType> SN, invokestaticMN> (Emitter<SN> em, Types.TRef<?> ownerType, String name, Methods.MthDesc<MR, MN> desc, boolean isInterface) Emit aninvokestaticinstruction- Type Parameters:
SN- the JVM stack at the call site. Some may be popped as argumentsMN- the parameters expected by the method descriptorMR- the return type from the method descriptor- Parameters:
em- the emitterownerType- the owner typename- the name of the methoddesc- the method descriptorisInterface- true to indicate the owner type is an interface- Returns:
- an object to complete type checking of the arguments and, if applicable, the result
-
invokevirtual
static <OT,SN extends Emitter.Next, Methods.ObjInv<MR,MN extends Emitter.Next, MR extends Types.BType> OT, invokevirtualSN, MN> (Emitter<SN> em, Types.TRef<OT> ownerType, String name, Methods.MthDesc<MR, MN> desc, boolean isInterface) Emit aninvokevirtualinstruction- Type Parameters:
OT- the owner typeSN- the JVM stack at the call site. Some may be popped as argumentsMN- the parameters expected by the method descriptorMR- the return type from the method descriptor- Parameters:
em- the emitterownerType- the owner typename- the name of the methoddesc- the method descriptorisInterface- true to indicate the owner type is an interface- Returns:
- an object to complete type checking of the arguments and, if applicable, the result
-
ior
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> ior(Emitter<N0> em) Emit aniorinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
irem
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> irem(Emitter<N0> em) Emit anireminstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
ireturn
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Dead> ireturnTypes.TInt>> (Emitter<N0> em, Methods.RetReq<Types.TInt> retReq) Emit anireturninstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterretReq- some proof of this method's required return type- Returns:
- the dead emitter
-
ishl
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> ishl(Emitter<N0> em) Emit anishlinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
ishr
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> ishr(Emitter<N0> em) Emit anishrinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
istore
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> istoreTypes.TInt>> (Emitter<N0> em, Local<Types.TInt> local) Emit anistoreinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterlocal- the target local variable- Returns:
- the emitter with ...
-
isub
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> isub(Emitter<N0> em) Emit anisubinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
iushr
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> iushr(Emitter<N0> em) Emit aniushrinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
ixor
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> ixor(Emitter<N0> em) Emit anixorinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
jsr__deprecated
DO NOT emit anjsrinstructionAccording to Oracle's documentation, this deprecated instruction was used in the implementation of
finallyblocks prior to Java SE 6. This method is here only to guide users searching for thejsropcode toward the replacement:Misc.tryCatch(Emitter, Lbl, Lbl, TRef). Syntactically, trying to use this method should result in all sorts of compilation errors, if not on the invocation itself, then on anything following it in the chain. At runtime, this always throws anUnsupportedOperationException.- Parameters:
em- the emittertarget- the target label- Returns:
- never
-
l2d
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TLong>> Types.TDouble>> l2d(Emitter<N0> em) Emit anl2dinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
l2f
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TLong>> Types.TFloat>> l2f(Emitter<N0> em) Emit anl2finstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
l2i
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TLong>> Types.TInt>> l2i(Emitter<N0> em) Emit anl2iinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
ladd
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> ladd(Emitter<N0> em) Emit anladdinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
laload
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<long[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TLong>> laload(Emitter<N0> em) Emit anlaloadinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
land
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> land(Emitter<N0> em) Emit anlandinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lastore
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> lastoreTypes.TRef<long[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TLong>> (Emitter<N0> em) Emit anlastoreinstruction- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
lcmp
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TInt>> lcmp(Emitter<N0> em) Emit anlcmpinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
ldc__i
Emit anldcinstruction for an integerNOTE: The underlying ASM library may emit alternative instructions at its discretion.
- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emittervalue- the value to push- Returns:
- the emitter with ..., value
-
ldc__l
static <N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TLong>> ldc__l(Emitter<N> em, long value) Emit anldcinstruction for a longNOTE: The underlying ASM library may emit alternative instructions at its discretion.
- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emittervalue- the value to push- Returns:
- the emitter with ..., value
-
ldc__f
static <N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TFloat>> ldc__f(Emitter<N> em, float value) Emit anldcinstruction for a floatNOTE: The underlying ASM library may emit alternative instructions at its discretion.
- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emittervalue- the value to push- Returns:
- the emitter with ..., value
-
ldc__d
static <N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TDouble>> ldc__d(Emitter<N> em, double value) Emit anldcinstruction for a doubleNOTE: The underlying ASM library may emit alternative instructions at its discretion.
- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emittervalue- the value to push- Returns:
- the emitter with ..., value
-
ldc__a
static <T,N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TRef<T>>> ldc__a(Emitter<N> em, T value) Emit anldcinstruction for a referenceNOTE: Only certain reference types are permitted. Some of the permitted types are those leaked (API-wise) from the underlying ASM library. The underlying ASM library may emit alternative instructions at its discretion.
- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emittervalue- the value to push- Returns:
- the emitter with ..., value
-
ldiv
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> ldiv(Emitter<N0> em) Emit anldivinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lload
static <N extends Emitter.Next> Emitter<Emitter.Ent<N,Types.TLong>> lload(Emitter<N> em, Local<Types.TLong> local) Emit anlloadinstruction- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitterlocal- the handle to the local- Returns:
- the emitter with ..., value
-
lmul
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> lmul(Emitter<N0> em) Emit anlmulinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lneg
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Ent<N1,Types.TLong>> Types.TLong>> lneg(Emitter<N0> em) Emit anlneginstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lookupswitch
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Dead> lookupswitchTypes.TInt>> (Emitter<N0> em, Lbl<N1> dflt, Map<Integer, Lbl<N1>> cases) Emit alookupswitchinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., key- Parameters:
em- the emitterdflt- a target label for the default case. The stack at the label must be ...cases- a map of integer case value to target label. The stack at each label must be ...- Returns:
- the dead emitter
-
lor
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> lor(Emitter<N0> em) Emit anlorinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lrem
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> lrem(Emitter<N0> em) Emit anlreminstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lreturn
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Dead> lreturnTypes.TInt>> (Emitter<N0> em, Methods.RetReq<Types.TInt> retReq) Emit anlreturninstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterretReq- some proof of this method's required return type- Returns:
- the dead emitter
-
lshl
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TLong>> lshl(Emitter<N0> em) Emit anlshlinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lshr
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TLong>> lshr(Emitter<N0> em) Emit anlshrinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lstore
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> lstoreTypes.TLong>> (Emitter<N0> em, Local<Types.TLong> local) Emit anlstoreinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterlocal- the target local variable- Returns:
- the emitter with ...
-
lsub
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> lsub(Emitter<N0> em) Emit anlsubinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lushr
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TLong>> lushr(Emitter<N0> em) Emit anlushrinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
lxor
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TLong>, N0 extends Emitter.Ent<N1, Types.TLong>> Types.TLong>> lxor(Emitter<N0> em) Emit anlxorinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., value1N0- ..., value1, value2- Parameters:
em- the emitter- Returns:
- the emitter with ..., result
-
monitorenter
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> monitorenterTypes.TRef<?>>> (Emitter<N0> em) Emit amonitorenterinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
monitorexit
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> monitorexitTypes.TRef<?>>> (Emitter<N0> em) Emit amonitorexitinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., objectref- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
multianewarray__unsupported
Emit amultianewarrayinstructionNOTE: This will emit the instruction, but derivation of the resulting stack contents is not implemented. The user must cast the emitter to the resulting type. LATER: If required, we may implement this for specific dimensions. Or, we might use a pattern similar to what we used for method invocation to allow us an arbitrary number of stack arguments.
- Parameters:
em- the emittertype- the type of the full multidimensional array (not just the element type)dimensions- the number of dimensions to allocate- Returns:
- the emitter with unknown stack
-
new_
static <T extends Types.TRef<?>,N extends Emitter.Next> Emitter<Emitter.Ent<N,T>> new_(Emitter<N> em, T type) Emit anewinstruction- Type Parameters:
T- the type of objectN- the tail of the stack (...)- Parameters:
em- the emittertype- the type of object- Returns:
- the emitter with ..., objectref (uninitialized)
- Implementation Notes:
- We considered using a separate
UReftype to indicate an uninitialized reference; however, this would fail for the standardnew-dup-invokespecialsequence, as the reference remaining on the stack would appear uninitialized when it is in fact initialized.
-
newarray
static <AT,ET extends Types.SPrim<AT>, Emitter<Emitter.Ent<N1,N1 extends Emitter.Next, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TRef<AT>>> newarray(Emitter<N0> em, ET elemType) Emit anewarrayinstruction- Type Parameters:
AT- the resulting array typeET- the (primitive) element typeN1- the tail of the stack (...)N0- ..., count- Parameters:
em- the emitterelemType- the element type- Returns:
- the emitter with ..., arrayref
-
nop
Emit anopinstruction- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
pop
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> pop? extends Types.TCat1>> (Emitter<N0> em) Emit apopinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
pop2__11
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<N2> pop2__11? extends Types.TCat1>, N0 extends Emitter.Ent<N1, ? extends Types.TCat1>> (Emitter<N0> em) Emit apop2instruction to pop two operands (Form 1)- Type Parameters:
N2- the tail of the stack (...)N1- ..., value2N0- ..., value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
pop2__2
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<N1> pop2__2? extends Types.TCat2>> (Emitter<N0> em) Emit apop2instruction to pop one operand (Form 2)- Type Parameters:
N1- the tail of the stack (...)N0- ..., value1- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
putfield
static <OT,T2 extends Types.TRef<? extends OT>, Emitter<N2> putfieldFT extends Types.BNonVoid, N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, T2>, N0 extends Emitter.Ent<N1, ? extends FT>> (Emitter<N0> em, Types.TRef<OT> owner, String name, FT type) Emit aputfieldinstruction- Type Parameters:
OT- the owner typeT2- the type of the object on the stack owning the fieldFT- the type of the fieldN2- the tail of the stack (...)N1- ..., objectrefN0- ..., objectref, value- Parameters:
em- the emitterowner- the owner typename- the name of the fieldtype- the type of the field- Returns:
- the emitter with ...
-
putstatic
static <FT extends Types.BNonVoid,N1 extends Emitter.Next, Emitter<N1> putstaticN0 extends Emitter.Ent<N1, ? extends FT>> (Emitter<N0> em, Types.TRef<?> owner, String name, FT type) Emit aputstaticinstruction- Type Parameters:
FT- the type of the fieldN1- the tail of the stack (...)N0- ..., value- Parameters:
em- the emitterowner- the owner typename- the name of the fieldtype- the type of the field- Returns:
- the emitter with ...
-
ret__deprecated
DO NOT emit anretinstructionAccording to Oracle's documentation, this deprecated instruction was used in the implementation of
finallyblocks prior to Java SE 6. You may actually be searching for thereturn_(Emitter, RetReq)method. This method is here only to guide users searching for theretopcode toward the replacement:Misc.tryCatch(Emitter, Lbl, Lbl, TRef). Syntactically, trying to use this method should result in all sorts of compilation errors, if not on the invocation itself, then on anything following it in the chain. At runtime, this always throws anUnsupportedOperationException.- Parameters:
em- the emitterlocal- the local variable (NOTE:returnAddressis not a supported type)- Returns:
- never
-
return_
static <N extends Emitter.Next> Emitter<Emitter.Dead> return_(Emitter<N> em, Methods.RetReq<Types.TVoid> retReq) Emit areturninstruction- Type Parameters:
N- the tail of the stack (...)- Parameters:
em- the emitterretReq- some proof of this method's required return type- Returns:
- the dead emitter
-
saload
static <N2 extends Emitter.Next,N1 extends Emitter.Ent<N2, Emitter<Emitter.Ent<N2,Types.TRef<short[]>>, N0 extends Emitter.Ent<N1, Types.TInt>> Types.TInt>> saload(Emitter<N0> em) Emit ansaloadinstruction- Type Parameters:
N2- the tail of the stack (...)N1- ..., arrayrefN0- ..., arrayref, index- Parameters:
em- the emitter- Returns:
- the emitter with ..., value
-
sastore
static <N3 extends Emitter.Next,N2 extends Emitter.Ent<N3, Emitter<N3> sastoreTypes.TRef<short[]>>, N1 extends Emitter.Ent<N2, Types.TInt>, N0 extends Emitter.Ent<N1, Types.TInt>> (Emitter<N0> em) Emit ansastoreinstruction- Type Parameters:
N3- the tail of the stack (...)N2- ..., arrayrefN1- ..., arrayref, indexN0- ..., arrayref, index, value- Parameters:
em- the emitter- Returns:
- the emitter with ...
-
swap
static <T2 extends Types.TCat1,T1 extends Types.TCat1, Emitter<Emitter.Ent<Emitter.Ent<N2,N2 extends Emitter.Next, N1 extends Emitter.Ent<N2, T2>, N0 extends Emitter.Ent<N1, T1>> T1>, swapT2>> (Emitter<N0> em) Emit aswapinstruction- Type Parameters:
T2- the type of value2 on the stackT1- the type of value1 on the stackN2- the tail of the stack (...)N1- ..., value2N0- ..., value2, value1- Parameters:
em- the emitter- Returns:
- the emitter with ..., value1, value2
-
tableswitch
static <N1 extends Emitter.Next,N0 extends Emitter.Ent<N1, Emitter<Emitter.Dead> tableswitchTypes.TInt>> (Emitter<N0> em, int low, Lbl<N1> dflt, List<Lbl<N1>> cases) Emit atableswitchinstruction- Type Parameters:
N1- the tail of the stack (...)N0- ..., index- Parameters:
em- the emitterlow- the low indexdflt- a target label for the default case. The stack at the label must be ...cases- a list of target labels. The stack at each label must be ...- Returns:
- the dead emitter
-