### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.core
Index: compiler/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java,v
retrieving revision 1.60
diff -u -r1.60 UnconditionalFlowInfo.java
--- compiler/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java 5 Dec 2006 11:46:08 -0000 1.60
+++ compiler/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java 4 Mar 2009 16:56:17 -0000
@@ -1544,7 +1544,10 @@
}
public FlowInfo setReachMode(int reachMode) {
- if (reachMode == REACHABLE && this != DEAD_END) { // cannot modify DEAD_END
+ if (this == DEAD_END) {
+ return this; // cannot modify DEAD_END
+ }
+ if (reachMode == REACHABLE) {
this.tagBits &= ~UNREACHABLE;
}
else {
Index: compiler/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java,v
retrieving revision 1.35
diff -u -r1.35 FlowInfo.java
--- compiler/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java 26 Sep 2006 12:04:03 -0000 1.35
+++ compiler/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java 4 Mar 2009 16:56:16 -0000
@@ -58,7 +58,7 @@
}
public static FlowInfo conditional(FlowInfo initsWhenTrue, FlowInfo initsWhenFalse){
-
+ if (initsWhenTrue == initsWhenFalse) return initsWhenTrue;
// if (initsWhenTrue.equals(initsWhenFalse)) return initsWhenTrue; -- could optimize if #equals is defined
return new ConditionalFlowInfo(initsWhenTrue, initsWhenFalse);
}
Index: compiler/org/eclipse/jdt/internal/compiler/ast/DoStatement.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/DoStatement.java,v
retrieving revision 1.56
diff -u -r1.56 DoStatement.java
--- compiler/org/eclipse/jdt/internal/compiler/ast/DoStatement.java 6 Mar 2007 02:38:48 -0000 1.56
+++ compiler/org/eclipse/jdt/internal/compiler/ast/DoStatement.java 4 Mar 2009 16:56:16 -0000
@@ -144,19 +144,19 @@
// continue label (135602)
if (hasContinueLabel) {
this.continueLabel.place();
- }
- // generate condition
- Constant cst = this.condition.optimizedBooleanConstant();
- boolean isConditionOptimizedFalse = cst != Constant.NotAConstant && cst.booleanValue() == false;
- if (isConditionOptimizedFalse){
- this.condition.generateCode(currentScope, codeStream, false);
- } else if (hasContinueLabel) {
- this.condition.generateOptimizedBoolean(
- currentScope,
- codeStream,
- actionLabel,
- null,
- true);
+ // generate condition
+ Constant cst = this.condition.optimizedBooleanConstant();
+ boolean isConditionOptimizedFalse = cst != Constant.NotAConstant && cst.booleanValue() == false;
+ if (isConditionOptimizedFalse){
+ this.condition.generateCode(currentScope, codeStream, false);
+ } else {
+ this.condition.generateOptimizedBoolean(
+ currentScope,
+ codeStream,
+ actionLabel,
+ null,
+ true);
+ }
}
// May loose some local variable initializations : affecting the local variable attributes
if (this.mergedInitStateIndex != -1) {