public void processTerm(String t) { // null means the term has been filtered out (eg stopwords) if (t != null) { // add term to document posting list for (String fieldName : termFields) { int tmp = fieldNames.get(fieldName); if (tmp > 0) { fields.add(tmp - 1); } } if (ELSE_ENABLED && fields.size() == 0) { fields.add(ELSE_FIELD_ID); } ((BlockFieldDocumentPostingList) termsInDocument).insert(t, fields.toArray(), blockId); numOfTokensInDocument++; if (++numOfTokensInBlock >= BLOCK_SIZE && blockId < MAX_BLOCKS) { numOfTokensInBlock = 0; blockId++; } fields.clear(); } }
private static void findReadsBeforeWrites( Instruction[] flow, TIntHashSet[] definitelyAssigned, List<ReadWriteVariableInstruction> result, TObjectIntHashMap<String> namesIndex, int[] postorder, int[] invpostorder, boolean onlyFirstRead) { // skip instructions that are not reachable from the start int start = ArrayUtil.find(invpostorder, 0); for (int i = start; i < flow.length; i++) { int j = invpostorder[i]; Instruction curr = flow[j]; if (curr instanceof ReadWriteVariableInstruction) { ReadWriteVariableInstruction rw = (ReadWriteVariableInstruction) curr; int name = namesIndex.get(rw.getVariableName()); TIntHashSet vars = definitelyAssigned[j]; if (rw.isWrite()) { if (vars == null) { vars = new TIntHashSet(); definitelyAssigned[j] = vars; } vars.add(name); } else { if (vars == null || !vars.contains(name)) { result.add(rw); if (onlyFirstRead) { if (vars == null) { vars = new TIntHashSet(); definitelyAssigned[j] = vars; } vars.add(name); } } } } for (Instruction succ : curr.allSuccessors()) { if (postorder[succ.num()] > postorder[curr.num()]) { TIntHashSet currDefinitelyAssigned = definitelyAssigned[curr.num()]; TIntHashSet succDefinitelyAssigned = definitelyAssigned[succ.num()]; if (currDefinitelyAssigned != null) { int[] currArray = currDefinitelyAssigned.toArray(); if (succDefinitelyAssigned == null) { succDefinitelyAssigned = new TIntHashSet(); succDefinitelyAssigned.addAll(currArray); definitelyAssigned[succ.num()] = succDefinitelyAssigned; } else { succDefinitelyAssigned.retainAll(currArray); } } else { if (succDefinitelyAssigned != null) { succDefinitelyAssigned.clear(); } else { succDefinitelyAssigned = new TIntHashSet(); definitelyAssigned[succ.num()] = succDefinitelyAssigned; } } } } } }