/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Merge the effect of a statement presumably contained in a try-block, * i.e., record how the collected info will affect the corresponding finally-block. * Precondition: caller has checked that initsOnFinally != null. * @param flowInfo info after executing a statement of the try-block. */ public void mergeFinallyNullInfo(FlowInfo flowInfo) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take null info as is: this.initsOnFinally.addNullInfoFrom(flowInfo); return; } // node is reached only conditionally: merge flowInfo with existing since both paths are possible this.initsOnFinally = this.initsOnFinally.mergedWith(flowInfo.unconditionalCopy()); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
/** * Record a given null status of a given local variable as it will be seen in the finally block. * @param local the local variable being observed * @param nullStatus the null status of local at the current point in the flow */ public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) { if (this.initsOnFinally == null) return; if (this.conditionalLevel == -1) return; if (this.conditionalLevel == 0) { // node is unconditionally reached, take nullStatus as is: this.initsOnFinally.markNullStatus(local, nullStatus); return; } // node is reached only conditionally, weaken status to potentially_ and merge with previous UnconditionalFlowInfo newInfo = this.initsOnFinally.unconditionalCopy(); newInfo.markNullStatus(local, nullStatus); this.initsOnFinally = this.initsOnFinally.mergedWith(newInfo); }
boolean reinjectNullInfo = (statementInfo.tagBits & FlowInfo.UNREACHABLE) != 0 && (labelContext.initsOnBreak.tagBits & FlowInfo.UNREACHABLE) == 0; mergedInfo = statementInfo.mergedWith(labelContext.initsOnBreak); if (reinjectNullInfo) {
boolean reinjectNullInfo = (statementInfo.tagBits & FlowInfo.UNREACHABLE) != 0 && (labelContext.initsOnBreak.tagBits & FlowInfo.UNREACHABLE) == 0; mergedInfo = statementInfo.mergedWith(labelContext.initsOnBreak); if (reinjectNullInfo) {
boolean reinjectNullInfo = (statementInfo.tagBits & FlowInfo.UNREACHABLE) != 0 && (labelContext.initsOnBreak.tagBits & FlowInfo.UNREACHABLE) == 0; mergedInfo = statementInfo.mergedWith(labelContext.initsOnBreak); if (reinjectNullInfo) {
boolean reinjectNullInfo = (statementInfo.tagBits & FlowInfo.UNREACHABLE) != 0 && (labelContext.initsOnBreak.tagBits & FlowInfo.UNREACHABLE) == 0; mergedInfo = statementInfo.mergedWith(labelContext.initsOnBreak); if (reinjectNullInfo) {