void simulateThrowAfterLoopBack(FlowInfo flowInfo) { this.catchingContext.recordHandlingException(this.caughtException, flowInfo.unconditionalCopy().addNullInfoFrom(this.exceptionInfo).unconditionalInits(), null, // raised exception, irrelevant here, null, null, /* invocation site, irrelevant here */ true // we have no business altering the needed status. ); } }
public UnconditionalFlowInfo unconditionalInitsWithoutSideEffect() { // cannot do better here than unconditionalCopy - but still a different // operation for UnconditionalFlowInfo return this.initsWhenTrue.unconditionalCopy(). mergedWith(this.initsWhenFalse.unconditionalInits()); }
/** Mark that this resource is closed locally. */ public void markClose(FlowInfo flowInfo, FlowContext flowContext) { FakedTrackingVariable current = this; do { flowInfo.markAsDefinitelyNonNull(current.binding); current.globalClosingState |= CLOSE_SEEN; flowContext.markFinallyNullStatus(current.binding, FlowInfo.NON_NULL); current = current.innerTracker; } while (current != null); }
public UnconditionalFlowInfo unconditionalFieldLessCopy() { return this.initsWhenTrue.unconditionalFieldLessCopy(). mergedWith(this.initsWhenFalse.unconditionalFieldLessCopy()); // should never happen, hence suboptimal does not hurt }
public void recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) { if (nullStatus == FlowInfo.NULL) super.recordUnboxing(scope, expression, nullStatus, flowInfo); else // defer checking: recordNullReference(null, expression, IN_UNBOXING, flowInfo); }
public void recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) { if (nullStatus == FlowInfo.NULL) super.recordUnboxing(scope, expression, nullStatus, flowInfo); else // defer checking: recordNullReference(null, expression, IN_UNBOXING, flowInfo); } protected boolean internalRecordNullityMismatch(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, TypeBinding expectedType, int checkType) {
@Override public UnconditionalFlowInfo mergeDefiniteInitsWith(UnconditionalFlowInfo otherInits) { return unconditionalInits().mergeDefiniteInitsWith(otherInits); } @Override
void simulateThrowAfterLoopBack(FlowInfo flowInfo) { this.catchingContext.recordHandlingException(this.caughtException, flowInfo.unconditionalCopy().addNullInfoFrom(this.exceptionInfo).unconditionalInits(), null, // raised exception, irrelevant here, null, null, /* invocation site, irrelevant here */ true // we have no business altering the needed status. ); } }
public UnconditionalFlowInfo unconditionalInitsWithoutSideEffect() { // cannot do better here than unconditionalCopy - but still a different // operation for UnconditionalFlowInfo return this.initsWhenTrue.unconditionalCopy(). mergedWith(this.initsWhenFalse.unconditionalInits()); }
public UnconditionalFlowInfo unconditionalFieldLessCopy() { return this.initsWhenTrue.unconditionalFieldLessCopy(). mergedWith(this.initsWhenFalse.unconditionalFieldLessCopy()); // should never happen, hence suboptimal does not hurt }
/** Mark that this resource is closed locally. */ public void markClose(FlowInfo flowInfo, FlowContext flowContext) { FakedTrackingVariable current = this; do { flowInfo.markAsDefinitelyNonNull(current.binding); current.globalClosingState |= CLOSE_SEEN; flowContext.markFinallyNullStatus(current.binding, FlowInfo.NON_NULL); current = current.innerTracker; } while (current != null); }
public void recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) { if (nullStatus == FlowInfo.NULL) super.recordUnboxing(scope, expression, nullStatus, flowInfo); else // defer checking: recordNullReference(null, expression, IN_UNBOXING, flowInfo); }
void simulateThrowAfterLoopBack(FlowInfo flowInfo) { this.catchingContext.recordHandlingException(this.caughtException, flowInfo.unconditionalCopy().addNullInfoFrom(this.exceptionInfo).unconditionalInits(), null, // raised exception, irrelevant here, null, null, /* invocation site, irrelevant here */ true // we have no business altering the needed status. ); } }
public UnconditionalFlowInfo unconditionalInitsWithoutSideEffect() { // cannot do better here than unconditionalCopy - but still a different // operation for UnconditionalFlowInfo return this.initsWhenTrue.unconditionalCopy(). mergedWith(this.initsWhenFalse.unconditionalInits()); }
public UnconditionalFlowInfo unconditionalFieldLessCopy() { return this.initsWhenTrue.unconditionalFieldLessCopy(). mergedWith(this.initsWhenFalse.unconditionalFieldLessCopy()); // should never happen, hence suboptimal does not hurt }
/** Mark that this resource is closed locally. */ public void markClose(FlowInfo flowInfo, FlowContext flowContext) { FakedTrackingVariable current = this; do { flowInfo.markAsDefinitelyNonNull(current.binding); current.globalClosingState |= CLOSE_SEEN; flowContext.markFinallyNullStatus(this.binding, FlowInfo.NON_NULL); current = current.innerTracker; } while (current != null); }
void simulateThrowAfterLoopBack(FlowInfo flowInfo) { this.catchingContext.recordHandlingException(this.caughtException, flowInfo.unconditionalCopy().addNullInfoFrom(this.exceptionInfo).unconditionalInits(), null, // raised exception, irrelevant here, null, null, /* invocation site, irrelevant here */ true // we have no business altering the needed status. ); } }
public void recordBreakFrom(FlowInfo flowInfo) { if ((this.initsOnBreak.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0) { this.initsOnBreak = this.initsOnBreak.mergedWith(flowInfo.unconditionalInits()); } else { this.initsOnBreak = flowInfo.unconditionalCopy(); } } }
void simulateThrowAfterLoopBack(FlowInfo flowInfo) { this.catchingContext.recordHandlingException(this.caughtException, flowInfo.unconditionalCopy().addNullInfoFrom(this.exceptionInfo).unconditionalInits(), null, // raised exception, irrelevant here, null, null, /* invocation site, irrelevant here */ true // we have no business altering the needed status. ); } }
public void recordBreakFrom(FlowInfo flowInfo) { if ((this.initsOnBreak.tagBits & FlowInfo.UNREACHABLE) == 0) { this.initsOnBreak = this.initsOnBreak.mergedWith(flowInfo.unconditionalInits()); } else { this.initsOnBreak = flowInfo.unconditionalCopy(); } } }