public PointerKey getPointerKeyForLocal(int valueNumber) { return getBuilder().getPointerKeyForLocal(node, valueNumber); }
public PointerKey getPointerKeyForLocal(int valueNumber) { return getBuilder().getPointerKeyForLocal(node, valueNumber); }
protected IntSet getParamObjects(int paramIndex, @SuppressWarnings("unused") int rhsi) { int paramVn = call.getUse(paramIndex); PointerKey var = getPointerKeyForLocal(caller, paramVn); IntSet s = system.findOrCreatePointsToSet(var).getValue(); return s; } }
protected IntSet getParamObjects(int paramIndex, @SuppressWarnings("unused") int rhsi) { int paramVn = call.getUse(paramIndex); PointerKey var = getPointerKeyForLocal(caller, paramVn); IntSet s = system.findOrCreatePointsToSet(var).getValue(); return s; } }
/** * precondition: hasUniqueCatchBlock(call,node,cg) * * @return the unique pointer key which catches the exceptions thrown by a call * @throws IllegalArgumentException if ir == null * @throws IllegalArgumentException if call == null */ public PointerKey getUniqueCatchKey(SSAAbstractInvokeInstruction call, IRView ir, CGNode node) throws IllegalArgumentException, IllegalArgumentException { if (call == null) { throw new IllegalArgumentException("call == null"); } if (ir == null) { throw new IllegalArgumentException("ir == null"); } ISSABasicBlock[] bb = ir.getBasicBlocksForCall(call.getCallSite()); assert bb.length == 1; SSACFG.BasicBlock cb = (BasicBlock) ir.getControlFlowGraph().getExceptionalSuccessors(bb[0]).iterator().next(); if (cb.isExitBlock()) { return getPointerKeyForExceptionalReturnValue(node); } else { SSACFG.ExceptionHandlerBasicBlock ehbb = (ExceptionHandlerBasicBlock) cb; SSAGetCaughtExceptionInstruction ci = ehbb.getCatchInstruction(); return getPointerKeyForLocal(node, ci.getDef()); } }
/** * precondition: hasUniqueCatchBlock(call,node,cg) * * @return the unique pointer key which catches the exceptions thrown by a call * @throws IllegalArgumentException if ir == null * @throws IllegalArgumentException if call == null */ public PointerKey getUniqueCatchKey(SSAAbstractInvokeInstruction call, IRView ir, CGNode node) throws IllegalArgumentException, IllegalArgumentException { if (call == null) { throw new IllegalArgumentException("call == null"); } if (ir == null) { throw new IllegalArgumentException("ir == null"); } ISSABasicBlock[] bb = ir.getBasicBlocksForCall(call.getCallSite()); assert bb.length == 1; SSACFG.BasicBlock cb = (BasicBlock) ir.getControlFlowGraph().getExceptionalSuccessors(bb[0]).iterator().next(); if (cb.isExitBlock()) { return getPointerKeyForExceptionalReturnValue(node); } else { SSACFG.ExceptionHandlerBasicBlock ehbb = (ExceptionHandlerBasicBlock) cb; SSAGetCaughtExceptionInstruction ci = ehbb.getCatchInstruction(); return getPointerKeyForLocal(node, ci.getDef()); } }
Assertions.UNREACHABLE("unexpected " + instruction + " in " + caller); PointerKey actual = getPointerKeyForLocal(caller, instruction.getUse(i)); if (formal instanceof FilteredPointerKey) { system.newConstraint(formal, filterOperator, actual); PointerKey result = getPointerKeyForLocal(caller, instruction.getDef()); PointerKey ret = getPointerKeyForReturnValue(target); system.newConstraint(result, assignOperator, ret); PointerKey e = getPointerKeyForLocal(caller, instruction.getException()); PointerKey er = getPointerKeyForExceptionalReturnValue(target); if (SHORT_CIRCUIT_SINGLE_USES && uniqueCatchKey != null) {
Assertions.UNREACHABLE("unexpected " + instruction + " in " + caller); PointerKey actual = getPointerKeyForLocal(caller, instruction.getUse(i)); if (formal instanceof FilteredPointerKey) { system.newConstraint(formal, filterOperator, actual); PointerKey result = getPointerKeyForLocal(caller, instruction.getDef()); PointerKey ret = getPointerKeyForReturnValue(target); system.newConstraint(result, assignOperator, ret); PointerKey e = getPointerKeyForLocal(caller, instruction.getException()); PointerKey er = getPointerKeyForExceptionalReturnValue(target); if (SHORT_CIRCUIT_SINGLE_USES && uniqueCatchKey != null) {
continue; PointerKey def = getPointerKeyForLocal(node, phi.getDef()); if (hasNoInterestingUses(node, phi.getDef(), v.du)) { system.recordImplicitPointsToSet(def); PointerKey use = getPointerKeyForLocal(node, phi.getUse(n)); if (contentsAreInvariant(v.symbolTable, v.du, phi.getUse(n))) { system.recordImplicitPointsToSet(use);
PointerKey e = getPointerKeyForLocal(node, s.getException()); PointerKey e = getPointerKeyForLocal(node, s.getException());
continue; PointerKey def = getPointerKeyForLocal(node, phi.getDef()); if (hasNoInterestingUses(node, phi.getDef(), v.du)) { system.recordImplicitPointsToSet(def); PointerKey use = getPointerKeyForLocal(node, phi.getUse(n)); if (contentsAreInvariant(v.symbolTable, v.du, phi.getUse(n))) { system.recordImplicitPointsToSet(use);
PointerKey e = getPointerKeyForLocal(node, s.getException()); PointerKey e = getPointerKeyForLocal(node, s.getException());
return getPointerKeyForLocal(target, vn); } else { return getFilteredPointerKeyForLocal(target, vn, new FilteredPointerKey.SingleClassFilter(C));
return getPointerKeyForLocal(target, vn); } else { return getFilteredPointerKeyForLocal(target, vn, new FilteredPointerKey.SingleClassFilter(C));
params.foreach(x -> { if (!contentsAreInvariant(symbolTable, du, instruction.getUse(x))) { pks.add(getBuilder().getPointerKeyForLocal(node, instruction.getUse(x)));
params.foreach(x -> { if (!contentsAreInvariant(symbolTable, du, instruction.getUse(x))) { pks.add(getBuilder().getPointerKeyForLocal(node, instruction.getUse(x)));