if (init) { if (node.getPrevious() != null && node.getPrevious().isFilterTrace()) { if (filterInfo.remaining > 0) { for (int i = 0; i < filterInfo.remaining * Util.getTypeSize(node.getFilter().getInputType()); i++) { RouteIns ins = new RouteIns(tile);   ins.addRoute(rawChip.getTile(((FilterTraceNode)node.getPrevious()).getX(), ((FilterTraceNode)node.getPrevious()).getY()), tile); tile.getSwitchCode().appendIns(ins, init); }
if (init && filterInfo.remaining > 0) { for (int i = 0; i < filterInfo.remaining * Util.getTypeSize(node.getFilter().getInputType()); i++) { if (node.getPrevious().isFilterTrace()) { RouteIns ins = new RouteIns(tile);   ins.addRoute(rawChip.getTile(((FilterTraceNode)node.getPrevious()).getX(), ((FilterTraceNode)node.getPrevious()).getY()), tile); tile.getSwitchCode().appendIns(ins, init); } else if (KjcOptions.magicdram) { InputTraceNode input = (InputTraceNode)node.getPrevious(); createMagicDramLoad(input, node, init, rawChip);
    private static void createSwitchCodeBuffered(FilterTraceNode node, Trace parent, 						 FilterInfo filterInfo,						 boolean init, RawTile tile,						 RawChip rawChip, int mult)     {	//create the switch code for each firing 	createSwitchCode(node, parent, filterInfo, init, false, tile, rawChip, mult);		//now we must take care of the remaining items on the input tape 	//after the initialization phase if the upstream filter produces more than	//we consume in init	if (init) {	    if (node.getPrevious() != null &&		node.getPrevious().isFilterTrace()) {				if (filterInfo.remaining > 0) {		    for (int i = 0; 			 i < filterInfo.remaining * Util.getTypeSize(node.getFilter().getInputType()); 			 i++) {			RouteIns ins = new RouteIns(tile);			//add the route from the source tile to this			//tile's compute processor			ins.addRoute(rawChip.getTile(((FilterTraceNode)node.getPrevious()).getX(), 						     ((FilterTraceNode)node.getPrevious()).getY()),				     tile);			tile.getSwitchCode().appendIns(ins, init);		    }   		}	    }	}    }