changeset 2877:9fcc456bbc18

merge
author Gilles Duboscq <gilles.duboscq@oracle.com>
date Wed, 08 Jun 2011 10:25:07 +0200
parents 7d7cf33f8466 (diff) d90bf514d647 (current diff)
children c779525b27ad
files graal/GraalCompiler/.checkstyle graal/GraalCompiler/.checkstyle_checks.xml graal/GraalCompiler/.classpath graal/GraalCompiler/.project graal/GraalCompiler/.settings/JavaSourceCodeFormatting.xml graal/GraalCompiler/.settings/org.eclipse.jdt.core.prefs graal/GraalCompiler/.settings/org.eclipse.jdt.ui.prefs graal/GraalCompiler/LICENSE graal/GraalCompiler/src/com/oracle/max/graal/opt/CanonicalizerPhase.java graal/GraalCompiler/src/com/oracle/max/graal/schedule/Block.java graal/GraalCompiler/src/com/oracle/max/graal/schedule/Schedule.java graal/GraalCompiler/src/com/sun/c1x/C1XCompilation.java graal/GraalCompiler/src/com/sun/c1x/C1XCompiler.java graal/GraalCompiler/src/com/sun/c1x/C1XMetrics.java graal/GraalCompiler/src/com/sun/c1x/C1XOptions.java graal/GraalCompiler/src/com/sun/c1x/C1XTimers.java graal/GraalCompiler/src/com/sun/c1x/alloc/ControlFlowOptimizer.java graal/GraalCompiler/src/com/sun/c1x/alloc/EdgeMoveOptimizer.java graal/GraalCompiler/src/com/sun/c1x/alloc/Interval.java graal/GraalCompiler/src/com/sun/c1x/alloc/IntervalWalker.java graal/GraalCompiler/src/com/sun/c1x/alloc/LIRInsertionBuffer.java graal/GraalCompiler/src/com/sun/c1x/alloc/LinearScan.java graal/GraalCompiler/src/com/sun/c1x/alloc/LinearScanWalker.java graal/GraalCompiler/src/com/sun/c1x/alloc/MoveResolver.java graal/GraalCompiler/src/com/sun/c1x/alloc/OperandPool.java graal/GraalCompiler/src/com/sun/c1x/alloc/Range.java graal/GraalCompiler/src/com/sun/c1x/alloc/RegisterVerifier.java graal/GraalCompiler/src/com/sun/c1x/asm/ExceptionInfo.java graal/GraalCompiler/src/com/sun/c1x/asm/TargetMethodAssembler.java graal/GraalCompiler/src/com/sun/c1x/debug/BlockPrinter.java graal/GraalCompiler/src/com/sun/c1x/debug/CFGPrinter.java graal/GraalCompiler/src/com/sun/c1x/debug/CFGPrinterObserver.java graal/GraalCompiler/src/com/sun/c1x/debug/GraphvizPrinterObserver.java graal/GraalCompiler/src/com/sun/c1x/debug/IdealGraphPrinter.java graal/GraalCompiler/src/com/sun/c1x/debug/IdealGraphPrinterObserver.java graal/GraalCompiler/src/com/sun/c1x/debug/InstructionPrinter.java graal/GraalCompiler/src/com/sun/c1x/debug/LogStream.java graal/GraalCompiler/src/com/sun/c1x/debug/TTY.java graal/GraalCompiler/src/com/sun/c1x/debug/package-info.java graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java graal/GraalCompiler/src/com/sun/c1x/gen/LIRItem.java graal/GraalCompiler/src/com/sun/c1x/gen/PhiResolver.java graal/GraalCompiler/src/com/sun/c1x/gen/PhiSimplifier.java graal/GraalCompiler/src/com/sun/c1x/gen/package-info.java graal/GraalCompiler/src/com/sun/c1x/globalstub/GlobalStub.java graal/GraalCompiler/src/com/sun/c1x/globalstub/GlobalStubEmitter.java graal/GraalCompiler/src/com/sun/c1x/graph/BlockMap.java graal/GraalCompiler/src/com/sun/c1x/graph/CompilerGraph.java graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java graal/GraalCompiler/src/com/sun/c1x/graph/IR.java graal/GraalCompiler/src/com/sun/c1x/graph/JSRNotSupportedBailout.java graal/GraalCompiler/src/com/sun/c1x/graph/MemoryMap.java graal/GraalCompiler/src/com/sun/c1x/graph/package-info.java graal/GraalCompiler/src/com/sun/c1x/ir/AccessArray.java graal/GraalCompiler/src/com/sun/c1x/ir/AccessField.java graal/GraalCompiler/src/com/sun/c1x/ir/AccessIndexed.java graal/GraalCompiler/src/com/sun/c1x/ir/AccessMonitor.java graal/GraalCompiler/src/com/sun/c1x/ir/Anchor.java graal/GraalCompiler/src/com/sun/c1x/ir/And.java graal/GraalCompiler/src/com/sun/c1x/ir/Arithmetic.java graal/GraalCompiler/src/com/sun/c1x/ir/ArrayLength.java graal/GraalCompiler/src/com/sun/c1x/ir/Binary.java graal/GraalCompiler/src/com/sun/c1x/ir/BlockClosure.java graal/GraalCompiler/src/com/sun/c1x/ir/BlockEnd.java graal/GraalCompiler/src/com/sun/c1x/ir/BlockList.java graal/GraalCompiler/src/com/sun/c1x/ir/CheckCast.java graal/GraalCompiler/src/com/sun/c1x/ir/Compare.java graal/GraalCompiler/src/com/sun/c1x/ir/ComputeLinearScanOrder.java graal/GraalCompiler/src/com/sun/c1x/ir/Condition.java graal/GraalCompiler/src/com/sun/c1x/ir/Conditional.java graal/GraalCompiler/src/com/sun/c1x/ir/Constant.java graal/GraalCompiler/src/com/sun/c1x/ir/Convert.java graal/GraalCompiler/src/com/sun/c1x/ir/Deoptimize.java graal/GraalCompiler/src/com/sun/c1x/ir/ExceptionDispatch.java graal/GraalCompiler/src/com/sun/c1x/ir/ExceptionEdgeInstruction.java graal/GraalCompiler/src/com/sun/c1x/ir/ExceptionObject.java graal/GraalCompiler/src/com/sun/c1x/ir/FixedNode.java graal/GraalCompiler/src/com/sun/c1x/ir/FloatAdd.java graal/GraalCompiler/src/com/sun/c1x/ir/FloatArithmetic.java graal/GraalCompiler/src/com/sun/c1x/ir/FloatDiv.java graal/GraalCompiler/src/com/sun/c1x/ir/FloatMul.java graal/GraalCompiler/src/com/sun/c1x/ir/FloatRem.java graal/GraalCompiler/src/com/sun/c1x/ir/FloatSub.java graal/GraalCompiler/src/com/sun/c1x/ir/FloatingNode.java graal/GraalCompiler/src/com/sun/c1x/ir/If.java graal/GraalCompiler/src/com/sun/c1x/ir/InstanceOf.java graal/GraalCompiler/src/com/sun/c1x/ir/Instruction.java graal/GraalCompiler/src/com/sun/c1x/ir/IntegerAdd.java graal/GraalCompiler/src/com/sun/c1x/ir/IntegerArithmetic.java graal/GraalCompiler/src/com/sun/c1x/ir/IntegerDiv.java graal/GraalCompiler/src/com/sun/c1x/ir/IntegerMul.java graal/GraalCompiler/src/com/sun/c1x/ir/IntegerRem.java graal/GraalCompiler/src/com/sun/c1x/ir/IntegerSub.java graal/GraalCompiler/src/com/sun/c1x/ir/Invoke.java graal/GraalCompiler/src/com/sun/c1x/ir/LeftShift.java graal/GraalCompiler/src/com/sun/c1x/ir/LoadField.java graal/GraalCompiler/src/com/sun/c1x/ir/LoadIndexed.java graal/GraalCompiler/src/com/sun/c1x/ir/Local.java graal/GraalCompiler/src/com/sun/c1x/ir/Logic.java graal/GraalCompiler/src/com/sun/c1x/ir/LookupSwitch.java graal/GraalCompiler/src/com/sun/c1x/ir/LoopBegin.java graal/GraalCompiler/src/com/sun/c1x/ir/LoopEnd.java graal/GraalCompiler/src/com/sun/c1x/ir/Merge.java graal/GraalCompiler/src/com/sun/c1x/ir/MonitorAddress.java graal/GraalCompiler/src/com/sun/c1x/ir/MonitorEnter.java graal/GraalCompiler/src/com/sun/c1x/ir/MonitorExit.java graal/GraalCompiler/src/com/sun/c1x/ir/Negate.java graal/GraalCompiler/src/com/sun/c1x/ir/NewArray.java graal/GraalCompiler/src/com/sun/c1x/ir/NewInstance.java graal/GraalCompiler/src/com/sun/c1x/ir/NewMultiArray.java graal/GraalCompiler/src/com/sun/c1x/ir/NewObjectArray.java graal/GraalCompiler/src/com/sun/c1x/ir/NewTypeArray.java graal/GraalCompiler/src/com/sun/c1x/ir/NormalizeCompare.java graal/GraalCompiler/src/com/sun/c1x/ir/NullCheck.java graal/GraalCompiler/src/com/sun/c1x/ir/Or.java graal/GraalCompiler/src/com/sun/c1x/ir/Phi.java graal/GraalCompiler/src/com/sun/c1x/ir/Placeholder.java graal/GraalCompiler/src/com/sun/c1x/ir/RegisterFinalizer.java graal/GraalCompiler/src/com/sun/c1x/ir/Return.java graal/GraalCompiler/src/com/sun/c1x/ir/RightShift.java graal/GraalCompiler/src/com/sun/c1x/ir/Shift.java graal/GraalCompiler/src/com/sun/c1x/ir/StateSplit.java graal/GraalCompiler/src/com/sun/c1x/ir/StoreField.java graal/GraalCompiler/src/com/sun/c1x/ir/StoreIndexed.java graal/GraalCompiler/src/com/sun/c1x/ir/Switch.java graal/GraalCompiler/src/com/sun/c1x/ir/TableSwitch.java graal/GraalCompiler/src/com/sun/c1x/ir/TypeCheck.java graal/GraalCompiler/src/com/sun/c1x/ir/UnsignedRightShift.java graal/GraalCompiler/src/com/sun/c1x/ir/Unwind.java graal/GraalCompiler/src/com/sun/c1x/ir/Value.java graal/GraalCompiler/src/com/sun/c1x/ir/ValueClosure.java graal/GraalCompiler/src/com/sun/c1x/ir/ValueVisitor.java graal/GraalCompiler/src/com/sun/c1x/ir/Xor.java graal/GraalCompiler/src/com/sun/c1x/ir/package-info.java graal/GraalCompiler/src/com/sun/c1x/lir/FrameMap.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRAssembler.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRBlock.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRBranch.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRCall.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRCompareAndSwap.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRConvert.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRDebugInfo.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRInstruction.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRLabel.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRList.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRMemoryBarrier.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRMonitorAddress.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRNegate.java graal/GraalCompiler/src/com/sun/c1x/lir/LIROp0.java graal/GraalCompiler/src/com/sun/c1x/lir/LIROp1.java graal/GraalCompiler/src/com/sun/c1x/lir/LIROp2.java graal/GraalCompiler/src/com/sun/c1x/lir/LIROp3.java graal/GraalCompiler/src/com/sun/c1x/lir/LIROpcode.java graal/GraalCompiler/src/com/sun/c1x/lir/LIROperand.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRSignificantBit.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRTableSwitch.java graal/GraalCompiler/src/com/sun/c1x/lir/LIRXirInstruction.java graal/GraalCompiler/src/com/sun/c1x/lir/package-info.java graal/GraalCompiler/src/com/sun/c1x/observer/CompilationEvent.java graal/GraalCompiler/src/com/sun/c1x/observer/CompilationObserver.java graal/GraalCompiler/src/com/sun/c1x/observer/ObservableCompiler.java graal/GraalCompiler/src/com/sun/c1x/observer/package-info.java graal/GraalCompiler/src/com/sun/c1x/package-info.java graal/GraalCompiler/src/com/sun/c1x/target/Backend.java graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64Backend.java graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64GlobalStubEmitter.java graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRAssembler.java graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRGenerator.java graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64XirAssembler.java graal/GraalCompiler/src/com/sun/c1x/util/ArrayMap.java graal/GraalCompiler/src/com/sun/c1x/util/BitMap2D.java graal/GraalCompiler/src/com/sun/c1x/util/BlockWorkList.java graal/GraalCompiler/src/com/sun/c1x/util/IntList.java graal/GraalCompiler/src/com/sun/c1x/util/Util.java graal/GraalCompiler/src/com/sun/c1x/value/FrameState.java graal/GraalCompiler/src/com/sun/c1x/value/FrameStateAccess.java graal/GraalCompiler/src/com/sun/c1x/value/FrameStateBuilder.java graal/GraalCompiler/src/com/sun/c1x/value/ValueUtil.java graal/GraalCompiler/src/com/sun/c1x/value/package-info.java graal/GraalGraph/.checkstyle graal/GraalGraph/.classpath graal/GraalGraph/.project graal/GraalGraph/.settings/org.eclipse.jdt.core.prefs graal/GraalGraph/.settings/org.eclipse.jdt.ui.prefs graal/GraalGraph/src/com/oracle/graal/graph/EdgeType.java graal/GraalGraph/src/com/oracle/graal/graph/Graph.java graal/GraalGraph/src/com/oracle/graal/graph/Node.java graal/GraalGraph/src/com/oracle/graal/graph/NodeArray.java graal/GraalGraph/src/com/oracle/graal/graph/NodeBitMap.java graal/GraalGraph/src/com/oracle/graal/graph/NodeIterator.java graal/GraalGraph/src/com/oracle/graal/graph/NodeMap.java graal/GraalGraph/src/com/oracle/graal/graph/NodeVisitor.java graal/GraalGraph/src/com/oracle/graal/graph/Op.java graal/GraalGraph/src/com/oracle/graal/graph/Phase.java graal/GraalGraph/src/com/oracle/graal/graph/StartNode.java graal/GraalGraph/src/com/oracle/graal/graph/package-info.java graal/GraalGraph/test/com/oracle/graal/graph/NodeTest.java graal/GraalGraphviz/.checkstyle graal/GraalGraphviz/.classpath graal/GraalGraphviz/.project graal/GraalGraphviz/.settings/org.eclipse.jdt.core.prefs graal/GraalGraphviz/.settings/org.eclipse.jdt.ui.prefs graal/GraalGraphviz/src/com/oracle/graal/graph/vis/GraphvizPrinter.java graal/GraalGraphviz/src/com/oracle/graal/graph/vis/GraphvizRunner.java graal/GraalGraphviz/test/com/oracle/graal/graph/vis/GraphvizTest.java graal/GraalRuntime/.checkstyle graal/GraalRuntime/.checkstyle_checks.xml graal/GraalRuntime/.classpath graal/GraalRuntime/.project graal/GraalRuntime/.settings/org.eclipse.jdt.core.prefs graal/GraalRuntime/.settings/org.eclipse.jdt.ui.prefs graal/GraalRuntime/README.txt graal/GraalRuntime/com_sun_hotspot_c1x_VMEntries.h graal/GraalRuntime/create_native_header.bat graal/GraalRuntime/src/com/oracle/graal/runtime/Compiler.java graal/GraalRuntime/src/com/oracle/graal/runtime/CompilerImpl.java graal/GraalRuntime/src/com/oracle/graal/runtime/CompilerObject.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotConstantPool.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotExceptionHandler.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotField.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotMethod.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotMethodResolved.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotMethodUnresolved.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotOptions.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotProxy.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotRegisterConfig.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotRuntime.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotSignature.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotTarget.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotTargetMethod.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotType.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotTypePrimitive.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotTypeResolved.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotTypeResolvedImpl.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotTypeUnresolved.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotVMConfig.java graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotXirGenerator.java graal/GraalRuntime/src/com/oracle/graal/runtime/InvocationSocket.java graal/GraalRuntime/src/com/oracle/graal/runtime/TemplateFlag.java graal/GraalRuntime/src/com/oracle/graal/runtime/VMEntries.java graal/GraalRuntime/src/com/oracle/graal/runtime/VMEntriesNative.java graal/GraalRuntime/src/com/oracle/graal/runtime/VMExits.java graal/GraalRuntime/src/com/oracle/graal/runtime/VMExitsNative.java graal/GraalRuntime/src/com/oracle/graal/runtime/logging/CountingProxy.java graal/GraalRuntime/src/com/oracle/graal/runtime/logging/Logger.java graal/GraalRuntime/src/com/oracle/graal/runtime/logging/LoggingProxy.java graal/GraalRuntime/src/com/oracle/graal/runtime/logging/package-info.java graal/GraalRuntime/src/com/oracle/graal/runtime/package-info.java graal/GraalRuntime/src/com/oracle/graal/runtime/server/CompilationServer.java graal/GraalRuntime/src/com/oracle/graal/runtime/server/Remote.java graal/GraalRuntime/src/com/oracle/graal/runtime/server/ReplacingStreams.java graal/GraalRuntime/src/com/oracle/graal/runtime/server/package-info.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/GraphBuilder.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Arithmetic.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatAdd.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatArithmetic.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatDiv.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatMul.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatRem.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatSub.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerAdd.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerArithmetic.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerDiv.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerMul.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerRem.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerSub.java graal/com.oracle.max.graal.graph/.checkstyle
diffstat 15 files changed, 620 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/GraphBuilder.java	Wed Jun 08 08:59:54 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/GraphBuilder.java	Wed Jun 08 10:25:07 2011 +0200
@@ -542,14 +542,36 @@
         genArithmeticOp(kind, opcode, false);
     }
 
-    private void genArithmeticOp(CiKind kind, int opcode, boolean canTrap) {
-        genArithmeticOp(kind, opcode, kind, kind, canTrap);
-    }
-
-    private void genArithmeticOp(CiKind result, int opcode, CiKind x, CiKind y, boolean canTrap) {
-        Value yValue = frameState.pop(y);
-        Value xValue = frameState.pop(x);
-        Value result1 = append(new Arithmetic(opcode, result, xValue, yValue, isStrict(method.accessFlags()), canTrap, graph));
+    private void genArithmeticOp(CiKind result, int opcode, boolean canTrap) {
+        Value y = frameState.pop(result);
+        Value x = frameState.pop(result);
+        boolean isStrictFP = isStrict(method.accessFlags());
+        Arithmetic v;
+        switch(opcode){
+            case IADD:
+            case LADD: v = new IntegerAdd(result, x, y, graph); break;
+            case FADD:
+            case DADD: v = new FloatAdd(result, x, y, isStrictFP, graph); break;
+            case ISUB:
+            case LSUB: v = new IntegerSub(result, x, y, graph); break;
+            case FSUB:
+            case DSUB: v = new FloatSub(result, x, y, isStrictFP, graph); break;
+            case IMUL:
+            case LMUL: v = new IntegerMul(result, x, y, graph); break;
+            case FMUL:
+            case DMUL: v = new FloatMul(result, x, y, isStrictFP, graph); break;
+            case IDIV:
+            case LDIV: v = new IntegerDiv(result, x, y, graph); break;
+            case FDIV:
+            case DDIV: v = new FloatDiv(result, x, y, isStrictFP, graph); break;
+            case IREM:
+            case LREM: v = new IntegerRem(result, x, y, graph); break;
+            case FREM:
+            case DREM: v = new FloatRem(result, x, y, isStrictFP, graph); break;
+            default:
+                throw new CiBailout("should not reach");
+        }
+        Value result1 = append(v);
         if (canTrap) {
             append(new ValueAnchor(result1, graph));
         }
@@ -613,7 +635,7 @@
         int delta = stream().readIncrement();
         Value x = frameState.localAt(index);
         Value y = append(Constant.forInt(delta, graph));
-        frameState.storeLocal(index, append(new Arithmetic(IADD, CiKind.Int, x, y, isStrict(method.accessFlags()), false, graph)));
+        frameState.storeLocal(index, append(new IntegerAdd(CiKind.Int, x, y, graph)));
     }
 
     private void genGoto(int fromBCI, int toBCI) {
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Arithmetic.java	Wed Jun 08 08:59:54 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Arithmetic.java	Wed Jun 08 10:25:07 2011 +0200
@@ -30,12 +30,11 @@
 /**
  * The {@code ArithmeticOp} class represents arithmetic operations such as addition, subtraction, etc.
  */
-public final class Arithmetic extends Binary {
+public abstract class Arithmetic extends Binary {
 
     private static final int INPUT_COUNT = 0;
     private static final int SUCCESSOR_COUNT = 0;
 
-    private final boolean canTrap;
     private final boolean isStrictFP;
 
     /**
@@ -47,10 +46,9 @@
      * @param isStrictFP indicates this operation has strict rounding semantics
      * @param stateBefore the state for instructions that may trap
      */
-    public Arithmetic(int opcode, CiKind kind, Value x, Value y, boolean isStrictFP, boolean canTrap, Graph graph) {
+    public Arithmetic(CiKind kind, int opcode, Value x, Value y, boolean isStrictFP, Graph graph) {
         super(kind, opcode, x, y, INPUT_COUNT, SUCCESSOR_COUNT, graph);
         this.isStrictFP = isStrictFP;
-        this.canTrap = canTrap;
     }
 
     /**
@@ -72,17 +70,9 @@
 
     @Override
     public void print(LogStream out) {
-        out.print(x()).print(' ').print(Bytecodes.operator(opcode)).print(' ').print(y());
+        out.print(x()).print(' ').print(this.shortName()).print(' ').print(y());
     }
 
     @Override
-    public String shortName() {
-        return Bytecodes.operator(opcode);
-    }
-
-    @Override
-    public Node copy(Graph into) {
-        Arithmetic x = new Arithmetic(opcode, kind, null, null, isStrictFP, canTrap, into);
-        return x;
-    }
+    public abstract String shortName();
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatAdd.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+public final class FloatAdd extends FloatArithmetic {
+
+    public FloatAdd(CiKind kind, Value x, Value y, boolean isStrictFP, Graph graph) {
+        super(kind, kind == CiKind.Double ? Bytecodes.DADD : Bytecodes.FADD, x, y, isStrictFP, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "+";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        FloatAdd x = new FloatAdd(kind, null, null, isStrictFP(), graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatArithmetic.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.ci.*;
+
+
+/**
+ *
+ */
+public abstract class FloatArithmetic extends Arithmetic {
+
+    /**
+     * @param opcode
+     * @param kind
+     * @param x
+     * @param y
+     * @param isStrictFP
+     * @param graph
+     */
+    public FloatArithmetic(CiKind kind, int opcode, Value x, Value y, boolean isStrictFP, Graph graph) {
+        super(kind, opcode, x, y, isStrictFP, graph);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatDiv.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+/**
+ *
+ */
+public final class FloatDiv extends FloatArithmetic {
+
+    /**
+     * @param opcode
+     * @param kind
+     * @param x
+     * @param y
+     * @param isStrictFP
+     * @param graph
+     */
+    public FloatDiv(CiKind kind, Value x, Value y, boolean isStrictFP, Graph graph) {
+        super(kind, kind == CiKind.Double ? Bytecodes.DDIV : Bytecodes.FDIV, x, y, isStrictFP, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "/";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        FloatDiv x = new FloatDiv(kind, null, null, isStrictFP(), graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatMul.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+/**
+ *
+ */
+public final class FloatMul extends FloatArithmetic {
+
+    /**
+     * @param opcode
+     * @param kind
+     * @param x
+     * @param y
+     * @param isStrictFP
+     * @param graph
+     */
+    public FloatMul(CiKind kind, Value x, Value y, boolean isStrictFP, Graph graph) {
+        super(kind, kind == CiKind.Double ? Bytecodes.DMUL : Bytecodes.FMUL, x, y, isStrictFP, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "*";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        FloatMul x = new FloatMul(kind, null, null, isStrictFP(), graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatRem.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+/**
+ *
+ */
+public final class FloatRem extends FloatArithmetic {
+
+    /**
+     * @param opcode
+     * @param kind
+     * @param x
+     * @param y
+     * @param isStrictFP
+     * @param graph
+     */
+    public FloatRem(CiKind kind, Value x, Value y, boolean isStrictFP, Graph graph) {
+        super(kind, kind == CiKind.Double ? Bytecodes.DREM : Bytecodes.FREM, x, y, isStrictFP, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "%";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        FloatRem x = new FloatRem(kind, null, null, isStrictFP(), graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FloatSub.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+public final class FloatSub extends FloatArithmetic {
+
+    public FloatSub(CiKind kind, Value x, Value y, boolean isStrictFP, Graph graph) {
+        super(kind, kind == CiKind.Double ? Bytecodes.DSUB : Bytecodes.FSUB, x, y, isStrictFP, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "-";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        FloatSub x = new FloatSub(kind, null, null, isStrictFP(), graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerAdd.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2011, 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+public final class IntegerAdd extends IntegerArithmetic {
+
+    public IntegerAdd(CiKind kind, Value x, Value y, Graph graph) {
+        super(kind, kind == CiKind.Int ? Bytecodes.IADD : Bytecodes.LADD, x, y, graph);
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        IntegerAdd x = new IntegerAdd(kind, null, null, graph());
+        return x;
+    }
+
+    @Override
+    public String shortName() {
+        return "+";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerArithmetic.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2011, 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.ci.*;
+
+
+public abstract class IntegerArithmetic extends Arithmetic {
+
+    public IntegerArithmetic(CiKind kind, int opcode, Value x, Value y, Graph graph) {
+        super(kind, opcode, x, y, false, graph);
+        assert kind == CiKind.Int || kind == CiKind.Long;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerDiv.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+public final class IntegerDiv extends IntegerArithmetic {
+
+    public IntegerDiv(CiKind kind, Value x, Value y, Graph graph) {
+        super(kind, kind == CiKind.Int ? Bytecodes.IDIV : Bytecodes.LDIV, x, y, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "/";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        IntegerDiv x = new IntegerDiv(kind, null, null, graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerMul.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+public final class IntegerMul extends IntegerArithmetic {
+
+    public IntegerMul(CiKind kind, Value x, Value y, Graph graph) {
+        super(kind, kind == CiKind.Int ? Bytecodes.IMUL : Bytecodes.LMUL, x, y, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "*";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        IntegerMul x = new IntegerMul(kind, null, null, graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerRem.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+public final class IntegerRem extends IntegerArithmetic {
+
+    public IntegerRem(CiKind kind, Value x, Value y, Graph graph) {
+        super(kind, kind == CiKind.Int ? Bytecodes.IREM : Bytecodes.LREM, x, y, graph);
+    }
+
+    @Override
+    public String shortName() {
+        return "%";
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        IntegerRem x = new IntegerRem(kind, null, null, graph());
+        return x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/IntegerSub.java	Wed Jun 08 10:25:07 2011 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.max.graal.compiler.ir;
+
+import com.oracle.max.graal.graph.*;
+import com.sun.cri.bytecode.*;
+import com.sun.cri.ci.*;
+
+
+public final class IntegerSub extends IntegerArithmetic {
+
+    public IntegerSub(CiKind kind, Value x, Value y, Graph graph) {
+        super(kind, kind == CiKind.Int ? Bytecodes.ISUB : Bytecodes.LSUB, x, y, graph);
+    }
+
+    @Override
+    public Node copy(Graph into) {
+        IntegerSub x = new IntegerSub(kind, null, null, graph());
+        return x;
+    }
+
+    @Override
+    public String shortName() {
+        return "-";
+    }
+}
--- a/graal/com.oracle.max.graal.graph/.checkstyle	Wed Jun 08 08:59:54 2011 +0200
+++ b/graal/com.oracle.max.graal.graph/.checkstyle	Wed Jun 08 10:25:07 2011 +0200
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
-  <local-check-config name="C1X Checkstyle checks" location="/GraalCompiler/.checkstyle_checks.xml" type="project" description="">
+  <local-check-config name="C1X Checkstyle checks" location="/com.oracle.max.graal.compiler/.checkstyle_checks.xml" type="project" description="">
     <additional-data name="protect-config-file" value="false"/>
   </local-check-config>
   <fileset name="all" enabled="true" check-config-name="C1X Checkstyle checks" local="true">