Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 124425 Details for
Bug 261510
[compiler] Deadlock in static initializer of JDT classes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Proposed patch for 3.4
261510-34x.txt (text/plain), 8.29 KB, created by
Philipe Mulet
on 2009-02-02 10:15:28 EST
(
hide
)
Description:
Proposed patch for 3.4
Filename:
MIME Type:
Creator:
Philipe Mulet
Created:
2009-02-02 10:15:28 EST
Size:
8.29 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java,v >retrieving revision 1.25 >diff -u -r1.25 IntConstant.java >--- compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java 28 Mar 2006 20:33:18 -0000 1.25 >+++ compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java 2 Feb 2009 15:15:01 -0000 >@@ -13,7 +13,8 @@ > public class IntConstant extends Constant { > > int value; >- >+ >+ private static final IntConstant MIN_VALUE = new IntConstant(Integer.MIN_VALUE); > private static final IntConstant MINUS_FOUR = new IntConstant(-4); > private static final IntConstant MINUS_THREE = new IntConstant(-3); > private static final IntConstant MINUS_TWO = new IntConstant(-2); >@@ -33,6 +34,7 @@ > public static Constant fromValue(int value) { > > switch (value) { >+ case Integer.MIN_VALUE : return IntConstant.MIN_VALUE; > case -4 : return IntConstant.MINUS_FOUR; > case -3 : return IntConstant.MINUS_THREE; > case -2 : return IntConstant.MINUS_TWO; >Index: compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java,v >retrieving revision 1.23 >diff -u -r1.23 LongConstant.java >--- compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java 28 Mar 2006 20:33:18 -0000 1.23 >+++ compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java 2 Feb 2009 15:15:01 -0000 >@@ -12,12 +12,15 @@ > > public class LongConstant extends Constant { > private static final LongConstant ZERO = new LongConstant(0L); >+private static final LongConstant MIN_VALUE = new LongConstant(Long.MIN_VALUE); > > private long value; > > public static Constant fromValue(long value) { > if (value == 0L) { > return ZERO; >+ } else if (value == Long.MIN_VALUE) { >+ return MIN_VALUE; > } > return new LongConstant(value); > } >Index: compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java,v >retrieving revision 1.25 >diff -u -r1.25 LongLiteral.java >--- compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java 6 Mar 2007 02:38:48 -0000 1.25 >+++ compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java 2 Feb 2009 15:15:01 -0000 >@@ -17,7 +17,6 @@ > import org.eclipse.jdt.internal.compiler.parser.ScannerHelper; > > public class LongLiteral extends NumberLiteral { >- static final Constant FORMAT_ERROR = DoubleConstant.fromValue(1.0/0.0); // NaN; > > public LongLiteral(char[] token, int s,int e) { > super(token, s,e); >@@ -52,7 +51,7 @@ > > int digitValue ; > if ((digitValue = ScannerHelper.digit(source[j++],radix)) < 0 ) { >- constant = FORMAT_ERROR; return ; >+ return /*constant stays null*/ ; > } > if (digitValue >= 8) > nbDigit = 4; >@@ -65,7 +64,7 @@ > computedValue = digitValue ; > while (j<length) { > if ((digitValue = ScannerHelper.digit(source[j++],radix)) < 0) { >- constant = FORMAT_ERROR; return ; >+ return /*constant stays null*/ ; > } > if ((nbDigit += shift) > 64) > return /*constant stays null*/ ; >@@ -137,19 +136,6 @@ > (source[18] == '8') && > (((this.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT) == 0)); > } >-public TypeBinding resolveType(BlockScope scope) { >- // the format may be incorrect while the scanner could detect >- // such error only on painfull tests...easier and faster here >- >- TypeBinding tb = super.resolveType(scope); >- if (constant == FORMAT_ERROR) { >- constant = Constant.NotAConstant; >- scope.problemReporter().constantOutOfFormat(this); >- this.resolvedType = null; >- return null; >- } >- return tb; >-} > public void traverse(ASTVisitor visitor, BlockScope scope) { > visitor.visit(this, scope); > visitor.endVisit(this, scope); >Index: compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java,v >retrieving revision 1.12 >diff -u -r1.12 LongLiteralMinValue.java >--- compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java 6 Mar 2007 02:38:48 -0000 1.12 >+++ compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java 2 Feb 2009 15:15:01 -0000 >@@ -15,11 +15,10 @@ > public class LongLiteralMinValue extends LongLiteral { > > final static char[] CharValue = new char[]{'-', '9','2','2','3','3','7','2','0','3','6','8','5','4','7','7','5','8','0','8','L'}; >- final static Constant MIN_VALUE = LongConstant.fromValue(Long.MIN_VALUE) ; > > public LongLiteralMinValue(){ > super(CharValue,0,0); >- constant = MIN_VALUE; >+ constant = LongConstant.fromValue(Long.MIN_VALUE); > } > public void computeConstant() { > >Index: compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java,v >retrieving revision 1.10 >diff -u -r1.10 IntLiteralMinValue.java >--- compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java 28 Mar 2006 20:29:57 -0000 1.10 >+++ compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java 2 Feb 2009 15:15:01 -0000 >@@ -15,11 +15,10 @@ > public class IntLiteralMinValue extends IntLiteral { > > final static char[] CharValue = new char[]{'-','2','1','4','7','4','8','3','6','4','8'}; >- final static Constant MIN_VALUE = IntConstant.fromValue(Integer.MIN_VALUE) ; > > public IntLiteralMinValue() { >- super(CharValue,0,0,Integer.MIN_VALUE); >- constant = MIN_VALUE; >+ super(CharValue, 0,0, Integer.MIN_VALUE); >+ constant = IntConstant.fromValue(Integer.MIN_VALUE); > } > public void computeConstant(){ > >Index: compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java,v >retrieving revision 1.23 >diff -u -r1.23 IntLiteral.java >--- compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java 28 Oct 2006 04:11:27 -0000 1.23 >+++ compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java 2 Feb 2009 15:15:01 -0000 >@@ -22,7 +22,6 @@ > public static final IntLiteral > One = new IntLiteral(new char[]{'1'},0,0,1);//used for ++ and -- > >- static final Constant FORMAT_ERROR = DoubleConstant.fromValue(1.0/0.0); // NaN; > public IntLiteral(char[] token, int s, int e) { > super(token, s,e); > } >@@ -71,7 +70,7 @@ > while (j<length) > { int digitValue ; > if ((digitValue = ScannerHelper.digit(source[j++],radix)) < 0 ) >- { constant = FORMAT_ERROR; return ;} >+ { return /*constant stays null*/ ;} > computedValue = (computedValue<<shift) | digitValue ; > if (computedValue > MAX) return /*constant stays null*/ ;}} > else >@@ -79,7 +78,7 @@ > for (int i = 0 ; i < length;i++) > { int digitValue ; > if ((digitValue = ScannerHelper.digit(source[i],10)) < 0 ) >- { constant = FORMAT_ERROR; return ;} >+ { return /*constant stays null*/ ; } > computedValue = 10*computedValue + digitValue; > if (computedValue > MAX) return /*constant stays null*/ ; }} > >@@ -122,19 +121,6 @@ > (source[9] == '8') && > (((this.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT) == 0)); > } >-public TypeBinding resolveType(BlockScope scope) { >- // the format may be incorrect while the scanner could detect >- // such an error only on painfull tests...easier and faster here >- >- TypeBinding tb = super.resolveType(scope); >- if (constant == FORMAT_ERROR) { >- constant = Constant.NotAConstant; >- scope.problemReporter().constantOutOfFormat(this); >- this.resolvedType = null; >- return null; >- } >- return tb; >-} > public StringBuffer printExpression(int indent, StringBuffer output){ > > if (source == null) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 261510
:
122943
|
124410
|
124424
| 124425