package org.jctools.channels.proxy; import static java.lang.System.out; import org.objectweb.asm.Type; public final class LocalsHelper { private int nextLocalIndex = 0; private LocalsHelper() { }; public int newLocal(Class<?> cls) { Type type = Type.getType(cls); return newLocal(type); } private int newLocal(Type type) { final int myIndex = nextLocalIndex; nextLocalIndex += type.getSize(); return myIndex; } public static LocalsHelper forStaticMethod() { return new LocalsHelper(); } public static LocalsHelper forInstanceMethod() { LocalsHelper helper = new LocalsHelper(); helper.newLocal(Object.class); return helper; } public static void main(String[] args) throws Exception { LocalsHelper helper = LocalsHelper.forInstanceMethod(); out.println(helper.newLocal(int.class)); out.println(helper.newLocal(int.class)); out.println(helper.newLocal(long.class)); out.println(helper.newLocal(double.class)); out.println(helper.newLocal(boolean.class)); out.println(helper.newLocal(Object.class)); out.println(helper.newLocal(Object.class)); out.println(helper.newLocal(Object.class)); out.println(); } }