# HG changeset patch
# User twisti
# Date 1394653245 25200
# Node ID 8c4a3d9308a7c9bee2fb1e5a8f34a37a3d36dab1
# Parent 7668297a2e6702b223c2922655a44713e7acc6dd
fixed FindBugs bugs
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java Wed Mar 12 12:40:45 2014 -0700
@@ -197,8 +197,8 @@
@Override
public boolean equals(Object obj) {
- if (obj instanceof ConcreteMethod) {
- ConcreteMethod other = (ConcreteMethod) obj;
+ if (obj instanceof MethodContents) {
+ MethodContents other = (MethodContents) obj;
return other.method == method;
}
return false;
@@ -387,7 +387,7 @@
}
}
- out.printf("%d assumptions:\n", nonNullList.size());
+ out.printf("%d assumptions:%n", nonNullList.size());
for (Assumption a : nonNullList) {
out.println(a.toString());
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DebugInfo.java
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DebugInfo.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DebugInfo.java Wed Mar 12 12:40:45 2014 -0700
@@ -22,8 +22,6 @@
*/
package com.oracle.graal.api.code;
-import java.io.*;
-
/**
* Represents the debugging information for a particular point of execution. This information
* includes:
@@ -35,9 +33,7 @@
*
a map from the registers (in the caller's frame) to the slots where they are saved in the
* current frame
*/
-public class DebugInfo implements Serializable {
-
- private static final long serialVersionUID = -6047206624915812516L;
+public class DebugInfo {
private final BytecodePosition bytecodePosition;
private final ReferenceMap referenceMap;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Register.java
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Register.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Register.java Wed Mar 12 12:40:45 2014 -0700
@@ -22,16 +22,12 @@
*/
package com.oracle.graal.api.code;
-import java.io.*;
-
import com.oracle.graal.api.meta.*;
/**
* Represents a target machine register.
*/
-public final class Register implements Comparable, Serializable {
-
- private static final long serialVersionUID = -7213269157816016300L;
+public final class Register implements Comparable {
public static final RegisterCategory SPECIAL = new RegisterCategory("SPECIAL");
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java Wed Mar 12 12:40:45 2014 -0700
@@ -87,7 +87,7 @@
}
} else {
ResolvedJavaField[] fields = vo.type.getInstanceFields(true);
- assert fields.length == vo.values.length : vo.type + ", fields=" + Arrays.toString(fields) + ", values=" + vo.values;
+ assert fields.length == vo.values.length : vo.type + ", fields=" + Arrays.toString(fields) + ", values=" + Arrays.toString(vo.values);
for (int i = 0; i < vo.values.length; i++) {
if (i != 0) {
buf.append(',');
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/AbstractJavaProfile.java
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/AbstractJavaProfile.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/AbstractJavaProfile.java Wed Mar 12 12:40:45 2014 -0700
@@ -43,7 +43,7 @@
public AbstractJavaProfile(double notRecordedProbability, T[] pitems) {
this.pitems = pitems;
- assert notRecordedProbability != Double.NaN;
+ assert !Double.isNaN(notRecordedProbability);
this.notRecordedProbability = notRecordedProbability;
assert isSorted();
}
@@ -124,28 +124,26 @@
}
@Override
- public boolean equals(Object other) {
- if (other == this) {
+ public boolean equals(Object obj) {
+ if (obj == this) {
return true;
}
- if (getClass() == other.getClass()) {
- AbstractJavaProfile javaTypeProfile = (AbstractJavaProfile) other;
- if (javaTypeProfile.notRecordedProbability != notRecordedProbability) {
+ if (!(obj instanceof AbstractJavaProfile)) {
+ return false;
+ }
+ AbstractJavaProfile that = (AbstractJavaProfile) obj;
+ if (that.notRecordedProbability != notRecordedProbability) {
+ return false;
+ }
+ if (that.pitems.length != pitems.length) {
+ return false;
+ }
+ for (int i = 0; i < pitems.length; ++i) {
+ if (!pitems[i].equals(that.pitems[i])) {
return false;
}
- if (javaTypeProfile.pitems.length != pitems.length) {
- return false;
- }
-
- for (int i = 0; i < pitems.length; ++i) {
- if (!pitems[i].equals(javaTypeProfile.pitems[i])) {
- return false;
- }
- }
-
- return true;
}
- return false;
+ return true;
}
@Override
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ExceptionHandler.java
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ExceptionHandler.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ExceptionHandler.java Wed Mar 12 12:40:45 2014 -0700
@@ -97,6 +97,9 @@
@Override
public boolean equals(Object obj) {
+ if (!(obj instanceof ExceptionHandler)) {
+ return false;
+ }
ExceptionHandler that = (ExceptionHandler) obj;
if (this.startBCI != that.startBCI || this.endBCI != that.endBCI || this.handlerBCI != that.handlerBCI || this.catchTypeCPI != that.catchTypeCPI) {
return false;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Value.java
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Value.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Value.java Wed Mar 12 12:40:45 2014 -0700
@@ -87,8 +87,8 @@
@Override
public boolean equals(Object obj) {
if (obj instanceof Value) {
- Value other = (Value) obj;
- return kind.equals(other.kind) && platformKind.equals(platformKind);
+ Value that = (Value) obj;
+ return kind.equals(that.kind) && platformKind.equals(that.platformKind);
}
return false;
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.asm.ptx/src/com/oracle/graal/asm/ptx/PTXAssembler.java
--- a/graal/com.oracle.graal.asm.ptx/src/com/oracle/graal/asm/ptx/PTXAssembler.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.asm.ptx/src/com/oracle/graal/asm/ptx/PTXAssembler.java Wed Mar 12 12:40:45 2014 -0700
@@ -698,9 +698,6 @@
@Override
public void jmp(Label l) {
String str = nameOf(l);
- if (l.equals("?")) {
- Thread.dumpStack();
- }
bra(str);
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java Wed Mar 12 12:40:45 2014 -0700
@@ -413,8 +413,8 @@
Debug.log("splitting at position %d", optimalSplitPos);
- assert allocator.isBlockBegin(optimalSplitPos) || (optimalSplitPos % 2 == 1) : "split pos must be odd when not on block boundary";
- assert !allocator.isBlockBegin(optimalSplitPos) || (optimalSplitPos % 2 == 0) : "split pos must be even on block boundary";
+ assert allocator.isBlockBegin(optimalSplitPos) || ((optimalSplitPos & 1) == 1) : "split pos must be odd when not on block boundary";
+ assert !allocator.isBlockBegin(optimalSplitPos) || ((optimalSplitPos & 1) == 0) : "split pos must be even on block boundary";
Interval splitPart = interval.split(optimalSplitPos, allocator);
@@ -493,8 +493,8 @@
}
try (Indent indent2 = Debug.logAndIndent("splitting at position %d", optimalSplitPos)) {
- assert allocator.isBlockBegin(optimalSplitPos) || (optimalSplitPos % 2 == 1) : "split pos must be odd when not on block boundary";
- assert !allocator.isBlockBegin(optimalSplitPos) || (optimalSplitPos % 2 == 0) : "split pos must be even on block boundary";
+ assert allocator.isBlockBegin(optimalSplitPos) || ((optimalSplitPos & 1) == 1) : "split pos must be odd when not on block boundary";
+ assert !allocator.isBlockBegin(optimalSplitPos) || ((optimalSplitPos & 1) == 0) : "split pos must be even on block boundary";
Interval spilledPart = interval.split(optimalSplitPos, allocator);
allocator.assignSpillSlot(spilledPart);
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Wed Mar 12 12:40:45 2014 -0700
@@ -56,9 +56,6 @@
FrameState current = topState;
do {
for (EscapeObjectState state : current.virtualObjectMappings()) {
- if (objectStates == null) {
- objectStates = new IdentityHashMap<>();
- }
if (!objectStates.containsKey(state.object())) {
if (!(state instanceof MaterializedObjectState) || ((MaterializedObjectState) state).materializedValue() != state.object()) {
objectStates.put(state.object(), state);
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/DebugHistogramAsciiPrinter.java
--- a/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/DebugHistogramAsciiPrinter.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/DebugHistogramAsciiPrinter.java Wed Mar 12 12:40:45 2014 -0700
@@ -62,7 +62,7 @@
public void print(DebugHistogram histogram) {
List list = histogram.getValues();
if (list.isEmpty()) {
- os.printf("%s is empty.\n", histogram.getName());
+ os.printf("%s is empty.%n", histogram.getName());
return;
}
@@ -73,7 +73,7 @@
}
// Print header.
- os.printf("%s has %d unique elements and %d total elements:\n", histogram.getName(), list.size(), total);
+ os.printf("%s has %d unique elements and %d total elements:%n", histogram.getName(), list.size(), total);
int max = list.get(0).getCount();
final int lineSize = nameSize + NumberSize + barSize + 10;
@@ -96,6 +96,6 @@
private static void printLine(PrintStream printStream, char c, int lineSize) {
char[] charArr = new char[lineSize];
Arrays.fill(charArr, c);
- printStream.printf("%s\n", new String(charArr));
+ printStream.printf("%s%n", new String(charArr));
}
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Wed Mar 12 12:40:45 2014 -0700
@@ -535,18 +535,22 @@
}
private void maybeNotifyChanged(Node usage) {
- assert graph == null || !graph.isFrozen();
- NodeChangedListener listener = graph.inputChangedListener;
- if (listener != null) {
- listener.nodeChanged(usage);
+ if (graph != null) {
+ assert !graph.isFrozen();
+ NodeChangedListener listener = graph.inputChangedListener;
+ if (listener != null) {
+ listener.nodeChanged(usage);
+ }
}
}
private void maybeNotifyZeroInputs(Node oldInput) {
- assert graph == null || !graph.isFrozen();
- NodeChangedListener listener = graph.usagesDroppedToZeroListener;
- if (listener != null) {
- listener.nodeChanged(oldInput);
+ if (graph != null) {
+ assert !graph.isFrozen();
+ NodeChangedListener listener = graph.usagesDroppedToZeroListener;
+ if (listener != null) {
+ listener.nodeChanged(oldInput);
+ }
}
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed Mar 12 12:40:45 2014 -0700
@@ -970,8 +970,8 @@
int index = startIndex;
while (index < inputOffsets.length) {
NodeList list = getNodeList(node, inputOffsets[index]);
+ assert list != null : clazz;
putNodeList(node, inputOffsets[index], updateInputListCopy(list, node, duplicationReplacement));
- assert list != null : clazz;
index++;
}
}
@@ -980,8 +980,8 @@
int index = startIndex;
while (index < successorOffsets.length) {
NodeList list = getNodeList(node, successorOffsets[index]);
+ assert list != null : clazz;
putNodeList(node, successorOffsets[index], updateSuccListCopy(list, node, duplicationReplacement));
- assert list != null : clazz;
index++;
}
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/ForEachToGraal.java
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/ForEachToGraal.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/ForEachToGraal.java Wed Mar 12 12:40:45 2014 -0700
@@ -82,13 +82,13 @@
NodeIterable calls = graph.getNodes(MethodCallTargetNode.class);
assert calls.count() == 1;
ResolvedJavaMethod lambdaMethod = calls.first().targetMethod();
- assert lambdaMethod.getName().startsWith("lambda$");
Debug.log("target ... " + lambdaMethod);
if (lambdaMethod == null) {
Debug.log("Did not find call in accept()");
return null;
}
+ assert lambdaMethod.getName().startsWith("lambda$");
ExternalCompilationResult hsailCode = backend.compileKernel(lambdaMethod, true);
return backend.installKernel(lambdaMethod, hsailCode);
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java
--- a/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java Wed Mar 12 12:40:45 2014 -0700
@@ -184,7 +184,7 @@
private boolean canOffloadToGPU(ResolvedJavaMethod method) {
HotSpotVMConfig config = getRuntime().getConfig();
- return config.gpuOffload && method.getName().contains("lambda$") & method.isSynthetic();
+ return config.gpuOffload && method.getName().contains("lambda$") && method.isSynthetic();
}
};
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Wed Mar 12 12:40:45 2014 -0700
@@ -51,6 +51,8 @@
import com.oracle.graal.phases.*;
import com.oracle.graal.phases.tiers.*;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
public class CompilationTask implements Runnable, Comparable {
// Keep static finals in a group with withinEnqueue as the last one. CompilationTask can be
@@ -125,6 +127,7 @@
return entryBCI;
}
+ @SuppressFBWarnings(value = "NN_NAKED_NOTIFY")
public void run() {
withinEnqueue.set(Boolean.FALSE);
try {
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Wed Mar 12 12:40:45 2014 -0700
@@ -60,8 +60,19 @@
}
HotSpotVMConfig(CompilerToVM compilerToVm) {
+ /** These fields are set in {@link CompilerToVM#initializeConfiguration}. */
+ gHotSpotVMStructs = 0;
+ gHotSpotVMTypes = 0;
+ gHotSpotVMIntConstants = 0;
+ gHotSpotVMLongConstants = 0;
+
compilerToVm.initializeConfiguration(this);
+ assert gHotSpotVMStructs != 0;
+ assert gHotSpotVMTypes != 0;
+ assert gHotSpotVMIntConstants != 0;
+ assert gHotSpotVMLongConstants != 0;
+
// Fill the VM fields hash map.
HashMap vmFields = new HashMap<>();
for (VMFields.Field e : new VMFields(gHotSpotVMStructs)) {
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Wed Mar 12 12:40:45 2014 -0700
@@ -45,6 +45,8 @@
import com.oracle.graal.options.*;
import com.oracle.graal.replacements.nodes.*;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
/**
* This class contains infrastructure to maintain counters based on {@link DynamicCounterNode}s. The
* infrastructure is enabled by specifying either the GenericDynamicCounters or
@@ -105,6 +107,7 @@
public static long[] delta;
public static final ArrayList staticCounters = new ArrayList<>();
+ @SuppressFBWarnings(value = "AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION", justification = "concurrent abstraction calls are in synchronized block")
public static int getIndex(DynamicCounterNode counter) {
if (!enabled) {
throw new GraalInternalError("counter nodes shouldn't exist when counters are not enabled: " + counter.getGroup() + ", " + counter.getName());
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java Wed Mar 12 12:40:45 2014 -0700
@@ -134,8 +134,8 @@
public static final LocationIdentity[] NO_LOCATIONS = {};
public HotSpotForeignCallLinkage lookupForeignCall(ForeignCallDescriptor descriptor) {
+ assert foreignCalls != null : descriptor;
HotSpotForeignCallLinkage callTarget = foreignCalls.get(descriptor);
- assert foreignCalls != null : descriptor;
callTarget.finalizeAddress(runtime.getHostBackend());
return callTarget;
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphCache.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphCache.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphCache.java Wed Mar 12 12:40:45 2014 -0700
@@ -34,6 +34,8 @@
import com.oracle.graal.nodes.*;
import com.oracle.graal.nodes.spi.*;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
/**
* This class implements the graph caching system for the HotSpot platform.
*
@@ -115,6 +117,7 @@
}
@Override
+ @SuppressFBWarnings(value = "VO_VOLATILE_INCREMENT", justification = "counters are only used for statistics")
public StructuredGraph get(ResolvedJavaMethod method) {
StructuredGraph result = (StructuredGraph) method.getCompilerStorage().get(this);
@@ -129,6 +132,7 @@
}
@Override
+ @SuppressFBWarnings(value = "VO_VOLATILE_INCREMENT", justification = "counters are only used for statistics")
public boolean put(StructuredGraph graph, boolean hasMatureProfilingInfo) {
assert graph.method() != null;
if (hasMatureProfilingInfo) {
@@ -160,6 +164,7 @@
}
}
+ @SuppressFBWarnings(value = "VO_VOLATILE_INCREMENT", justification = "counters are only used for statistics")
public void removeGraphs(long[] deoptedGraphs) {
for (long graphId : deoptedGraphs) {
WeakReference ref = cachedGraphIds.get(graphId);
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java Wed Mar 12 12:40:45 2014 -0700
@@ -120,8 +120,7 @@
HotSpotResolvedObjectType resolved = (HotSpotResolvedObjectType) holder;
return resolved.createField(name, type, offset, modifiers);
} else {
- // TODO this cast will not succeed
- return (ResolvedJavaField) new HotSpotUnresolvedField(holder, name, type);
+ throw GraalInternalError.shouldNotReachHere("unresolved field " + reflectionField);
}
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java Wed Mar 12 12:40:45 2014 -0700
@@ -84,7 +84,7 @@
@Override
public String toString() {
- return String.format("InstalledNmethod[method=%s, codeBlob=0x%x, isDefault=%b, name=]", method, getCodeBlob(), isDefault, name);
+ return String.format("InstalledNmethod[method=%s, codeBlob=0x%x, isDefault=%b, name=%s]", method, getCodeBlob(), isDefault, name);
}
@Override
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Wed Mar 12 12:40:45 2014 -0700
@@ -70,7 +70,10 @@
@Override
public ResolvedJavaType getArrayClass() {
- Class javaArrayMirror = kind == Kind.Void ? null : Array.newInstance(mirror(), 0).getClass();
+ if (kind == Kind.Void) {
+ return null;
+ }
+ Class> javaArrayMirror = Array.newInstance(mirror(), 0).getClass();
return HotSpotResolvedObjectType.fromClass(javaArrayMirror);
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.java.decompiler/src/com/oracle/graal/java/decompiler/Decompiler.java
--- a/graal/com.oracle.graal.java.decompiler/src/com/oracle/graal/java/decompiler/Decompiler.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.java.decompiler/src/com/oracle/graal/java/decompiler/Decompiler.java Wed Mar 12 12:40:45 2014 -0700
@@ -25,6 +25,7 @@
import java.io.*;
import java.util.*;
+import com.oracle.graal.graph.*;
import com.oracle.graal.java.decompiler.block.*;
import com.oracle.graal.nodes.*;
import com.oracle.graal.nodes.cfg.*;
@@ -55,9 +56,9 @@
schedule = new SchedulePhase();
schedule.apply(graph);
} catch (Throwable t) {
+ throw new GraalInternalError(t);
}
}
-
cfg = schedule.getCFG();
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeDisassembler.java
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeDisassembler.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeDisassembler.java Wed Mar 12 12:40:45 2014 -0700
@@ -141,7 +141,7 @@
desc = constant.toString();
}
if (!multiline) {
- desc.replaceAll("\\n", "");
+ desc = desc.replaceAll("\\n", "");
}
buf.append(String.format("#%-10d // %s", cpi, desc));
break;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Wed Mar 12 12:40:45 2014 -0700
@@ -54,7 +54,7 @@
* @param y the instruction that produces the second input to this instruction
*/
public CompareNode(ValueNode x, ValueNode y) {
- assert (x == null && y == null) || x.kind() == y.kind();
+ assert x != null && y != null && x.kind() == y.kind();
this.x = x;
this.y = y;
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Wed Mar 12 12:40:45 2014 -0700
@@ -53,7 +53,7 @@
* @param y the instruction that produces the second input to this instruction
*/
public IntegerTestNode(ValueNode x, ValueNode y) {
- assert (x == null && y == null) || x.stamp().isCompatible(y.stamp());
+ assert x != null && y != null && x.stamp().isCompatible(y.stamp());
this.x = x;
this.y = y;
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Wed Mar 12 12:40:45 2014 -0700
@@ -76,7 +76,7 @@
}
if (tool.canonicalizeReads()) {
if (metaAccess != null && object != null && object.isConstant()) {
- if ((location.getLocationIdentity() == LocationIdentity.FINAL_LOCATION || location.getLocationIdentity() == LocationIdentity.ARRAY_LENGTH_LOCATION) &
+ if ((location.getLocationIdentity() == LocationIdentity.FINAL_LOCATION || location.getLocationIdentity() == LocationIdentity.ARRAY_LENGTH_LOCATION) &&
location instanceof ConstantLocationNode) {
long displacement = ((ConstantLocationNode) location).getDisplacement();
Kind kind = location.getValueKind();
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java
--- a/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java Wed Mar 12 12:40:45 2014 -0700
@@ -172,7 +172,7 @@
String declaringClass = option.declaringClass;
Name fieldName = option.field.getSimpleName();
String comma = i == info.options.size() - 1 ? "" : ",";
- out.printf(" new %s(\"%s\", %s.class, \"%s\", %s.class, \"%s\", %s)%s\n", desc, name, type, help, declaringClass, fieldName, optionValue, comma);
+ out.printf(" new %s(\"%s\", %s.class, \"%s\", %s.class, \"%s\", %s)%s%n", desc, name, type, help, declaringClass, fieldName, optionValue, comma);
i++;
}
out.println(" );");
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Wed Mar 12 12:40:45 2014 -0700
@@ -66,7 +66,7 @@
new ConditionalElimination(graph.start(), new State()).apply();
}
- public static class State extends MergeableState {
+ public static class State extends MergeableState implements Cloneable {
private IdentityHashMap knownTypes;
private HashSet knownNonNull;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java Wed Mar 12 12:40:45 2014 -0700
@@ -37,7 +37,7 @@
*/
public class ValueAnchorCleanupPhase extends Phase {
- private static class State extends MergeableState {
+ private static class State extends MergeableState implements Cloneable {
private final HashSet anchoredValues;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ComputeProbabilityClosure.java
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ComputeProbabilityClosure.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ComputeProbabilityClosure.java Wed Mar 12 12:40:45 2014 -0700
@@ -169,7 +169,7 @@
public final NodeMap> requires;
- private double loopFrequency = -1;
+ private double loopFrequency = -1.0;
public boolean ended = false;
public LoopInfo(LoopBeginNode loopBegin) {
@@ -178,7 +178,8 @@
}
public double loopFrequency(NodesToDoubles nodeProbabilities) {
- if (loopFrequency == -1 && ended) {
+ // loopFrequency is initialized with -1.0
+ if (loopFrequency < 0.0 && ended) {
double backEdgeProb = 0.0;
for (LoopEndNode le : loopBegin.loopEnds()) {
double factor = 1;
@@ -219,7 +220,7 @@
return r;
}
- private class Probability extends MergeableState {
+ private class Probability extends MergeableState implements Cloneable {
public double probability;
public Set loops;
@@ -330,7 +331,7 @@
}
}
- private class LoopCount extends MergeableState {
+ private class LoopCount extends MergeableState implements Cloneable {
public double count;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/MergeableState.java
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/MergeableState.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/MergeableState.java Wed Mar 12 12:40:45 2014 -0700
@@ -62,7 +62,7 @@
// empty default implementation
}
- public static final class EmptyState extends MergeableState {
+ public static final class EmptyState extends MergeableState implements Cloneable {
@Override
public EmptyState clone() {
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraphPrinterDumpHandler.java
--- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraphPrinterDumpHandler.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraphPrinterDumpHandler.java Wed Mar 12 12:40:45 2014 -0700
@@ -86,7 +86,7 @@
// This field must be lazily initialized as this class may be loaded in a version
// VM startup phase at which not all required features (such as system properties)
// are online.
- private static SimpleDateFormat sdf;
+ private static volatile SimpleDateFormat sdf;
private void initializeFilePrinter() {
String ext;
@@ -98,7 +98,13 @@
if (sdf == null) {
sdf = new SimpleDateFormat("YYYY-MM-dd-HHmm");
}
- String prefix = "Graphs-" + Thread.currentThread().getName() + "-" + sdf.format(new Date());
+
+ // DateFormats are inherently unsafe for multi-threaded use. Use a synchronized block.
+ String prefix;
+ synchronized (sdf) {
+ prefix = "Graphs-" + Thread.currentThread().getName() + "-" + sdf.format(new Date());
+ }
+
String num = "";
File file;
int i = 0;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StringSubstitutions.java
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StringSubstitutions.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StringSubstitutions.java Wed Mar 12 12:40:45 2014 -0700
@@ -30,6 +30,8 @@
import com.oracle.graal.graph.*;
import com.oracle.graal.replacements.nodes.*;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
/**
* Substitutions for {@link java.lang.String} methods.
*/
@@ -51,6 +53,7 @@
}
@MethodSubstitution(isStatic = false)
+ @SuppressFBWarnings(value = "ES_COMPARING_PARAMETER_STRING_WITH_EQ", justification = "reference equality on the receiver is what we want")
public static boolean equals(final String thisString, Object obj) {
if (thisString == obj) {
return true;
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java Wed Mar 12 12:40:45 2014 -0700
@@ -59,7 +59,7 @@
@Override
public boolean equals(Object obj) {
- return obj.getClass() == getClass();
+ return obj instanceof TruffleDebugJavaMethod;
}
@Override
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java Wed Mar 12 12:40:45 2014 -0700
@@ -168,10 +168,10 @@
if (e.getLineNumber() >= 0) {
return String.format("(%s:%d)", e.getFileName(), e.getLineNumber());
} else {
- return String.format("(%s)", e.getFileName(), e.getLineNumber());
+ return String.format("(%s)", e.getFileName());
}
} else {
- return String.format("(Unknown Source)", e.getFileName(), e.getLineNumber());
+ return String.format("(Unknown Source)");
}
}
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationBlockState.java
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationBlockState.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationBlockState.java Wed Mar 12 12:40:45 2014 -0700
@@ -50,6 +50,9 @@
@Override
public boolean equals(Object obj) {
+ if (!(obj instanceof ReadCacheEntry)) {
+ return false;
+ }
ReadCacheEntry other = (ReadCacheEntry) obj;
return identity == other.identity && object == other.object;
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationBlockState.java
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationBlockState.java Wed Mar 12 13:36:23 2014 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationBlockState.java Wed Mar 12 12:40:45 2014 -0700
@@ -52,6 +52,9 @@
@Override
public boolean equals(Object obj) {
+ if (!(obj instanceof CacheEntry>)) {
+ return false;
+ }
CacheEntry> other = (CacheEntry>) obj;
return identity == other.identity && object == other.object;
}
diff -r 7668297a2e67 -r 8c4a3d9308a7 mx/projects
--- a/mx/projects Wed Mar 12 13:36:23 2014 +0100
+++ b/mx/projects Wed Mar 12 12:40:45 2014 -0700
@@ -13,6 +13,9 @@
library@CHECKSTYLE@path=lib/checkstyle-5.5-all.jar
library@CHECKSTYLE@urls=jar:http://sourceforge.net/projects/checkstyle/files/checkstyle/5.5/checkstyle-5.5-bin.zip/download!/checkstyle-5.5/checkstyle-5.5-all.jar
+library@FINDBUGS@path=lib/findbugs-3.0.0-dev-20131204-e3cbbd5.jar
+library@FINDBUGS@urls=jar:http://sourceforge.net/projects/findbugs/files/findbugs/3.0.0/findbugs-3.0.0-dev-20131204-e3cbbd5.zip/download!/findbugs-3.0.0-dev-20131204-e3cbbd5/lib/findbugs.jar
+
library@DACAPO@path=lib/dacapo-9.12-bach.jar
library@DACAPO@urls=http://softlayer.dl.sourceforge.net/project/dacapobench/9.12-bach/dacapo-9.12-bach.jar
@@ -230,7 +233,7 @@
# graal.graph
project@com.oracle.graal.graph@subDir=graal
project@com.oracle.graal.graph@sourceDirs=src
-project@com.oracle.graal.graph@dependencies=com.oracle.graal.debug,com.oracle.graal.api.code
+project@com.oracle.graal.graph@dependencies=FINDBUGS,com.oracle.graal.debug,com.oracle.graal.api.code
project@com.oracle.graal.graph@javaCompliance=1.7
project@com.oracle.graal.graph@workingSets=Graal,Graph