package vm; import icecaptools.IcecapCompileMe; public class InterruptDispatcher { protected static InterruptHandler[] handlers; protected static int numberOfInterrupts; protected static boolean init; static final byte HVM_CLOCK = 0; protected InterruptDispatcher() { } private static class NullHandler implements InterruptHandler { @Override @IcecapCompileMe public void handle() { } @Override public void register() { } @Override public void enable() { } @Override public void disable() { } } static { init = false; } @IcecapCompileMe public static void registerHandler(InterruptHandler iHandler, byte n) { if (n <= numberOfInterrupts) { /* * This is a hack to force inclusion of the handler method into the * build */ /* handlers[n] will never actually be null at this point */ if (handlers[n] == null) { interrupt(n); } handlers[n] = iHandler; } } @IcecapCompileMe private static void interrupt(byte n) { handlers[n].handle(); } public static void init() { NullHandler nh = new NullHandler(); for (byte i = 0; i < numberOfInterrupts; i++) { handlers[i] = nh; } } }