package com.oblivm.backend.gc; import com.oblivm.backend.flexsc.CompEnv; import com.oblivm.backend.gc.regular.GCEva; import com.oblivm.backend.gc.regular.GCGen; public class DbgUtils { static void debugMsg(CompEnv env, String msg) { if (env instanceof GCEva) System.err.println(msg); } static void debugVal(CompEnv env, GCSignal bs, String msg) throws Exception { if (env instanceof GCGen) { bs.send(((GCGen) env).channel); GCGen.R.send(((GCGen) env).channel); } else { int x; GCSignal glb = GCSignal.receive(((GCEva) env).channel); GCSignal R = GCSignal.receive(((GCEva) env).channel); if (bs.equals(glb)) x = 0; else if (bs.equals(R.xor(glb))) x = 1; else throw new Exception(String.format("bad label: %s", bs.toHexStr())); System.out.println(String.format("%s = %d", msg, x)); } } static void debugLabel(CompEnv env, GCSignal bs, String msg) { if (env instanceof GCGen) { System.err.println(String.format("[%s] %s, %s", msg, bs.toHexStr(), GCGen.R.xor(bs).toHexStr())); } else System.out.println(String.format("[%s] %s", msg, bs.toHexStr())); } }