changeset 22604:b00cc0475f31

Update jvmci import: Refactoring: Rename Kind to JavaKind.
author Roland Schatz <roland.schatz@oracle.com>
date Tue, 08 Sep 2015 19:57:39 +0200
parents 6d339ba0edc5
children 71faa0701e26
files graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/BitOpsTest.java graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/IncrementDecrementMacroTest.java graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64MacroAssembler.java graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/ConstantStackMoveTest.java graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/StackStoreTest.java graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64AddressLowering.java graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/calc/Condition.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/AbstractObjectStamp.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/AbstractPointerStamp.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/ArithmeticOpTable.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IllegalStamp.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/Stamp.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/VoidStamp.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCAddressLowering.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/deopt/CompiledMethodTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/tutorial/StaticAnalysis.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/NodePlugin.java graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/AMD64HotSpotFrameOmissionTest.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCardTableAddressOp.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCardTableShiftOp.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEnterUnpackFramesStackFrameOp.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotForeignCallsProvider.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveCurrentStackFrameOp.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveUnpackFramesStackFrameOp.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotMove.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotSafepointOp.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallEpilogueOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotForeignCallsProvider.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedObjectTypeTest.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/InstalledCodeExecuteHelperTest.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/LoadJavaMirrorWithKlassTest.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCounterOp.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotInstructionProfiling.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNodePlugin.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotWordOperationPlugin.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ComputeObjectAddressNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/KlassPointerStamp.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowOopStamp.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySlowPathNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyUnrollNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopySnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypes.java graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/JTTTest.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ArrayEqualsOp.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Binary.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ByteSwapOp.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMap.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64MathIntrinsicOp.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/ConstantStackCastTest.java graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/LIRTest.java graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/StackMoveTest.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCFrameMap.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTestOp.java graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/GenericValueMapTest.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/LocationMarker.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/LocationMarkerPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMap.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/DefaultLIRKindTool.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/profiling/MoveProfiling.java graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/IntegerStampTest.java graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampMeetTest.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/NamedLocationIdentity.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNodeUtil.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCopyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/memory/address/OffsetAddressNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringProvider.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/UncheckedInterfaceProvider.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java graal/com.oracle.graal.phases.common.test/src/com/oracle/graal/phases/common/test/StampFactoryTest.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyUsageWithEquals.java graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathIntrinsicNode.java graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ObjectAccessTest.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PEGraphDecoderTest.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PointerTest.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/SubstitutionsTest.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/Log.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MethodHandlePlugin.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPlugin.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/PEGraphDecoder.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/WordOperationPlugin.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MethodHandleNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerAddExactNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulExactNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulHighNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerSubExactNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/UnsignedMulHighNode.java graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64RawNativeCallNodeFactory.java graal/com.oracle.graal.truffle.hotspot.sparc/src/com/oracle/graal/truffle/hotspot/sparc/SPARCOptimizedCallTargetInstumentationFactory.java graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionHandle.java graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/NativeCallStubGraphBuilder.java graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/RawNativeCallNodeFactory.java graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/ObjectLocationIdentity.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java graal/com.oracle.graal.word/src/com/oracle/graal/word/WordTypes.java graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java mx.graal/suite.py
diffstat 266 files changed, 2098 insertions(+), 2087 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -37,7 +37,7 @@
 public interface SnippetReflectionProvider {
 
     /**
-     * Creates a boxed {@link Kind#Object object} constant.
+     * Creates a boxed {@link JavaKind#Object object} constant.
      *
      * @param object the object value to box
      * @return a constant containing {@code object}
@@ -46,7 +46,7 @@
 
     /**
      * Gets the object reference a given constant represents if it is of a given type. The constant
-     * must have kind {@link Kind#Object}.
+     * must have kind {@link JavaKind#Object}.
      *
      * @param type the expected type of the object represented by {@code constant}. If the object is
      *            required to be of this type, then wrap the call to this method in
@@ -59,7 +59,7 @@
 
     /**
      * Gets the object reference a given constant represents if it is of a given type. The constant
-     * must have kind {@link Kind#Object}.
+     * must have kind {@link JavaKind#Object}.
      *
      * @param type the expected type of the object represented by {@code constant}. If the object is
      *            required to be of this type, then wrap the call to this method in
@@ -76,10 +76,10 @@
      * Java boxed type corresponding to the kind.
      *
      * @param kind the kind of the constant to create
-     * @param value the Java boxed value: a {@link Byte} instance for {@link Kind#Byte}, etc.
+     * @param value the Java boxed value: a {@link Byte} instance for {@link JavaKind#Byte}, etc.
      * @return the boxed copy of {@code value}
      */
-    JavaConstant forBoxed(Kind kind, Object value);
+    JavaConstant forBoxed(JavaKind kind, Object value);
 
     /**
      * Resolves a parameter or return type involved in snippet code to a {@link Class}.
@@ -102,8 +102,8 @@
             Class<?>[] parameterClasses = new Class<?>[parameterTypes.length];
             for (int i = 0; i < parameterClasses.length; ++i) {
                 JavaType type = parameterTypes[i];
-                if (type.getKind() != Kind.Object) {
-                    parameterClasses[i] = type.getKind().toJavaClass();
+                if (type.getJavaKind() != JavaKind.Object) {
+                    parameterClasses[i] = type.getJavaKind().toJavaClass();
                 } else {
                     parameterClasses[i] = resolveClassForSnippet(parameterTypes[i]);
                 }
--- a/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/BitOpsTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/BitOpsTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -62,7 +62,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     Register arg = asRegister(cc.getArgument(0));
                     LZCNT.emit(asm, DWORD, ret, arg);
                     asm.ret(0);
@@ -81,7 +81,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     try {
                         Field f = IntField.class.getDeclaredField("x");
                         AMD64Address arg = new AMD64Address(asRegister(cc.getArgument(0)), (int) unsafe.objectFieldOffset(f));
@@ -105,7 +105,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     Register arg = asRegister(cc.getArgument(0));
                     LZCNT.emit(asm, QWORD, ret, arg);
                     asm.ret(0);
@@ -124,7 +124,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     try {
                         Field f = LongField.class.getDeclaredField("x");
                         AMD64Address arg = new AMD64Address(asRegister(cc.getArgument(0)), (int) unsafe.objectFieldOffset(f));
@@ -148,7 +148,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     Register arg = asRegister(cc.getArgument(0));
                     TZCNT.emit(asm, DWORD, ret, arg);
                     asm.ret(0);
@@ -167,7 +167,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     try {
                         Field f = IntField.class.getDeclaredField("x");
                         AMD64Address arg = new AMD64Address(asRegister(cc.getArgument(0)), (int) unsafe.objectFieldOffset(f));
@@ -191,7 +191,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     Register arg = asRegister(cc.getArgument(0));
                     TZCNT.emit(asm, QWORD, ret, arg);
                     asm.ret(0);
@@ -210,7 +210,7 @@
                 @Override
                 public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                     AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                    Register ret = registerConfig.getReturnRegister(Kind.Int);
+                    Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                     try {
                         Field f = LongField.class.getDeclaredField("x");
                         AMD64Address arg = new AMD64Address(asRegister(cc.getArgument(0)), (int) unsafe.objectFieldOffset(f));
--- a/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/IncrementDecrementMacroTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/IncrementDecrementMacroTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -62,7 +62,7 @@
         @Override
         public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
             AMD64MacroAssembler asm = new AMD64MacroAssembler(target, registerConfig);
-            Register ret = registerConfig.getReturnRegister(Kind.Int);
+            Register ret = registerConfig.getReturnRegister(JavaKind.Int);
             try {
                 Field f = LongField.class.getDeclaredField("x");
                 AMD64Address arg = new AMD64Address(asRegister(cc.getArgument(0)), (int) unsafe.objectFieldOffset(f));
@@ -99,7 +99,7 @@
         @Override
         public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
             AMD64MacroAssembler asm = new AMD64MacroAssembler(target, registerConfig);
-            Register ret = registerConfig.getReturnRegister(Kind.Int);
+            Register ret = registerConfig.getReturnRegister(JavaKind.Int);
             try {
                 Field f = LongField.class.getDeclaredField("x");
                 AMD64Address arg = new AMD64Address(asRegister(cc.getArgument(0)), (int) unsafe.objectFieldOffset(f));
--- a/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -51,7 +51,7 @@
             @Override
             public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                 AMD64Assembler asm = new AMD64Assembler(target, registerConfig);
-                Register ret = registerConfig.getReturnRegister(Kind.Int);
+                Register ret = registerConfig.getReturnRegister(JavaKind.Int);
                 asm.movl(ret, 8472);
                 asm.ret(0);
                 return asm.close(true);
@@ -67,7 +67,7 @@
             @Override
             public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                 AMD64MacroAssembler asm = new AMD64MacroAssembler(target, registerConfig);
-                Register ret = registerConfig.getReturnRegister(Kind.Double);
+                Register ret = registerConfig.getReturnRegister(JavaKind.Double);
                 Data data = new Data(8, 8, DataBuilder.serializable(JavaConstant.forDouble(84.72)));
                 DataSectionReference ref = compResult.getDataSection().insertData(data);
                 compResult.recordDataPatch(asm.position(), ref);
@@ -86,7 +86,7 @@
             @Override
             public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                 AMD64MacroAssembler asm = new AMD64MacroAssembler(target, registerConfig);
-                Register ret = registerConfig.getReturnRegister(Kind.Double);
+                Register ret = registerConfig.getReturnRegister(JavaKind.Double);
 
                 byte[] rawBytes = new byte[8];
                 ByteBuffer.wrap(rawBytes).order(ByteOrder.nativeOrder()).putDouble(84.72);
--- a/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64MacroAssembler.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64MacroAssembler.java	Tue Sep 08 19:57:39 2015 +0200
@@ -306,7 +306,7 @@
     private AMD64Address trigPrologue(Register value) {
         assert value.getRegisterCategory().equals(AMD64.XMM);
         AMD64Address tmp = new AMD64Address(AMD64.rsp);
-        subq(AMD64.rsp, target.getSizeInBytes(Kind.Double));
+        subq(AMD64.rsp, target.getSizeInBytes(JavaKind.Double));
         movdbl(tmp, value);
         fldd(tmp);
         return tmp;
@@ -316,6 +316,6 @@
         assert dest.getRegisterCategory().equals(AMD64.XMM);
         fstpd(tmp);
         movdbl(dest, tmp);
-        addq(AMD64.rsp, target.getSizeInBytes(Kind.Double));
+        addq(AMD64.rsp, target.getSizeInBytes(JavaKind.Double));
     }
 }
--- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java	Tue Sep 08 19:57:39 2015 +0200
@@ -571,10 +571,10 @@
             return operator;
         }
 
-        public static CC forKind(Kind kind) {
-            boolean isInt = kind == Kind.Boolean || kind == Kind.Byte || kind == Kind.Char || kind == Kind.Short || kind == Kind.Int;
-            boolean isFloat = kind == Kind.Float || kind == Kind.Double;
-            boolean isLong = kind == Kind.Long || kind == Kind.Object;
+        public static CC forKind(JavaKind kind) {
+            boolean isInt = kind == JavaKind.Boolean || kind == JavaKind.Byte || kind == JavaKind.Char || kind == JavaKind.Short || kind == JavaKind.Int;
+            boolean isFloat = kind == JavaKind.Float || kind == JavaKind.Double;
+            boolean isLong = kind == JavaKind.Long || kind == JavaKind.Object;
             assert isInt || isFloat || isLong;
             if (isLong) {
                 return Xcc;
@@ -1443,7 +1443,7 @@
 
     public static boolean isSimm13(JavaConstant constant) {
         long bits;
-        switch (constant.getKind()) {
+        switch (constant.getJavaKind()) {
             case Double:
                 bits = Double.doubleToRawLongBits(constant.asDouble());
                 break;
--- a/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/ConstantStackMoveTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/ConstantStackMoveTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -51,7 +51,7 @@
             FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder();
             // create slots
             PrimitiveConstant constantValue = JavaConstant.forBoxedPrimitive(primitive);
-            StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(gen.target().getLIRKind(constantValue.getKind()));
+            StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(gen.target().getLIRKind(constantValue.getJavaKind()));
             // move stuff around
             gen.emitMoveConstant(s1, constantValue);
             gen.emitBlackhole(s1);
--- a/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/StackStoreTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/StackStoreTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -45,7 +45,7 @@
             FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder();
             // create slots
             StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind());
-            StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(Kind.Short));
+            StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(JavaKind.Short));
             // move stuff around
             gen.emitMove(s1, a);
             gen.emitMoveConstant(s2, JavaConstant.forShort(Short.MIN_VALUE));
@@ -61,10 +61,10 @@
             FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder();
             // create slots
             StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind());
-            StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(Kind.Short));
+            StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(JavaKind.Short));
             // move stuff around
             gen.emitMove(s1, a);
-            Value v = gen.emitLoadConstant(LIRKind.value(Kind.Short), JavaConstant.forShort(Short.MIN_VALUE));
+            Value v = gen.emitLoadConstant(LIRKind.value(JavaKind.Short), JavaConstant.forShort(Short.MIN_VALUE));
             gen.emitMove(s2, v);
             setResult(gen.emitMove(s1));
             gen.emitBlackhole(s1);
@@ -78,7 +78,7 @@
             FrameMapBuilder frameMapBuilder = gen.getResult().getFrameMapBuilder();
             // create slots
             StackSlotValue s1 = frameMapBuilder.allocateSpillSlot(a.getLIRKind());
-            StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(Kind.Short));
+            StackSlotValue s2 = frameMapBuilder.allocateSpillSlot(LIRKind.value(JavaKind.Short));
             // move stuff around
             gen.emitMoveConstant(s2, JavaConstant.forShort(Short.MIN_VALUE));
             gen.emitMove(s1, a);
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64AddressLowering.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64AddressLowering.java	Tue Sep 08 19:57:39 2015 +0200
@@ -141,7 +141,7 @@
     }
 
     private ValueNode improveConstDisp(AMD64AddressNode address, ValueNode original, JavaConstant c, ValueNode other, int shift) {
-        if (c.getKind().isNumericInteger() && !codeCache.needsDataPatch(c)) {
+        if (c.getJavaKind().isNumericInteger() && !codeCache.needsDataPatch(c)) {
             long disp = address.getDisplacement();
             disp += c.asLong() << shift;
             if (NumUtil.isInt(disp)) {
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Tue Sep 08 19:57:39 2015 +0200
@@ -84,7 +84,7 @@
  */
 public abstract class AMD64LIRGenerator extends LIRGenerator implements AMD64ArithmeticLIRGenerator {
 
-    private static final RegisterValue RCX_I = AMD64.rcx.asValue(LIRKind.value(Kind.Int));
+    private static final RegisterValue RCX_I = AMD64.rcx.asValue(LIRKind.value(JavaKind.Int));
     private AMD64SpillMoveFactory moveFactory;
     private Map<PlatformKind.Key, RegisterBackupPair> categorized;
 
@@ -129,7 +129,7 @@
 
     @Override
     public boolean canInlineConstant(JavaConstant c) {
-        switch (c.getKind()) {
+        switch (c.getJavaKind()) {
             case Long:
                 return NumUtil.isInt(c.asLong()) && !getCodeCache().needsDataPatch(c);
             case Object:
@@ -149,7 +149,7 @@
      */
     protected final boolean canStoreConstant(JavaConstant c) {
         // there is no immediate move of 64-bit constants on Intel
-        switch (c.getKind()) {
+        switch (c.getJavaKind()) {
             case Long:
                 return Util.isInt(c.asLong()) && !getCodeCache().needsDataPatch(c);
             case Double:
@@ -167,9 +167,9 @@
         } else if (isJavaConstant(src)) {
             return createMoveConstant(dst, asJavaConstant(src));
         } else if (isRegister(src) || isStackSlotValue(dst)) {
-            return new MoveFromRegOp((Kind) dst.getPlatformKind(), dst, (AllocatableValue) src);
+            return new MoveFromRegOp((JavaKind) dst.getPlatformKind(), dst, (AllocatableValue) src);
         } else {
-            return new MoveToRegOp((Kind) dst.getPlatformKind(), dst, (AllocatableValue) src);
+            return new MoveToRegOp((JavaKind) dst.getPlatformKind(), dst, (AllocatableValue) src);
         }
     }
 
@@ -265,8 +265,8 @@
     }
 
     private static LIRKind toStackKind(LIRKind kind) {
-        if (kind.getPlatformKind() instanceof Kind) {
-            Kind stackKind = ((Kind) kind.getPlatformKind()).getStackKind();
+        if (kind.getPlatformKind() instanceof JavaKind) {
+            JavaKind stackKind = ((JavaKind) kind.getPlatformKind()).getStackKind();
             return kind.changeType(stackKind);
         } else {
             return kind;
@@ -277,7 +277,7 @@
     public Variable emitLoad(LIRKind kind, Value address, LIRFrameState state) {
         AMD64AddressValue loadAddress = asAddressValue(address);
         Variable result = newVariable(toStackKind(kind));
-        switch ((Kind) kind.getPlatformKind()) {
+        switch ((JavaKind) kind.getPlatformKind()) {
             case Boolean:
                 append(new AMD64Unary.MemoryOp(MOVZXB, DWORD, result, loadAddress, state));
                 break;
@@ -309,11 +309,11 @@
         return result;
     }
 
-    protected void emitStoreConst(Kind kind, AMD64AddressValue address, ConstantValue value, LIRFrameState state) {
+    protected void emitStoreConst(JavaKind kind, AMD64AddressValue address, ConstantValue value, LIRFrameState state) {
         JavaConstant c = (JavaConstant) value.getConstant();
         if (c.isNull()) {
-            assert kind == Kind.Int || kind == Kind.Long || kind == Kind.Object;
-            OperandSize size = kind == Kind.Int ? DWORD : QWORD;
+            assert kind == JavaKind.Int || kind == JavaKind.Long || kind == JavaKind.Object;
+            OperandSize size = kind == JavaKind.Int ? DWORD : QWORD;
             append(new AMD64BinaryConsumer.MemoryConstOp(AMD64MIOp.MOV, size, address, 0, state));
         } else {
             AMD64MIOp op = AMD64MIOp.MOV;
@@ -360,7 +360,7 @@
         }
     }
 
-    protected void emitStore(Kind kind, AMD64AddressValue address, AllocatableValue value, LIRFrameState state) {
+    protected void emitStore(JavaKind kind, AMD64AddressValue address, AllocatableValue value, LIRFrameState state) {
         switch (kind) {
             case Boolean:
             case Byte:
@@ -391,7 +391,7 @@
     @Override
     public void emitStore(LIRKind lirKind, Value address, Value input, LIRFrameState state) {
         AMD64AddressValue storeAddress = asAddressValue(address);
-        Kind kind = (Kind) lirKind.getPlatformKind();
+        JavaKind kind = (JavaKind) lirKind.getPlatformKind();
         if (isJavaConstant(input)) {
             emitStoreConst(kind, storeAddress, asConstantValue(input), state);
         } else {
@@ -403,7 +403,7 @@
     public Variable emitCompareAndSwap(Value address, Value expectedValue, Value newValue, Value trueValue, Value falseValue) {
         LIRKind kind = newValue.getLIRKind();
         assert kind.equals(expectedValue.getLIRKind());
-        Kind memKind = (Kind) kind.getPlatformKind();
+        JavaKind memKind = (JavaKind) kind.getPlatformKind();
 
         AMD64AddressValue addressValue = asAddressValue(address);
         RegisterValue raxRes = AMD64.rax.asValue(kind);
@@ -419,7 +419,7 @@
     @Override
     public Value emitAtomicReadAndAdd(Value address, Value delta) {
         LIRKind kind = delta.getLIRKind();
-        Kind memKind = (Kind) kind.getPlatformKind();
+        JavaKind memKind = (JavaKind) kind.getPlatformKind();
         Variable result = newVariable(kind);
         AMD64AddressValue addressValue = asAddressValue(address);
         append(new AMD64Move.AtomicReadAndAddOp(memKind, result, addressValue, asAllocatable(delta)));
@@ -429,7 +429,7 @@
     @Override
     public Value emitAtomicReadAndWrite(Value address, Value newValue) {
         LIRKind kind = newValue.getLIRKind();
-        Kind memKind = (Kind) kind.getPlatformKind();
+        JavaKind memKind = (JavaKind) kind.getPlatformKind();
         Variable result = newVariable(kind);
         AMD64AddressValue addressValue = asAddressValue(address);
         append(new AMD64Move.AtomicReadAndWriteOp(memKind, result, addressValue, asAllocatable(newValue)));
@@ -438,7 +438,7 @@
 
     @Override
     public void emitNullCheck(Value address, LIRFrameState state) {
-        assert address.getPlatformKind() == Kind.Object || address.getPlatformKind() == Kind.Long : address + " - " + address.getPlatformKind() + " not a pointer!";
+        assert address.getPlatformKind() == JavaKind.Object || address.getPlatformKind() == JavaKind.Long : address + " - " + address.getPlatformKind() + " not a pointer!";
         append(new AMD64Move.NullCheckOp(asAddressValue(address), state));
     }
 
@@ -452,18 +452,18 @@
     public void emitCompareBranch(PlatformKind cmpKind, Value left, Value right, Condition cond, boolean unorderedIsTrue, LabelRef trueLabel, LabelRef falseLabel, double trueLabelProbability) {
         boolean mirrored = emitCompare(cmpKind, left, right);
         Condition finalCondition = mirrored ? cond.mirror() : cond;
-        if (cmpKind == Kind.Float || cmpKind == Kind.Double) {
+        if (cmpKind == JavaKind.Float || cmpKind == JavaKind.Double) {
             append(new FloatBranchOp(finalCondition, unorderedIsTrue, trueLabel, falseLabel, trueLabelProbability));
         } else {
             append(new BranchOp(finalCondition, trueLabel, falseLabel, trueLabelProbability));
         }
     }
 
-    public void emitCompareBranchMemory(Kind cmpKind, Value left, AMD64AddressValue right, LIRFrameState state, Condition cond, boolean unorderedIsTrue, LabelRef trueLabel, LabelRef falseLabel,
+    public void emitCompareBranchMemory(JavaKind cmpKind, Value left, AMD64AddressValue right, LIRFrameState state, Condition cond, boolean unorderedIsTrue, LabelRef trueLabel, LabelRef falseLabel,
                     double trueLabelProbability) {
         boolean mirrored = emitCompareMemory(cmpKind, left, right, state);
         Condition finalCondition = mirrored ? cond.mirror() : cond;
-        if (cmpKind == Kind.Float || cmpKind == Kind.Double) {
+        if (cmpKind == JavaKind.Float || cmpKind == JavaKind.Double) {
             append(new FloatBranchOp(finalCondition, unorderedIsTrue, trueLabel, falseLabel, trueLabelProbability));
         } else {
             append(new BranchOp(finalCondition, trueLabel, falseLabel, trueLabelProbability));
@@ -487,7 +487,7 @@
         Condition finalCondition = mirrored ? cond.mirror() : cond;
 
         Variable result = newVariable(trueValue.getLIRKind());
-        if (cmpKind == Kind.Float || cmpKind == Kind.Double) {
+        if (cmpKind == JavaKind.Float || cmpKind == JavaKind.Double) {
             append(new FloatCondMoveOp(result, finalCondition, unorderedIsTrue, load(trueValue), load(falseValue)));
         } else {
             append(new CondMoveOp(result, finalCondition, load(trueValue), loadNonConst(falseValue)));
@@ -504,8 +504,8 @@
     }
 
     private void emitIntegerTest(Value a, Value b) {
-        assert ((Kind) a.getPlatformKind()).isNumericInteger();
-        OperandSize size = (Kind) a.getPlatformKind() == Kind.Long ? QWORD : DWORD;
+        assert ((JavaKind) a.getPlatformKind()).isNumericInteger();
+        OperandSize size = (JavaKind) a.getPlatformKind() == JavaKind.Long ? QWORD : DWORD;
         if (isJavaConstant(b) && NumUtil.is32bit(asJavaConstant(b).asLong())) {
             append(new AMD64BinaryConsumer.ConstOp(AMD64MIOp.TEST, size, asAllocatable(a), (int) asJavaConstant(b).asLong()));
         } else if (isJavaConstant(a) && NumUtil.is32bit(asJavaConstant(a).asLong())) {
@@ -519,7 +519,7 @@
 
     protected void emitCompareOp(PlatformKind cmpKind, Variable left, Value right) {
         OperandSize size;
-        switch ((Kind) cmpKind) {
+        switch ((JavaKind) cmpKind) {
             case Byte:
             case Boolean:
                 size = BYTE;
@@ -568,7 +568,7 @@
      * @param b the right operand of the comparison
      * @return true if the left and right operands were switched, false otherwise
      */
-    private boolean emitCompareMemory(Kind cmpKind, Value a, AMD64AddressValue b, LIRFrameState state) {
+    private boolean emitCompareMemory(JavaKind cmpKind, Value a, AMD64AddressValue b, LIRFrameState state) {
         OperandSize size;
         switch (cmpKind) {
             case Byte:
@@ -648,7 +648,7 @@
     public Variable emitNegate(Value inputVal) {
         AllocatableValue input = asAllocatable(inputVal);
         Variable result = newVariable(LIRKind.combine(input));
-        switch ((Kind) input.getPlatformKind()) {
+        switch ((JavaKind) input.getPlatformKind()) {
             case Int:
                 append(new AMD64Unary.MOp(NEG, DWORD, result, input));
                 break;
@@ -671,7 +671,7 @@
     public Variable emitNot(Value inputVal) {
         AllocatableValue input = asAllocatable(inputVal);
         Variable result = newVariable(LIRKind.combine(input));
-        switch ((Kind) input.getPlatformKind()) {
+        switch ((JavaKind) input.getPlatformKind()) {
             case Int:
                 append(new AMD64Unary.MOp(NOT, DWORD, result, input));
                 break;
@@ -762,7 +762,7 @@
 
     @Override
     public Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, ADD, DWORD, true, a, b, setFlags);
             case Long:
@@ -778,7 +778,7 @@
 
     @Override
     public Variable emitSub(LIRKind resultKind, Value a, Value b, boolean setFlags) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, SUB, DWORD, false, a, b, setFlags);
             case Long:
@@ -823,7 +823,7 @@
 
     @Override
     public Variable emitMul(Value a, Value b, boolean setFlags) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitIMUL(DWORD, a, b);
             case Long:
@@ -850,7 +850,7 @@
 
     @Override
     public Value emitMulHigh(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitMulHigh(AMD64MOp.IMUL, DWORD, a, b);
             case Long:
@@ -862,7 +862,7 @@
 
     @Override
     public Value emitUMulHigh(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitMulHigh(AMD64MOp.MUL, DWORD, a, b);
             case Long:
@@ -884,10 +884,10 @@
         return result;
     }
 
-    protected Value emitZeroExtendMemory(Kind memoryKind, int resultBits, AMD64AddressValue address, LIRFrameState state) {
+    protected Value emitZeroExtendMemory(JavaKind memoryKind, int resultBits, AMD64AddressValue address, LIRFrameState state) {
         // Issue a zero extending load of the proper bit size and set the result to
         // the proper kind.
-        Variable result = newVariable(LIRKind.value(resultBits == 32 ? Kind.Int : Kind.Long));
+        Variable result = newVariable(LIRKind.value(resultBits == 32 ? JavaKind.Int : JavaKind.Long));
         switch (memoryKind) {
             case Boolean:
             case Byte:
@@ -927,7 +927,7 @@
 
     public Value[] emitIntegerDivRem(Value a, Value b, LIRFrameState state) {
         AMD64MulDivOp op;
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 op = emitIDIV(DWORD, a, b, state);
                 break;
@@ -942,7 +942,7 @@
 
     @Override
     public Value emitDiv(Value a, Value b, LIRFrameState state) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 AMD64MulDivOp op = emitIDIV(DWORD, a, b, state);
                 return emitMove(op.getQuotient());
@@ -960,7 +960,7 @@
 
     @Override
     public Value emitRem(Value a, Value b, LIRFrameState state) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 AMD64MulDivOp op = emitIDIV(DWORD, a, b, state);
                 return emitMove(op.getRemainder());
@@ -985,7 +985,7 @@
     @Override
     public Variable emitUDiv(Value a, Value b, LIRFrameState state) {
         AMD64MulDivOp op;
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 op = emitDIV(DWORD, a, b, state);
                 break;
@@ -1001,7 +1001,7 @@
     @Override
     public Variable emitURem(Value a, Value b, LIRFrameState state) {
         AMD64MulDivOp op;
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 op = emitDIV(DWORD, a, b, state);
                 break;
@@ -1017,7 +1017,7 @@
     @Override
     public Variable emitAnd(Value a, Value b) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, AND, DWORD, true, a, b, false);
             case Long:
@@ -1034,7 +1034,7 @@
     @Override
     public Variable emitOr(Value a, Value b) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, OR, DWORD, true, a, b, false);
             case Long:
@@ -1051,7 +1051,7 @@
     @Override
     public Variable emitXor(Value a, Value b) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, XOR, DWORD, true, a, b, false);
             case Long:
@@ -1088,7 +1088,7 @@
 
     @Override
     public Variable emitShl(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(SHL, DWORD, a, b);
             case Long:
@@ -1100,7 +1100,7 @@
 
     @Override
     public Variable emitShr(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(SAR, DWORD, a, b);
             case Long:
@@ -1112,7 +1112,7 @@
 
     @Override
     public Variable emitUShr(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(SHR, DWORD, a, b);
             case Long:
@@ -1123,7 +1123,7 @@
     }
 
     public Variable emitRol(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(ROL, DWORD, a, b);
             case Long:
@@ -1134,7 +1134,7 @@
     }
 
     public Variable emitRor(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(ROR, DWORD, a, b);
             case Long:
@@ -1168,8 +1168,8 @@
          * Conversions between integer to floating point types require moves between CPU and FPU
          * registers.
          */
-        Kind fromKind = (Kind) from.getPlatformKind();
-        switch ((Kind) to.getPlatformKind()) {
+        JavaKind fromKind = (JavaKind) from.getPlatformKind();
+        switch ((JavaKind) to.getPlatformKind()) {
             case Int:
                 switch (fromKind) {
                     case Float:
@@ -1201,25 +1201,25 @@
     public Value emitFloatConvert(FloatConvert op, Value input) {
         switch (op) {
             case D2F:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Float), SSEOp.CVTSD2SS, SD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Float), SSEOp.CVTSD2SS, SD, input);
             case D2I:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Int), SSEOp.CVTTSD2SI, DWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Int), SSEOp.CVTTSD2SI, DWORD, input);
             case D2L:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Long), SSEOp.CVTTSD2SI, QWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Long), SSEOp.CVTTSD2SI, QWORD, input);
             case F2D:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Double), SSEOp.CVTSS2SD, SS, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Double), SSEOp.CVTSS2SD, SS, input);
             case F2I:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Int), SSEOp.CVTTSS2SI, DWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Int), SSEOp.CVTTSS2SI, DWORD, input);
             case F2L:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Long), SSEOp.CVTTSS2SI, QWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Long), SSEOp.CVTTSS2SI, QWORD, input);
             case I2D:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Double), SSEOp.CVTSI2SD, DWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Double), SSEOp.CVTSI2SD, DWORD, input);
             case I2F:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Float), SSEOp.CVTSI2SS, DWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Float), SSEOp.CVTSI2SS, DWORD, input);
             case L2D:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Double), SSEOp.CVTSI2SD, QWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Double), SSEOp.CVTSI2SD, QWORD, input);
             case L2F:
-                return emitConvertOp(LIRKind.combine(input).changeType(Kind.Float), SSEOp.CVTSI2SS, QWORD, input);
+                return emitConvertOp(LIRKind.combine(input).changeType(JavaKind.Float), SSEOp.CVTSI2SS, QWORD, input);
             default:
                 throw JVMCIError.shouldNotReachHere();
         }
@@ -1227,9 +1227,9 @@
 
     @Override
     public Value emitNarrow(Value inputVal, int bits) {
-        if (inputVal.getPlatformKind() == Kind.Long && bits <= 32) {
+        if (inputVal.getPlatformKind() == JavaKind.Long && bits <= 32) {
             // TODO make it possible to reinterpret Long as Int in LIR without move
-            return emitConvertOp(LIRKind.combine(inputVal).changeType(Kind.Int), AMD64RMOp.MOV, DWORD, inputVal);
+            return emitConvertOp(LIRKind.combine(inputVal).changeType(JavaKind.Int), AMD64RMOp.MOV, DWORD, inputVal);
         } else {
             return inputVal;
         }
@@ -1244,11 +1244,11 @@
             // sign extend to 64 bits
             switch (fromBits) {
                 case 8:
-                    return emitConvertOp(LIRKind.combine(inputVal).changeType(Kind.Long), MOVSXB, QWORD, inputVal);
+                    return emitConvertOp(LIRKind.combine(inputVal).changeType(JavaKind.Long), MOVSXB, QWORD, inputVal);
                 case 16:
-                    return emitConvertOp(LIRKind.combine(inputVal).changeType(Kind.Long), MOVSX, QWORD, inputVal);
+                    return emitConvertOp(LIRKind.combine(inputVal).changeType(JavaKind.Long), MOVSX, QWORD, inputVal);
                 case 32:
-                    return emitConvertOp(LIRKind.combine(inputVal).changeType(Kind.Long), MOVSXD, QWORD, inputVal);
+                    return emitConvertOp(LIRKind.combine(inputVal).changeType(JavaKind.Long), MOVSXD, QWORD, inputVal);
                 default:
                     throw JVMCIError.unimplemented("unsupported sign extension (" + fromBits + " bit -> " + toBits + " bit)");
             }
@@ -1256,9 +1256,9 @@
             // sign extend to 32 bits (smaller values are internally represented as 32 bit values)
             switch (fromBits) {
                 case 8:
-                    return emitConvertOp(LIRKind.combine(inputVal).changeType(Kind.Int), MOVSXB, DWORD, inputVal);
+                    return emitConvertOp(LIRKind.combine(inputVal).changeType(JavaKind.Int), MOVSXB, DWORD, inputVal);
                 case 16:
-                    return emitConvertOp(LIRKind.combine(inputVal).changeType(Kind.Int), MOVSX, DWORD, inputVal);
+                    return emitConvertOp(LIRKind.combine(inputVal).changeType(JavaKind.Int), MOVSX, DWORD, inputVal);
                 case 32:
                     return inputVal;
                 default:
@@ -1273,19 +1273,19 @@
         if (fromBits == toBits) {
             return inputVal;
         } else if (fromBits > 32) {
-            assert inputVal.getPlatformKind() == Kind.Long;
-            Variable result = newVariable(LIRKind.combine(inputVal).changeType(Kind.Long));
+            assert inputVal.getPlatformKind() == JavaKind.Long;
+            Variable result = newVariable(LIRKind.combine(inputVal).changeType(JavaKind.Long));
             long mask = CodeUtil.mask(fromBits);
             append(new AMD64Binary.DataOp(AND.getRMOpcode(QWORD), QWORD, result, asAllocatable(inputVal), JavaConstant.forLong(mask)));
             return result;
         } else {
-            assert ((Kind) inputVal.getPlatformKind()).getStackKind() == Kind.Int;
+            assert ((JavaKind) inputVal.getPlatformKind()).getStackKind() == JavaKind.Int;
 
             LIRKind resultKind = LIRKind.combine(inputVal);
             if (toBits > 32) {
-                resultKind = resultKind.changeType(Kind.Long);
+                resultKind = resultKind.changeType(JavaKind.Long);
             } else {
-                resultKind = resultKind.changeType(Kind.Int);
+                resultKind = resultKind.changeType(JavaKind.Int);
             }
 
             /*
@@ -1338,8 +1338,8 @@
 
     @Override
     public Variable emitBitCount(Value value) {
-        Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int));
-        if (value.getPlatformKind() == Kind.Long) {
+        Variable result = newVariable(LIRKind.combine(value).changeType(JavaKind.Int));
+        if (value.getPlatformKind() == JavaKind.Long) {
             append(new AMD64Unary.RMOp(POPCNT, QWORD, result, asAllocatable(value)));
         } else {
             append(new AMD64Unary.RMOp(POPCNT, DWORD, result, asAllocatable(value)));
@@ -1349,15 +1349,15 @@
 
     @Override
     public Variable emitBitScanForward(Value value) {
-        Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int));
+        Variable result = newVariable(LIRKind.combine(value).changeType(JavaKind.Int));
         append(new AMD64Unary.RMOp(BSF, QWORD, result, asAllocatable(value)));
         return result;
     }
 
     @Override
     public Variable emitBitScanReverse(Value value) {
-        Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int));
-        if (value.getPlatformKind() == Kind.Long) {
+        Variable result = newVariable(LIRKind.combine(value).changeType(JavaKind.Int));
+        if (value.getPlatformKind() == JavaKind.Long) {
             append(new AMD64Unary.RMOp(BSR, QWORD, result, asAllocatable(value)));
         } else {
             append(new AMD64Unary.RMOp(BSR, DWORD, result, asAllocatable(value)));
@@ -1366,8 +1366,8 @@
     }
 
     public Value emitCountLeadingZeros(Value value) {
-        Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int));
-        if (value.getPlatformKind() == Kind.Long) {
+        Variable result = newVariable(LIRKind.combine(value).changeType(JavaKind.Int));
+        if (value.getPlatformKind() == JavaKind.Long) {
             append(new AMD64Unary.RMOp(LZCNT, QWORD, result, asAllocatable(value)));
         } else {
             append(new AMD64Unary.RMOp(LZCNT, DWORD, result, asAllocatable(value)));
@@ -1376,8 +1376,8 @@
     }
 
     public Value emitCountTrailingZeros(Value value) {
-        Variable result = newVariable(LIRKind.combine(value).changeType(Kind.Int));
-        if (value.getPlatformKind() == Kind.Long) {
+        Variable result = newVariable(LIRKind.combine(value).changeType(JavaKind.Int));
+        if (value.getPlatformKind() == JavaKind.Long) {
             append(new AMD64Unary.RMOp(TZCNT, QWORD, result, asAllocatable(value)));
         } else {
             append(new AMD64Unary.RMOp(TZCNT, DWORD, result, asAllocatable(value)));
@@ -1388,7 +1388,7 @@
     @Override
     public Value emitMathAbs(Value input) {
         Variable result = newVariable(LIRKind.combine(input));
-        switch ((Kind) input.getPlatformKind()) {
+        switch ((JavaKind) input.getPlatformKind()) {
             case Float:
                 append(new AMD64Binary.DataOp(SSEOp.AND, PS, result, asAllocatable(input), JavaConstant.forFloat(Float.intBitsToFloat(0x7FFFFFFF)), 16));
                 break;
@@ -1404,7 +1404,7 @@
     @Override
     public Value emitMathSqrt(Value input) {
         Variable result = newVariable(LIRKind.combine(input));
-        switch ((Kind) input.getPlatformKind()) {
+        switch ((JavaKind) input.getPlatformKind()) {
             case Float:
                 append(new AMD64Unary.RMOp(SSEOp.SQRT, SS, result, asAllocatable(input)));
                 break;
@@ -1453,8 +1453,8 @@
     }
 
     @Override
-    public Variable emitArrayEquals(Kind kind, Value array1, Value array2, Value length) {
-        Variable result = newVariable(LIRKind.value(Kind.Int));
+    public Variable emitArrayEquals(JavaKind kind, Value array1, Value array2, Value length) {
+        Variable result = newVariable(LIRKind.value(JavaKind.Int));
         append(new AMD64ArrayEqualsOp(this, kind, result, array1, array2, asAllocatable(length)));
         return result;
     }
@@ -1472,7 +1472,7 @@
     @Override
     public void emitStrategySwitch(SwitchStrategy strategy, Variable key, LabelRef[] keyTargets, LabelRef defaultTarget) {
         // a temp is needed for loading object constants
-        boolean needsTemp = key.getPlatformKind() == Kind.Object;
+        boolean needsTemp = key.getPlatformKind() == JavaKind.Object;
         append(new StrategySwitchOp(strategy, keyTargets, defaultTarget, key, needsTemp ? newVariable(key.getLIRKind()) : Value.ILLEGAL));
     }
 
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -108,8 +108,8 @@
         return null;
     }
 
-    protected Kind getMemoryKind(Access access) {
-        return (Kind) gen.getLIRKind(access.asNode().stamp()).getPlatformKind();
+    protected JavaKind getMemoryKind(Access access) {
+        return (JavaKind) gen.getLIRKind(access.asNode().stamp()).getPlatformKind();
     }
 
     protected OperandSize getMemorySize(Access access) {
@@ -143,11 +143,11 @@
 
     protected ComplexMatchResult emitCompareBranchMemory(IfNode ifNode, CompareNode compare, ValueNode value, Access access) {
         Condition cond = compare.condition();
-        Kind kind = getMemoryKind(access);
+        JavaKind kind = getMemoryKind(access);
 
         if (value.isConstant()) {
             JavaConstant constant = value.asJavaConstant();
-            if (kind == Kind.Long && !NumUtil.isInt(constant.asLong())) {
+            if (kind == JavaKind.Long && !NumUtil.isInt(constant.asLong())) {
                 // Only imm32 as long
                 return null;
             }
@@ -155,14 +155,14 @@
                 Debug.log("Skipping constant compares for float kinds");
                 return null;
             }
-            if (kind == Kind.Object) {
+            if (kind == JavaKind.Object) {
                 if (!constant.isNull()) {
                     Debug.log("Skipping constant compares for Object kinds");
                     return null;
                 }
             }
         } else {
-            if (kind == Kind.Object) {
+            if (kind == JavaKind.Object) {
                 // Can't compare against objects since they require encode/decode
                 Debug.log("Skipping compares for Object kinds");
                 return null;
@@ -197,14 +197,14 @@
         LabelRef trueLabel = getLIRBlock(x.trueSuccessor());
         LabelRef falseLabel = getLIRBlock(x.falseSuccessor());
         double trueLabelProbability = x.probability(x.trueSuccessor());
-        Kind kind = getMemoryKind(access);
-        OperandSize size = kind == Kind.Long ? QWORD : DWORD;
+        JavaKind kind = getMemoryKind(access);
+        OperandSize size = kind == JavaKind.Long ? QWORD : DWORD;
         if (value.isConstant()) {
             if (kind != kind.getStackKind()) {
                 return null;
             }
             JavaConstant constant = value.asJavaConstant();
-            if (kind == Kind.Long && !NumUtil.isInt(constant.asLong())) {
+            if (kind == JavaKind.Long && !NumUtil.isInt(constant.asLong())) {
                 // Only imm32 as long
                 return null;
             }
@@ -234,13 +234,13 @@
 
     private ComplexMatchResult emitSignExtendMemory(Access access, int fromBits, int toBits) {
         assert fromBits <= toBits && toBits <= 64;
-        Kind kind = null;
+        JavaKind kind = null;
         AMD64RMOp op;
         OperandSize size;
         if (fromBits == toBits) {
             return null;
         } else if (toBits > 32) {
-            kind = Kind.Long;
+            kind = JavaKind.Long;
             size = QWORD;
             // sign extend to 64 bits
             switch (fromBits) {
@@ -257,7 +257,7 @@
                     throw JVMCIError.unimplemented("unsupported sign extension (" + fromBits + " bit -> " + toBits + " bit)");
             }
         } else {
-            kind = Kind.Int;
+            kind = JavaKind.Int;
             size = DWORD;
             // sign extend to 32 bits (smaller values are internally represented as 32 bit values)
             switch (fromBits) {
@@ -417,7 +417,7 @@
     @MatchRule("(ZeroExtend Read=access)")
     @MatchRule("(ZeroExtend FloatingRead=access)")
     public ComplexMatchResult zeroExtend(ZeroExtendNode root, Access access) {
-        Kind memoryKind = getMemoryKind(access);
+        JavaKind memoryKind = getMemoryKind(access);
         if (memoryKind.getBitCount() != root.getInputBits() && !memoryKind.isUnsigned()) {
             /*
              * The memory being read from is signed and smaller than the result size so this is a
@@ -426,7 +426,7 @@
              */
             return null;
         }
-        return builder -> getLIRGeneratorTool().emitZeroExtendMemory(memoryKind == Kind.Short ? Kind.Char : memoryKind, root.getResultBits(), (AMD64AddressValue) operand(access.getAddress()),
+        return builder -> getLIRGeneratorTool().emitZeroExtendMemory(memoryKind == JavaKind.Short ? JavaKind.Char : memoryKind, root.getResultBits(), (AMD64AddressValue) operand(access.getAddress()),
                         getState(access));
     }
 
@@ -435,25 +435,25 @@
     public ComplexMatchResult floatConvert(FloatConvertNode root, Access access) {
         switch (root.getFloatConvert()) {
             case D2F:
-                return emitConvertMemoryOp(Kind.Float, SSEOp.CVTSD2SS, SD, access);
+                return emitConvertMemoryOp(JavaKind.Float, SSEOp.CVTSD2SS, SD, access);
             case D2I:
-                return emitConvertMemoryOp(Kind.Int, SSEOp.CVTTSD2SI, DWORD, access);
+                return emitConvertMemoryOp(JavaKind.Int, SSEOp.CVTTSD2SI, DWORD, access);
             case D2L:
-                return emitConvertMemoryOp(Kind.Long, SSEOp.CVTTSD2SI, QWORD, access);
+                return emitConvertMemoryOp(JavaKind.Long, SSEOp.CVTTSD2SI, QWORD, access);
             case F2D:
-                return emitConvertMemoryOp(Kind.Double, SSEOp.CVTSS2SD, SS, access);
+                return emitConvertMemoryOp(JavaKind.Double, SSEOp.CVTSS2SD, SS, access);
             case F2I:
-                return emitConvertMemoryOp(Kind.Int, SSEOp.CVTTSS2SI, DWORD, access);
+                return emitConvertMemoryOp(JavaKind.Int, SSEOp.CVTTSS2SI, DWORD, access);
             case F2L:
-                return emitConvertMemoryOp(Kind.Long, SSEOp.CVTTSS2SI, QWORD, access);
+                return emitConvertMemoryOp(JavaKind.Long, SSEOp.CVTTSS2SI, QWORD, access);
             case I2D:
-                return emitConvertMemoryOp(Kind.Double, SSEOp.CVTSI2SD, DWORD, access);
+                return emitConvertMemoryOp(JavaKind.Double, SSEOp.CVTSI2SD, DWORD, access);
             case I2F:
-                return emitConvertMemoryOp(Kind.Float, SSEOp.CVTSI2SS, DWORD, access);
+                return emitConvertMemoryOp(JavaKind.Float, SSEOp.CVTSI2SS, DWORD, access);
             case L2D:
-                return emitConvertMemoryOp(Kind.Double, SSEOp.CVTSI2SD, QWORD, access);
+                return emitConvertMemoryOp(JavaKind.Double, SSEOp.CVTSI2SD, QWORD, access);
             case L2F:
-                return emitConvertMemoryOp(Kind.Float, SSEOp.CVTSI2SS, QWORD, access);
+                return emitConvertMemoryOp(JavaKind.Float, SSEOp.CVTSI2SS, QWORD, access);
             default:
                 throw JVMCIError.shouldNotReachHere();
         }
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/calc/Condition.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/calc/Condition.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -322,7 +322,7 @@
      *         the comparison is known to be false
      */
     public boolean foldCondition(JavaConstant lt, JavaConstant rt, ConstantReflectionProvider constantReflection) {
-        assert !lt.getKind().isNumericFloat() && !rt.getKind().isNumericFloat();
+        assert !lt.getJavaKind().isNumericFloat() && !rt.getJavaKind().isNumericFloat();
         return foldCondition(lt, rt, constantReflection, false);
     }
 
@@ -340,7 +340,7 @@
         if (lt instanceof PrimitiveConstant) {
             PrimitiveConstant lp = (PrimitiveConstant) lt;
             PrimitiveConstant rp = (PrimitiveConstant) rt;
-            switch (lp.getKind()) {
+            switch (lp.getJavaKind()) {
                 case Boolean:
                 case Byte:
                 case Char:
@@ -448,7 +448,7 @@
                     }
                 }
                 default:
-                    throw new JVMCIError("expected value kind %s while folding condition: %s", lp.getKind(), this);
+                    throw new JVMCIError("expected value kind %s while folding condition: %s", lp.getJavaKind(), this);
             }
         } else {
             Boolean equal = constantReflection.constantEquals(lt, rt);
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/AbstractObjectStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/AbstractObjectStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -74,8 +74,8 @@
     }
 
     @Override
-    public Kind getStackKind() {
-        return Kind.Object;
+    public JavaKind getStackKind() {
+        return JavaKind.Object;
     }
 
     @Override
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/AbstractPointerStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/AbstractPointerStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -109,7 +109,7 @@
     }
 
     @Override
-    public Kind getStackKind() {
-        return Kind.Illegal;
+    public JavaKind getStackKind() {
+        return JavaKind.Illegal;
     }
 }
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/ArithmeticOpTable.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/ArithmeticOpTable.java	Tue Sep 08 19:57:39 2015 +0200
@@ -630,7 +630,7 @@
 
     /**
      * Describes a shift operation. The right argument of a shift operation always has kind
-     * {@link Kind#Int}.
+     * {@link JavaKind#Int}.
      */
     public abstract static class ShiftOp<OP> extends Op {
 
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -67,7 +67,7 @@
     @Override
     public Stamp constant(Constant c, MetaAccessProvider meta) {
         JavaConstant jc = (JavaConstant) c;
-        assert jc.getKind().isNumericFloat() && jc.getKind().getBitCount() == getBits();
+        assert jc.getJavaKind().isNumericFloat() && jc.getJavaKind().getBitCount() == getBits();
         return StampFactory.forConstant(jc);
     }
 
@@ -89,11 +89,11 @@
     }
 
     @Override
-    public Kind getStackKind() {
+    public JavaKind getStackKind() {
         if (getBits() > 32) {
-            return Kind.Double;
+            return JavaKind.Double;
         } else {
-            return Kind.Float;
+            return JavaKind.Float;
         }
     }
 
@@ -277,7 +277,7 @@
         @Override
         public Constant foldConstant(Constant c) {
             PrimitiveConstant value = (PrimitiveConstant) c;
-            switch (value.getKind()) {
+            switch (value.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat(-value.asFloat());
                 case Double:
@@ -300,8 +300,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat(a.asFloat() + b.asFloat());
                 case Double:
@@ -320,7 +320,7 @@
         @Override
         public boolean isNeutral(Constant value) {
             PrimitiveConstant n = (PrimitiveConstant) value;
-            switch (n.getKind()) {
+            switch (n.getJavaKind()) {
                 case Float:
                     return Float.compare(n.asFloat(), -0.0f) == 0;
                 case Double:
@@ -337,8 +337,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat(a.asFloat() - b.asFloat());
                 case Double:
@@ -357,7 +357,7 @@
         @Override
         public boolean isNeutral(Constant value) {
             PrimitiveConstant n = (PrimitiveConstant) value;
-            switch (n.getKind()) {
+            switch (n.getJavaKind()) {
                 case Float:
                     return Float.compare(n.asFloat(), 0.0f) == 0;
                 case Double:
@@ -374,8 +374,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat(a.asFloat() * b.asFloat());
                 case Double:
@@ -394,7 +394,7 @@
         @Override
         public boolean isNeutral(Constant value) {
             PrimitiveConstant n = (PrimitiveConstant) value;
-            switch (n.getKind()) {
+            switch (n.getJavaKind()) {
                 case Float:
                     return Float.compare(n.asFloat(), 1.0f) == 0;
                 case Double:
@@ -411,8 +411,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat(a.asFloat() / b.asFloat());
                 case Double:
@@ -431,7 +431,7 @@
         @Override
         public boolean isNeutral(Constant value) {
             PrimitiveConstant n = (PrimitiveConstant) value;
-            switch (n.getKind()) {
+            switch (n.getJavaKind()) {
                 case Float:
                     return Float.compare(n.asFloat(), 1.0f) == 0;
                 case Double:
@@ -448,8 +448,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat(a.asFloat() % b.asFloat());
                 case Double:
@@ -471,7 +471,7 @@
         @Override
         public Constant foldConstant(Constant c) {
             PrimitiveConstant value = (PrimitiveConstant) c;
-            switch (value.getKind()) {
+            switch (value.getJavaKind()) {
                 case Float:
                     int f = Float.floatToRawIntBits(value.asFloat());
                     return JavaConstant.forFloat(Float.intBitsToFloat(~f));
@@ -495,8 +495,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     int fa = Float.floatToRawIntBits(a.asFloat());
                     int fb = Float.floatToRawIntBits(b.asFloat());
@@ -518,7 +518,7 @@
         @Override
         public boolean isNeutral(Constant n) {
             PrimitiveConstant value = (PrimitiveConstant) n;
-            switch (value.getKind()) {
+            switch (value.getJavaKind()) {
                 case Float:
                     return Float.floatToRawIntBits(value.asFloat()) == 0xFFFFFFFF;
                 case Double:
@@ -535,8 +535,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     int fa = Float.floatToRawIntBits(a.asFloat());
                     int fb = Float.floatToRawIntBits(b.asFloat());
@@ -558,7 +558,7 @@
         @Override
         public boolean isNeutral(Constant n) {
             PrimitiveConstant value = (PrimitiveConstant) n;
-            switch (value.getKind()) {
+            switch (value.getJavaKind()) {
                 case Float:
                     return Float.floatToRawIntBits(value.asFloat()) == 0;
                 case Double:
@@ -575,8 +575,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            switch (a.getKind()) {
+            assert a.getJavaKind() == b.getJavaKind();
+            switch (a.getJavaKind()) {
                 case Float:
                     int fa = Float.floatToRawIntBits(a.asFloat());
                     int fb = Float.floatToRawIntBits(b.asFloat());
@@ -598,7 +598,7 @@
         @Override
         public boolean isNeutral(Constant n) {
             PrimitiveConstant value = (PrimitiveConstant) n;
-            switch (value.getKind()) {
+            switch (value.getJavaKind()) {
                 case Float:
                     return Float.floatToRawIntBits(value.asFloat()) == 0;
                 case Double:
@@ -616,7 +616,7 @@
         @Override
         public Constant foldConstant(Constant c) {
             PrimitiveConstant value = (PrimitiveConstant) c;
-            switch (value.getKind()) {
+            switch (value.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat(Math.abs(value.asFloat()));
                 case Double:
@@ -641,7 +641,7 @@
         @Override
         public Constant foldConstant(Constant c) {
             PrimitiveConstant value = (PrimitiveConstant) c;
-            switch (value.getKind()) {
+            switch (value.getJavaKind()) {
                 case Float:
                     return JavaConstant.forFloat((float) Math.sqrt(value.asFloat()));
                 case Double:
@@ -681,7 +681,7 @@
                     upperBound = 0;
                 }
             }
-            return StampFactory.forInteger(Kind.Int, lowerBound, upperBound);
+            return StampFactory.forInteger(JavaKind.Int, lowerBound, upperBound);
         }
     },
 
@@ -707,7 +707,7 @@
                     upperBound = 0;
                 }
             }
-            return StampFactory.forInteger(Kind.Long, lowerBound, upperBound);
+            return StampFactory.forInteger(JavaKind.Long, lowerBound, upperBound);
         }
     },
 
@@ -733,7 +733,7 @@
                     upperBound = 0;
                 }
             }
-            return StampFactory.forInteger(Kind.Int, lowerBound, upperBound);
+            return StampFactory.forInteger(JavaKind.Int, lowerBound, upperBound);
         }
     },
 
@@ -759,7 +759,7 @@
                     upperBound = 0;
                 }
             }
-            return StampFactory.forInteger(Kind.Long, lowerBound, upperBound);
+            return StampFactory.forInteger(JavaKind.Long, lowerBound, upperBound);
         }
     },
 
@@ -775,7 +775,7 @@
         public Stamp foldStamp(Stamp stamp) {
             FloatStamp floatStamp = (FloatStamp) stamp;
             assert floatStamp.getBits() == 32;
-            return StampFactory.forFloat(Kind.Double, floatStamp.lowerBound(), floatStamp.upperBound(), floatStamp.isNonNaN());
+            return StampFactory.forFloat(JavaKind.Double, floatStamp.lowerBound(), floatStamp.upperBound(), floatStamp.isNonNaN());
         }
     },
 
@@ -791,7 +791,7 @@
         public Stamp foldStamp(Stamp stamp) {
             FloatStamp floatStamp = (FloatStamp) stamp;
             assert floatStamp.getBits() == 64;
-            return StampFactory.forFloat(Kind.Float, (float) floatStamp.lowerBound(), (float) floatStamp.upperBound(), floatStamp.isNonNaN());
+            return StampFactory.forFloat(JavaKind.Float, (float) floatStamp.lowerBound(), (float) floatStamp.upperBound(), floatStamp.isNonNaN());
         }
     });
 }
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IllegalStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IllegalStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -28,9 +28,9 @@
 import com.oracle.graal.compiler.common.spi.*;
 
 /**
- * This stamp represents the type of the {@link Kind#Illegal} value in the second slot of
- * {@link Kind#Long} and {@link Kind#Double} values. It can only appear in framestates or virtual
- * objects.
+ * This stamp represents the type of the {@link JavaKind#Illegal} value in the second slot of
+ * {@link JavaKind#Long} and {@link JavaKind#Double} values. It can only appear in framestates or
+ * virtual objects.
  */
 public final class IllegalStamp extends Stamp {
 
@@ -38,8 +38,8 @@
     }
 
     @Override
-    public Kind getStackKind() {
-        return Kind.Illegal;
+    public JavaKind getStackKind() {
+        return JavaKind.Illegal;
     }
 
     @Override
@@ -59,7 +59,7 @@
 
     @Override
     public Stamp constant(Constant c, MetaAccessProvider meta) {
-        assert ((PrimitiveConstant) c).getKind() == Kind.Illegal;
+        assert ((PrimitiveConstant) c).getJavaKind() == JavaKind.Illegal;
         return this;
     }
 
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -124,11 +124,11 @@
     }
 
     @Override
-    public Kind getStackKind() {
+    public JavaKind getStackKind() {
         if (getBits() > 32) {
-            return Kind.Long;
+            return JavaKind.Long;
         } else {
-            return Kind.Int;
+            return JavaKind.Int;
         }
     }
 
@@ -390,7 +390,7 @@
         @Override
         public Constant foldConstant(Constant value) {
             PrimitiveConstant c = (PrimitiveConstant) value;
-            return JavaConstant.forIntegerKind(c.getKind(), -c.asLong());
+            return JavaConstant.forIntegerKind(c.getJavaKind(), -c.asLong());
         }
 
         @Override
@@ -412,8 +412,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() + b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() + b.asLong());
         }
 
         @Override
@@ -472,8 +472,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() - b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() - b.asLong());
         }
 
         @Override
@@ -500,8 +500,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() * b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() * b.asLong());
         }
 
         @Override
@@ -531,8 +531,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() / b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() / b.asLong());
         }
 
         @Override
@@ -562,8 +562,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() % b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() % b.asLong());
         }
 
         @Override
@@ -594,7 +594,7 @@
         @Override
         public Constant foldConstant(Constant c) {
             PrimitiveConstant value = (PrimitiveConstant) c;
-            return JavaConstant.forIntegerKind(value.getKind(), ~value.asLong());
+            return JavaConstant.forIntegerKind(value.getJavaKind(), ~value.asLong());
         }
 
         @Override
@@ -612,8 +612,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() & b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() & b.asLong());
         }
 
         @Override
@@ -627,7 +627,7 @@
         @Override
         public boolean isNeutral(Constant value) {
             PrimitiveConstant n = (PrimitiveConstant) value;
-            int bits = n.getKind().getBitCount();
+            int bits = n.getJavaKind().getBitCount();
             long mask = CodeUtil.mask(bits);
             return (n.asLong() & mask) == mask;
         }
@@ -639,8 +639,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() | b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() | b.asLong());
         }
 
         @Override
@@ -664,8 +664,8 @@
         public Constant foldConstant(Constant const1, Constant const2) {
             PrimitiveConstant a = (PrimitiveConstant) const1;
             PrimitiveConstant b = (PrimitiveConstant) const2;
-            assert a.getKind() == b.getKind();
-            return JavaConstant.forIntegerKind(a.getKind(), a.asLong() ^ b.asLong());
+            assert a.getJavaKind() == b.getJavaKind();
+            return JavaConstant.forIntegerKind(a.getJavaKind(), a.asLong() ^ b.asLong());
         }
 
         @Override
@@ -698,7 +698,7 @@
         @Override
         public Constant foldConstant(Constant value, int amount) {
             PrimitiveConstant c = (PrimitiveConstant) value;
-            switch (c.getKind()) {
+            switch (c.getJavaKind()) {
                 case Int:
                     return JavaConstant.forInt(c.asInt() << amount);
                 case Long:
@@ -758,7 +758,7 @@
         @Override
         public Constant foldConstant(Constant value, int amount) {
             PrimitiveConstant c = (PrimitiveConstant) value;
-            switch (c.getKind()) {
+            switch (c.getJavaKind()) {
                 case Int:
                     return JavaConstant.forInt(c.asInt() >> amount);
                 case Long:
@@ -802,7 +802,7 @@
         @Override
         public Constant foldConstant(Constant value, int amount) {
             PrimitiveConstant c = (PrimitiveConstant) value;
-            switch (c.getKind()) {
+            switch (c.getJavaKind()) {
                 case Int:
                     return JavaConstant.forInt(c.asInt() >>> amount);
                 case Long:
@@ -847,7 +847,7 @@
         @Override
         public Constant foldConstant(Constant value) {
             PrimitiveConstant c = (PrimitiveConstant) value;
-            return JavaConstant.forIntegerKind(c.getKind(), Math.abs(c.asLong()));
+            return JavaConstant.forIntegerKind(c.getJavaKind(), Math.abs(c.asLong()));
         }
 
         @Override
@@ -970,7 +970,7 @@
             assert stamp.getBits() == 32;
             float lowerBound = stamp.lowerBound();
             float upperBound = stamp.upperBound();
-            return StampFactory.forFloat(Kind.Float, lowerBound, upperBound, true);
+            return StampFactory.forFloat(JavaKind.Float, lowerBound, upperBound, true);
         }
     },
 
@@ -988,7 +988,7 @@
             assert stamp.getBits() == 64;
             float lowerBound = stamp.lowerBound();
             float upperBound = stamp.upperBound();
-            return StampFactory.forFloat(Kind.Float, lowerBound, upperBound, true);
+            return StampFactory.forFloat(JavaKind.Float, lowerBound, upperBound, true);
         }
     },
 
@@ -1006,7 +1006,7 @@
             assert stamp.getBits() == 32;
             double lowerBound = stamp.lowerBound();
             double upperBound = stamp.upperBound();
-            return StampFactory.forFloat(Kind.Double, lowerBound, upperBound, true);
+            return StampFactory.forFloat(JavaKind.Double, lowerBound, upperBound, true);
         }
     },
 
@@ -1024,7 +1024,7 @@
             assert stamp.getBits() == 64;
             double lowerBound = stamp.lowerBound();
             double upperBound = stamp.upperBound();
-            return StampFactory.forFloat(Kind.Double, lowerBound, upperBound, true);
+            return StampFactory.forFloat(JavaKind.Double, lowerBound, upperBound, true);
         }
     });
 }
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/Stamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/Stamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -45,11 +45,11 @@
     }
 
     /**
-     * Gets a Java {@link Kind} that can be used to store a value of this stamp on the Java bytecode
-     * stack. Returns {@link Kind#Illegal} if a value of this stamp can not be stored on the
-     * bytecode stack.
+     * Gets a Java {@link JavaKind} that can be used to store a value of this stamp on the Java
+     * bytecode stack. Returns {@link JavaKind#Illegal} if a value of this stamp can not be stored
+     * on the bytecode stack.
      */
-    public abstract Kind getStackKind();
+    public abstract JavaKind getStackKind();
 
     /**
      * Gets a platform dependent {@link LIRKind} that can be used to store a value of this stamp.
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.java	Tue Sep 08 19:57:39 2015 +0200
@@ -30,22 +30,22 @@
 
     // JaCoCo Exclude
 
-    private static final Stamp[] stampCache = new Stamp[Kind.values().length];
-    private static final Stamp[] emptyStampCache = new Stamp[Kind.values().length];
+    private static final Stamp[] stampCache = new Stamp[JavaKind.values().length];
+    private static final Stamp[] emptyStampCache = new Stamp[JavaKind.values().length];
     private static final Stamp objectStamp = new ObjectStamp(null, false, false, false);
     private static final Stamp objectNonNullStamp = new ObjectStamp(null, false, true, false);
     private static final Stamp objectAlwaysNullStamp = new ObjectStamp(null, false, false, true);
     private static final Stamp nodeIntrinsicStamp = new ObjectStamp(null, false, false, false);
-    private static final Stamp positiveInt = forInteger(Kind.Int, 0, Integer.MAX_VALUE, 0, Integer.MAX_VALUE);
-    private static final Stamp booleanTrue = forInteger(Kind.Boolean, -1, -1, 1, 1);
-    private static final Stamp booleanFalse = forInteger(Kind.Boolean, 0, 0, 0, 0);
+    private static final Stamp positiveInt = forInteger(JavaKind.Int, 0, Integer.MAX_VALUE, 0, Integer.MAX_VALUE);
+    private static final Stamp booleanTrue = forInteger(JavaKind.Boolean, -1, -1, 1, 1);
+    private static final Stamp booleanFalse = forInteger(JavaKind.Boolean, 0, 0, 0, 0);
     private static final Stamp rawPointer = new RawPointerStamp();
 
-    private static void setCache(Kind kind, Stamp stamp) {
+    private static void setCache(JavaKind kind, Stamp stamp) {
         stampCache[kind.ordinal()] = stamp;
     }
 
-    private static void setIntCache(Kind kind) {
+    private static void setIntCache(JavaKind kind) {
         int bits = kind.getStackKind().getBitCount();
         long mask;
         if (kind.isUnsigned()) {
@@ -56,26 +56,26 @@
         setCache(kind, new IntegerStamp(bits, kind.getMinValue(), kind.getMaxValue(), 0, mask));
     }
 
-    private static void setFloatCache(Kind kind) {
+    private static void setFloatCache(JavaKind kind) {
         setCache(kind, new FloatStamp(kind.getBitCount()));
     }
 
     static {
-        setIntCache(Kind.Boolean);
-        setIntCache(Kind.Byte);
-        setIntCache(Kind.Short);
-        setIntCache(Kind.Char);
-        setIntCache(Kind.Int);
-        setIntCache(Kind.Long);
+        setIntCache(JavaKind.Boolean);
+        setIntCache(JavaKind.Byte);
+        setIntCache(JavaKind.Short);
+        setIntCache(JavaKind.Char);
+        setIntCache(JavaKind.Int);
+        setIntCache(JavaKind.Long);
 
-        setFloatCache(Kind.Float);
-        setFloatCache(Kind.Double);
+        setFloatCache(JavaKind.Float);
+        setFloatCache(JavaKind.Double);
 
-        setCache(Kind.Object, objectStamp);
-        setCache(Kind.Void, VoidStamp.getInstance());
-        setCache(Kind.Illegal, IllegalStamp.getInstance());
+        setCache(JavaKind.Object, objectStamp);
+        setCache(JavaKind.Void, VoidStamp.getInstance());
+        setCache(JavaKind.Illegal, IllegalStamp.getInstance());
 
-        for (Kind k : Kind.values()) {
+        for (JavaKind k : JavaKind.values()) {
             if (stampCache[k.ordinal()] != null) {
                 emptyStampCache[k.ordinal()] = stampCache[k.ordinal()].empty();
             }
@@ -93,7 +93,7 @@
     /**
      * Return a stamp for a Java kind, as it would be represented on the bytecode stack.
      */
-    public static Stamp forKind(Kind kind) {
+    public static Stamp forKind(JavaKind kind) {
         assert stampCache[kind.ordinal()] != null : "unexpected forKind(" + kind + ")";
         return stampCache[kind.ordinal()];
     }
@@ -115,22 +115,22 @@
     }
 
     public static Stamp intValue() {
-        return forKind(Kind.Int);
+        return forKind(JavaKind.Int);
     }
 
     public static Stamp positiveInt() {
         return positiveInt;
     }
 
-    public static Stamp empty(Kind kind) {
+    public static Stamp empty(JavaKind kind) {
         return emptyStampCache[kind.ordinal()];
     }
 
-    public static IntegerStamp forInteger(Kind kind, long lowerBound, long upperBound, long downMask, long upMask) {
+    public static IntegerStamp forInteger(JavaKind kind, long lowerBound, long upperBound, long downMask, long upMask) {
         return new IntegerStamp(kind.getBitCount(), lowerBound, upperBound, downMask, upMask);
     }
 
-    public static IntegerStamp forInteger(Kind kind, long lowerBound, long upperBound) {
+    public static IntegerStamp forInteger(JavaKind kind, long lowerBound, long upperBound) {
         return forInteger(kind.getBitCount(), lowerBound, upperBound);
     }
 
@@ -168,13 +168,13 @@
         return new IntegerStamp(bits, lowerBound, upperBound, downMask & defaultMask, upMask & defaultMask);
     }
 
-    public static FloatStamp forFloat(Kind kind, double lowerBound, double upperBound, boolean nonNaN) {
+    public static FloatStamp forFloat(JavaKind kind, double lowerBound, double upperBound, boolean nonNaN) {
         assert kind.isNumericFloat();
         return new FloatStamp(kind.getBitCount(), lowerBound, upperBound, nonNaN);
     }
 
     public static Stamp forConstant(JavaConstant value) {
-        Kind kind = value.getKind();
+        JavaKind kind = value.getJavaKind();
         switch (kind) {
             case Boolean:
             case Byte:
@@ -189,7 +189,7 @@
             case Double:
                 return forFloat(kind, value.asDouble(), value.asDouble(), !Double.isNaN(value.asDouble()));
             case Illegal:
-                return forKind(Kind.Illegal);
+                return forKind(JavaKind.Illegal);
             case Object:
                 if (value.isNull()) {
                     return alwaysNull();
@@ -202,7 +202,7 @@
     }
 
     public static Stamp forConstant(JavaConstant value, MetaAccessProvider metaAccess) {
-        if (value.getKind() == Kind.Object) {
+        if (value.getJavaKind() == JavaKind.Object) {
             ResolvedJavaType type = value.isNull() ? null : metaAccess.lookupJavaType(value);
             return new ObjectStamp(type, value.isNonNull(), value.isNonNull(), value.isNull());
         } else {
@@ -272,7 +272,7 @@
         if (ObjectStamp.isConcreteType(type)) {
             return new ObjectStamp(type, true, false, false);
         } else {
-            return empty(Kind.Object);
+            return empty(JavaKind.Object);
         }
     }
 
@@ -283,7 +283,7 @@
         if (ObjectStamp.isConcreteType(type)) {
             return new ObjectStamp(type, true, true, false);
         } else {
-            return empty(Kind.Object);
+            return empty(JavaKind.Object);
         }
     }
 
@@ -303,7 +303,7 @@
 
     public static Stamp object(ResolvedJavaType type, boolean exactType, boolean nonNull, boolean trustInterfaces) {
         assert type != null;
-        assert type.getKind() == Kind.Object;
+        assert type.getJavaKind() == JavaKind.Object;
         ResolvedJavaType trustedtype;
         if (!trustInterfaces) {
             trustedtype = filterInterfaceTypesOut(type);
@@ -333,9 +333,9 @@
         ResolvedJavaType accessingClass = method.getDeclaringClass();
         for (int i = 0; i < max; i++) {
             JavaType type = sig.getParameterType(i, accessingClass);
-            Kind kind = type.getKind();
+            JavaKind kind = type.getJavaKind();
             Stamp stamp;
-            if (kind == Kind.Object && type instanceof ResolvedJavaType) {
+            if (kind == JavaKind.Object && type instanceof ResolvedJavaType) {
                 stamp = StampFactory.declared((ResolvedJavaType) type);
             } else {
                 stamp = StampFactory.forKind(kind);
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/VoidStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/VoidStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -41,8 +41,8 @@
     }
 
     @Override
-    public Kind getStackKind() {
-        return Kind.Void;
+    public JavaKind getStackKind() {
+        return JavaKind.Void;
     }
 
     @Override
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCAddressLowering.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCAddressLowering.java	Tue Sep 08 19:57:39 2015 +0200
@@ -84,7 +84,7 @@
 
     private JavaConstant asImmediate(ValueNode value) {
         JavaConstant c = value.asJavaConstant();
-        if (c != null && c.getKind().isNumericInteger() && !codeCache.needsDataPatch(c)) {
+        if (c != null && c.getJavaKind().isNumericInteger() && !codeCache.needsDataPatch(c)) {
             return c;
         } else {
             return null;
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Tue Sep 08 19:57:39 2015 +0200
@@ -107,7 +107,7 @@
 
     @Override
     public boolean canInlineConstant(JavaConstant c) {
-        switch (c.getKind()) {
+        switch (c.getJavaKind()) {
             case Boolean:
             case Byte:
             case Char:
@@ -234,18 +234,18 @@
             actualCondition = cond;
         }
         SPARCCompare opcode;
-        Kind actualCmpKind = (Kind) cmpKind;
+        JavaKind actualCmpKind = (JavaKind) cmpKind;
         switch (actualCmpKind) {
             case Byte:
                 left = emitSignExtend(left, 8, 32);
                 right = emitSignExtend(right, 8, 32);
-                actualCmpKind = Kind.Int;
+                actualCmpKind = JavaKind.Int;
                 opcode = ICMP;
                 break;
             case Short:
                 left = emitSignExtend(left, 16, 32);
                 right = emitSignExtend(right, 16, 32);
-                actualCmpKind = Kind.Int;
+                actualCmpKind = JavaKind.Int;
                 opcode = ICMP;
                 break;
             case Object:
@@ -271,18 +271,18 @@
 
     @Override
     public void emitOverflowCheckBranch(LabelRef overflow, LabelRef noOverflow, LIRKind cmpLIRKind, double overflowProbability) {
-        Kind cmpKind = (Kind) cmpLIRKind.getPlatformKind();
+        JavaKind cmpKind = (JavaKind) cmpLIRKind.getPlatformKind();
         append(new BranchOp(ConditionFlag.OverflowSet, overflow, noOverflow, cmpKind, overflowProbability));
     }
 
     @Override
     public void emitIntegerTestBranch(Value left, Value right, LabelRef trueDestination, LabelRef falseDestination, double trueDestinationProbability) {
         emitIntegerTest(left, right);
-        append(new BranchOp(ConditionFlag.Equal, trueDestination, falseDestination, ((Kind) left.getPlatformKind()).getStackKind(), trueDestinationProbability));
+        append(new BranchOp(ConditionFlag.Equal, trueDestination, falseDestination, ((JavaKind) left.getPlatformKind()).getStackKind(), trueDestinationProbability));
     }
 
     private void emitIntegerTest(Value a, Value b) {
-        assert ((Kind) a.getPlatformKind()).isNumericInteger();
+        assert ((JavaKind) a.getPlatformKind()).isNumericInteger();
         if (LIRValueUtil.isVariable(b)) {
             append(new SPARCTestOp(load(b), loadNonConst(a)));
         } else {
@@ -307,7 +307,7 @@
         Value actualTrueValue = trueValue;
         Value actualFalseValue = falseValue;
         // TODO: (sa) Review this loadSimm11 if it is really necessary
-        switch ((Kind) left.getLIRKind().getPlatformKind()) {
+        switch ((JavaKind) left.getLIRKind().getPlatformKind()) {
             case Byte:
             case Short:
             case Char:
@@ -359,7 +359,7 @@
             right = loadNonConst(b);
             mirrored = false;
         }
-        switch ((Kind) cmpKind) {
+        switch ((JavaKind) cmpKind) {
             case Short:
             case Char:
                 append(new CompareOp(ICMP, emitSignExtend(left, 16, 32), emitSignExtend(right, 16, 32)));
@@ -392,7 +392,7 @@
     public Variable emitIntegerTestMove(Value left, Value right, Value trueValue, Value falseValue) {
         emitIntegerTest(left, right);
         Variable result = newVariable(trueValue.getLIRKind());
-        Kind kind = ((Kind) left.getPlatformKind()).getStackKind();
+        JavaKind kind = ((JavaKind) left.getPlatformKind()).getStackKind();
         CC conditionCode;
         switch (kind) {
             case Object:
@@ -448,8 +448,8 @@
 
     @Override
     public Variable emitBitCount(Value operand) {
-        Variable result = newVariable(LIRKind.combine(operand).changeType(Kind.Int));
-        if (operand.getPlatformKind() == Kind.Long) {
+        Variable result = newVariable(LIRKind.combine(operand).changeType(JavaKind.Int));
+        if (operand.getPlatformKind() == JavaKind.Long) {
             append(new SPARCBitManipulationOp(LPOPCNT, result, asAllocatable(operand), this));
         } else {
             append(new SPARCBitManipulationOp(IPOPCNT, result, asAllocatable(operand), this));
@@ -459,15 +459,15 @@
 
     @Override
     public Variable emitBitScanForward(Value operand) {
-        Variable result = newVariable(LIRKind.combine(operand).changeType(Kind.Int));
+        Variable result = newVariable(LIRKind.combine(operand).changeType(JavaKind.Int));
         append(new SPARCBitManipulationOp(BSF, result, asAllocatable(operand), this));
         return result;
     }
 
     @Override
     public Variable emitBitScanReverse(Value operand) {
-        Variable result = newVariable(LIRKind.combine(operand).changeType(Kind.Int));
-        if (operand.getPlatformKind() == Kind.Long) {
+        Variable result = newVariable(LIRKind.combine(operand).changeType(JavaKind.Int));
+        if (operand.getPlatformKind() == JavaKind.Long) {
             append(new SPARCBitManipulationOp(LBSR, result, asAllocatable(operand), this));
         } else {
             append(new SPARCBitManipulationOp(IBSR, result, asAllocatable(operand), this));
@@ -497,15 +497,15 @@
     }
 
     @Override
-    public Variable emitArrayEquals(Kind kind, Value array1, Value array2, Value length) {
-        Variable result = newVariable(LIRKind.value(Kind.Int));
+    public Variable emitArrayEquals(JavaKind kind, Value array1, Value array2, Value length) {
+        Variable result = newVariable(LIRKind.value(JavaKind.Int));
         append(new SPARCArrayEqualsOp(this, kind, result, load(array1), load(array2), asAllocatable(length)));
         return result;
     }
 
     @Override
     public Value emitNegate(Value input) {
-        switch (((Kind) input.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) input.getPlatformKind()).getStackKind()) {
             case Long:
                 return emitUnary(LNEG, input);
             case Int:
@@ -521,7 +521,7 @@
 
     @Override
     public Value emitNot(Value input) {
-        switch (((Kind) input.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) input.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitUnary(INOT, input);
             case Long:
@@ -583,7 +583,7 @@
 
     @Override
     public Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, setFlags ? IADDCC : IADD, true, a, b);
             case Long:
@@ -599,7 +599,7 @@
 
     @Override
     public Variable emitSub(LIRKind resultKind, Value a, Value b, boolean setFlags) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, setFlags ? ISUBCC : ISUB, false, a, b);
             case Long:
@@ -616,7 +616,7 @@
     @Override
     public Variable emitMul(Value a, Value b, boolean setFlags) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, setFlags ? IMULCC : IMUL, true, a, b);
             case Long:
@@ -638,7 +638,7 @@
 
     @Override
     public Value emitMulHigh(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitMulHigh(IMUL, a, b);
             case Long:
@@ -650,7 +650,7 @@
 
     @Override
     public Value emitUMulHigh(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitMulHigh(IUMUL, a, b);
             case Long:
@@ -670,7 +670,7 @@
     @Override
     public Value emitDiv(Value a, Value b, LIRFrameState state) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, IDIV, false, a, b, state);
             case Long:
@@ -691,7 +691,7 @@
         Variable q2;
         Variable q3;
         Variable q4;
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 append(new RemOp(IREM, result, load(a), loadNonConst(b), state, this));
                 break;
@@ -699,24 +699,24 @@
                 append(new RemOp(LREM, result, load(a), loadNonConst(b), state, this));
                 break;
             case Float:
-                q1 = newVariable(LIRKind.value(Kind.Float));
+                q1 = newVariable(LIRKind.value(JavaKind.Float));
                 append(new BinaryRegReg(FDIV, q1, a, b, state));
-                q2 = newVariable(LIRKind.value(Kind.Float));
+                q2 = newVariable(LIRKind.value(JavaKind.Float));
                 append(new Unary2Op(F2I, q2, q1));
-                q3 = newVariable(LIRKind.value(Kind.Float));
+                q3 = newVariable(LIRKind.value(JavaKind.Float));
                 append(new Unary2Op(I2F, q3, q2));
-                q4 = newVariable(LIRKind.value(Kind.Float));
+                q4 = newVariable(LIRKind.value(JavaKind.Float));
                 append(new BinaryRegReg(FMUL, q4, q3, b));
                 append(new BinaryRegReg(FSUB, result, a, q4));
                 break;
             case Double:
-                q1 = newVariable(LIRKind.value(Kind.Double));
+                q1 = newVariable(LIRKind.value(JavaKind.Double));
                 append(new BinaryRegReg(DDIV, q1, a, b, state));
-                q2 = newVariable(LIRKind.value(Kind.Double));
+                q2 = newVariable(LIRKind.value(JavaKind.Double));
                 append(new Unary2Op(D2L, q2, q1));
-                q3 = newVariable(LIRKind.value(Kind.Double));
+                q3 = newVariable(LIRKind.value(JavaKind.Double));
                 append(new Unary2Op(L2D, q3, q2));
-                q4 = newVariable(LIRKind.value(Kind.Double));
+                q4 = newVariable(LIRKind.value(JavaKind.Double));
                 append(new BinaryRegReg(DMUL, q4, q3, b));
                 append(new BinaryRegReg(DSUB, result, a, q4));
                 break;
@@ -729,7 +729,7 @@
     @Override
     public Value emitURem(Value a, Value b, LIRFrameState state) {
         Variable result = newVariable(LIRKind.combine(a, b));
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 append(new RemOp(IUREM, result, load(a), load(b), state, this));
                 break;
@@ -748,7 +748,7 @@
         SPARCArithmetic op;
         Value actualA = a;
         Value actualB = b;
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 op = LUDIV;
                 actualA = emitZeroExtend(actualA, 32, 64);
@@ -766,7 +766,7 @@
     @Override
     public Variable emitAnd(Value a, Value b) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, IAND, true, a, b);
             case Long:
@@ -780,7 +780,7 @@
     @Override
     public Variable emitOr(Value a, Value b) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, IOR, true, a, b);
             case Long:
@@ -793,7 +793,7 @@
     @Override
     public Variable emitXor(Value a, Value b) {
         LIRKind resultKind = LIRKind.combine(a, b);
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitBinary(resultKind, IXOR, true, a, b);
             case Long:
@@ -815,7 +815,7 @@
 
     @Override
     public Variable emitShl(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(ISHL, a, b);
             case Long:
@@ -827,7 +827,7 @@
 
     @Override
     public Variable emitShr(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(ISHR, a, b);
             case Long:
@@ -839,7 +839,7 @@
 
     @Override
     public Variable emitUShr(Value a, Value b) {
-        switch (((Kind) a.getPlatformKind()).getStackKind()) {
+        switch (((JavaKind) a.getPlatformKind()).getStackKind()) {
             case Int:
                 return emitShift(IUSHR, a, b);
             case Long:
@@ -866,11 +866,11 @@
         AllocatableValue input = asAllocatable(inputVal);
         switch (op) {
             case D2F:
-                return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Float), D2F, input);
+                return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Float), D2F, input);
             case F2D:
-                return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Double), F2D, input);
+                return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Double), F2D, input);
             case I2F: {
-                AllocatableValue intEncodedFloatReg = newVariable(LIRKind.combine(input).changeType(Kind.Float));
+                AllocatableValue intEncodedFloatReg = newVariable(LIRKind.combine(input).changeType(JavaKind.Float));
                 moveBetweenFpGp(intEncodedFloatReg, input);
                 AllocatableValue convertedFloatReg = newVariable(intEncodedFloatReg.getLIRKind());
                 append(new Unary2Op(I2F, convertedFloatReg, intEncodedFloatReg));
@@ -879,48 +879,48 @@
             case I2D: {
                 // Unfortunately we must do int -> float -> double because fitod has float
                 // and double encoding in one instruction
-                AllocatableValue convertedFloatReg = newVariable(LIRKind.combine(input).changeType(Kind.Float));
+                AllocatableValue convertedFloatReg = newVariable(LIRKind.combine(input).changeType(JavaKind.Float));
                 moveBetweenFpGp(convertedFloatReg, input);
-                AllocatableValue convertedDoubleReg = newVariable(LIRKind.combine(input).changeType(Kind.Double));
+                AllocatableValue convertedDoubleReg = newVariable(LIRKind.combine(input).changeType(JavaKind.Double));
                 append(new Unary2Op(I2D, convertedDoubleReg, convertedFloatReg));
                 return convertedDoubleReg;
             }
             case L2D: {
-                AllocatableValue longEncodedDoubleReg = newVariable(LIRKind.combine(input).changeType(Kind.Double));
+                AllocatableValue longEncodedDoubleReg = newVariable(LIRKind.combine(input).changeType(JavaKind.Double));
                 moveBetweenFpGp(longEncodedDoubleReg, input);
                 AllocatableValue convertedDoubleReg = newVariable(longEncodedDoubleReg.getLIRKind());
                 append(new Unary2Op(L2D, convertedDoubleReg, longEncodedDoubleReg));
                 return convertedDoubleReg;
             }
             case D2I: {
-                AllocatableValue convertedFloatReg = emitConvert2Op(LIRKind.combine(input).changeType(Kind.Float), D2I, input);
-                AllocatableValue convertedIntReg = newVariable(LIRKind.combine(convertedFloatReg).changeType(Kind.Int));
+                AllocatableValue convertedFloatReg = emitConvert2Op(LIRKind.combine(input).changeType(JavaKind.Float), D2I, input);
+                AllocatableValue convertedIntReg = newVariable(LIRKind.combine(convertedFloatReg).changeType(JavaKind.Int));
                 moveBetweenFpGp(convertedIntReg, convertedFloatReg);
                 return convertedIntReg;
             }
             case F2L: {
-                AllocatableValue convertedDoubleReg = emitConvert2Op(LIRKind.combine(input).changeType(Kind.Double), F2L, input);
-                AllocatableValue convertedLongReg = newVariable(LIRKind.combine(convertedDoubleReg).changeType(Kind.Long));
+                AllocatableValue convertedDoubleReg = emitConvert2Op(LIRKind.combine(input).changeType(JavaKind.Double), F2L, input);
+                AllocatableValue convertedLongReg = newVariable(LIRKind.combine(convertedDoubleReg).changeType(JavaKind.Long));
                 moveBetweenFpGp(convertedLongReg, convertedDoubleReg);
                 return convertedLongReg;
             }
             case F2I: {
-                AllocatableValue convertedFloatReg = emitConvert2Op(LIRKind.combine(input).changeType(Kind.Float), F2I, input);
-                AllocatableValue convertedIntReg = newVariable(LIRKind.combine(convertedFloatReg).changeType(Kind.Int));
+                AllocatableValue convertedFloatReg = emitConvert2Op(LIRKind.combine(input).changeType(JavaKind.Float), F2I, input);
+                AllocatableValue convertedIntReg = newVariable(LIRKind.combine(convertedFloatReg).changeType(JavaKind.Int));
                 moveBetweenFpGp(convertedIntReg, convertedFloatReg);
                 return convertedIntReg;
             }
             case D2L: {
-                AllocatableValue convertedDoubleReg = emitConvert2Op(LIRKind.combine(input).changeType(Kind.Double), D2L, input);
-                AllocatableValue convertedLongReg = newVariable(LIRKind.combine(convertedDoubleReg).changeType(Kind.Long));
+                AllocatableValue convertedDoubleReg = emitConvert2Op(LIRKind.combine(input).changeType(JavaKind.Double), D2L, input);
+                AllocatableValue convertedLongReg = newVariable(LIRKind.combine(convertedDoubleReg).changeType(JavaKind.Long));
                 moveBetweenFpGp(convertedLongReg, convertedDoubleReg);
                 return convertedLongReg;
             }
             case L2F: {
                 // long -> double -> float see above
-                AllocatableValue convertedDoubleReg = newVariable(LIRKind.combine(input).changeType(Kind.Double));
+                AllocatableValue convertedDoubleReg = newVariable(LIRKind.combine(input).changeType(JavaKind.Double));
                 moveBetweenFpGp(convertedDoubleReg, input);
-                AllocatableValue convertedFloatReg = newVariable(LIRKind.combine(input).changeType(Kind.Float));
+                AllocatableValue convertedFloatReg = newVariable(LIRKind.combine(input).changeType(JavaKind.Float));
                 append(new Unary2Op(L2F, convertedFloatReg, convertedDoubleReg));
                 return convertedFloatReg;
             }
@@ -934,7 +934,7 @@
         if (getArchitecture().getFeatures().contains(CPUFeature.VIS3)) {
             tempSlot = AllocatableValue.ILLEGAL;
         } else {
-            tempSlot = getTempSlot(LIRKind.value(Kind.Long));
+            tempSlot = getTempSlot(LIRKind.value(JavaKind.Long));
         }
         append(new MoveFpGp(dst, src, tempSlot));
     }
@@ -952,8 +952,8 @@
 
     @Override
     public Value emitNarrow(Value inputVal, int bits) {
-        if (inputVal.getPlatformKind() == Kind.Long && bits <= 32) {
-            return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Int), L2I, asAllocatable(inputVal));
+        if (inputVal.getPlatformKind() == JavaKind.Long && bits <= 32) {
+            return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Int), L2I, asAllocatable(inputVal));
         } else {
             return inputVal;
         }
@@ -968,11 +968,11 @@
             // sign extend to 64 bits
             switch (fromBits) {
                 case 8:
-                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Long), B2L, asAllocatable(inputVal));
+                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Long), B2L, asAllocatable(inputVal));
                 case 16:
-                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Long), S2L, asAllocatable(inputVal));
+                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Long), S2L, asAllocatable(inputVal));
                 case 32:
-                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Long), I2L, asAllocatable(inputVal));
+                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Long), I2L, asAllocatable(inputVal));
                 default:
                     throw JVMCIError.unimplemented("unsupported sign extension (" + fromBits + " bit -> " + toBits + " bit)");
             }
@@ -980,9 +980,9 @@
             // sign extend to 32 bits (smaller values are internally represented as 32 bit values)
             switch (fromBits) {
                 case 8:
-                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Int), B2I, asAllocatable(inputVal));
+                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Int), B2I, asAllocatable(inputVal));
                 case 16:
-                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(Kind.Int), S2I, asAllocatable(inputVal));
+                    return emitConvert2Op(LIRKind.combine(inputVal).changeType(JavaKind.Int), S2I, asAllocatable(inputVal));
                 case 32:
                     return inputVal;
                 default:
@@ -997,14 +997,15 @@
         if (fromBits == toBits) {
             return inputVal;
         } else if (fromBits > 32) {
-            assert inputVal.getPlatformKind() == Kind.Long;
-            Variable result = newVariable(LIRKind.combine(inputVal).changeType(Kind.Long));
+            assert inputVal.getPlatformKind() == JavaKind.Long;
+            Variable result = newVariable(LIRKind.combine(inputVal).changeType(JavaKind.Long));
             long mask = CodeUtil.mask(fromBits);
             append(new BinaryRegConst(SPARCArithmetic.LAND, result, asAllocatable(inputVal), JavaConstant.forLong(mask), null));
             return result;
         } else {
-            assert inputVal.getPlatformKind() == Kind.Int || inputVal.getPlatformKind() == Kind.Short || inputVal.getPlatformKind() == Kind.Byte || inputVal.getPlatformKind() == Kind.Char : inputVal.getPlatformKind();
-            Variable result = newVariable(LIRKind.combine(inputVal).changeType(Kind.Int));
+            assert inputVal.getPlatformKind() == JavaKind.Int || inputVal.getPlatformKind() == JavaKind.Short || inputVal.getPlatformKind() == JavaKind.Byte ||
+                            inputVal.getPlatformKind() == JavaKind.Char : inputVal.getPlatformKind();
+            Variable result = newVariable(LIRKind.combine(inputVal).changeType(JavaKind.Int));
             long mask = CodeUtil.mask(fromBits);
             JavaConstant constant = JavaConstant.forInt((int) mask);
             if (fromBits == 32) {
@@ -1012,12 +1013,12 @@
             } else if (canInlineConstant(constant)) {
                 append(new BinaryRegConst(SPARCArithmetic.IAND, result, asAllocatable(inputVal), constant, null));
             } else {
-                Variable maskVar = newVariable(LIRKind.combine(inputVal).changeType(Kind.Int));
+                Variable maskVar = newVariable(LIRKind.combine(inputVal).changeType(JavaKind.Int));
                 emitMoveConstant(maskVar, constant);
                 append(new BinaryRegReg(IAND, result, maskVar, asAllocatable(inputVal)));
             }
             if (toBits > 32) {
-                Variable longResult = newVariable(LIRKind.combine(inputVal).changeType(Kind.Long));
+                Variable longResult = newVariable(LIRKind.combine(inputVal).changeType(JavaKind.Long));
                 emitMove(longResult, result);
                 return longResult;
             } else {
@@ -1028,11 +1029,11 @@
 
     @Override
     public AllocatableValue emitReinterpret(LIRKind to, Value inputVal) {
-        Kind from = (Kind) inputVal.getPlatformKind();
+        JavaKind from = (JavaKind) inputVal.getPlatformKind();
         AllocatableValue input = asAllocatable(inputVal);
         Variable result = newVariable(to);
         // These cases require a move between CPU and FPU registers:
-        switch ((Kind) to.getPlatformKind()) {
+        switch ((JavaKind) to.getPlatformKind()) {
             case Int:
                 switch (from) {
                     case Float:
@@ -1096,12 +1097,12 @@
 
     public void emitNullCheck(Value address, LIRFrameState state) {
         PlatformKind kind = address.getPlatformKind();
-        assert kind == Kind.Object || kind == Kind.Long : address + " - " + kind + " not an object!";
+        assert kind == JavaKind.Object || kind == JavaKind.Long : address + " - " + kind + " not an object!";
         append(new NullCheckOp(asAddressValue(address), state));
     }
 
     public void emitLoadConstantTableBase() {
-        constantTableBase = newVariable(LIRKind.value(Kind.Long));
+        constantTableBase = newVariable(LIRKind.value(JavaKind.Long));
         int nextPosition = getResult().getLIR().getLIRforBlock(getCurrentBlock()).size();
         NoOp placeHolder = append(new NoOp(getCurrentBlock(), nextPosition));
         loadConstantTableBaseOp = new SPARCLoadConstantTableBaseOp(constantTableBase, placeHolder);
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -78,33 +78,33 @@
 
     private ComplexMatchResult emitSignExtendMemory(Access access, int fromBits, int toBits) {
         assert fromBits <= toBits && toBits <= 64;
-        Kind toKind = null;
-        Kind fromKind = null;
+        JavaKind toKind = null;
+        JavaKind fromKind = null;
         if (fromBits == toBits) {
             return null;
         } else if (toBits > 32) {
-            toKind = Kind.Long;
+            toKind = JavaKind.Long;
         } else if (toBits > 16) {
-            toKind = Kind.Int;
+            toKind = JavaKind.Int;
         } else {
-            toKind = Kind.Short;
+            toKind = JavaKind.Short;
         }
         switch (fromBits) {
             case 8:
-                fromKind = Kind.Byte;
+                fromKind = JavaKind.Byte;
                 break;
             case 16:
-                fromKind = Kind.Short;
+                fromKind = JavaKind.Short;
                 break;
             case 32:
-                fromKind = Kind.Int;
+                fromKind = JavaKind.Int;
                 break;
             default:
                 throw JVMCIError.unimplemented("unsupported sign extension (" + fromBits + " bit -> " + toBits + " bit)");
         }
 
-        Kind localFromKind = fromKind;
-        Kind localToKind = toKind;
+        JavaKind localFromKind = fromKind;
+        JavaKind localToKind = toKind;
         return builder -> {
             Value v = getLIRGeneratorTool().emitSignExtendLoad(LIRKind.value(localFromKind), operand(access.getAddress()), getState(access));
             return getLIRGeneratorTool().emitReinterpret(LIRKind.value(localToKind), v);
@@ -113,33 +113,33 @@
 
     private ComplexMatchResult emitZeroExtendMemory(Access access, int fromBits, int toBits) {
         assert fromBits <= toBits && toBits <= 64;
-        Kind toKind = null;
-        Kind fromKind = null;
+        JavaKind toKind = null;
+        JavaKind fromKind = null;
         if (fromBits == toBits) {
             return null;
         } else if (toBits > 32) {
-            toKind = Kind.Long;
+            toKind = JavaKind.Long;
         } else if (toBits > 16) {
-            toKind = Kind.Int;
+            toKind = JavaKind.Int;
         } else {
-            toKind = Kind.Short;
+            toKind = JavaKind.Short;
         }
         switch (fromBits) {
             case 8:
-                fromKind = Kind.Byte;
+                fromKind = JavaKind.Byte;
                 break;
             case 16:
-                fromKind = Kind.Short;
+                fromKind = JavaKind.Short;
                 break;
             case 32:
-                fromKind = Kind.Int;
+                fromKind = JavaKind.Int;
                 break;
             default:
                 throw JVMCIError.unimplemented("unsupported sign extension (" + fromBits + " bit -> " + toBits + " bit)");
         }
 
-        Kind localFromKind = fromKind;
-        Kind localToKind = toKind;
+        JavaKind localFromKind = fromKind;
+        JavaKind localToKind = toKind;
         return builder -> {
             // Loads are always zero extending load
             Value v = getLIRGeneratorTool().emitLoad(LIRKind.value(localFromKind), operand(access.getAddress()), getState(access));
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -295,7 +295,7 @@
         Assert.assertEquals("unexpected number of ReturnNodes: " + graphString, graph.getNodes(ReturnNode.TYPE).count(), 1);
         ValueNode result = graph.getNodes(ReturnNode.TYPE).first().result();
         Assert.assertTrue("unexpected ReturnNode result node: " + graphString, result.isConstant());
-        Assert.assertEquals("unexpected ReturnNode result kind: " + graphString, result.asJavaConstant().getKind(), Kind.Int);
+        Assert.assertEquals("unexpected ReturnNode result kind: " + graphString, result.asJavaConstant().getJavaKind(), JavaKind.Int);
         Assert.assertEquals("unexpected ReturnNode result: " + graphString, result.asJavaConstant().asInt(), value);
     }
 
@@ -502,9 +502,9 @@
         Assert.assertEquals(sig.length, args.length);
         for (int i = 0; i < args.length; i++) {
             JavaType javaType = sig[i];
-            Kind kind = javaType.getKind();
+            JavaKind kind = javaType.getJavaKind();
             Object arg = args[i];
-            if (kind == Kind.Object) {
+            if (kind == JavaKind.Object) {
                 if (arg != null && javaType instanceof ResolvedJavaType) {
                     ResolvedJavaType resolvedJavaType = (ResolvedJavaType) javaType;
                     Assert.assertTrue(resolvedJavaType + " from " + getMetaAccess().lookupJavaType(arg.getClass()), resolvedJavaType.isAssignableFrom(getMetaAccess().lookupJavaType(arg.getClass())));
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/deopt/CompiledMethodTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/deopt/CompiledMethodTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -58,7 +58,7 @@
         new DeadCodeEliminationPhase().apply(graph);
 
         for (ConstantNode node : ConstantNode.getConstantNodes(graph)) {
-            if (node.getStackKind() == Kind.Object && " ".equals(getSnippetReflection().asObject(String.class, node.asJavaConstant()))) {
+            if (node.getStackKind() == JavaKind.Object && " ".equals(getSnippetReflection().asObject(String.class, node.asJavaConstant()))) {
                 node.replace(graph, ConstantNode.forConstant(getSnippetReflection().forObject("-"), getMetaAccess(), graph));
             }
         }
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/tutorial/StaticAnalysis.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/tutorial/StaticAnalysis.java	Tue Sep 08 19:57:39 2015 +0200
@@ -55,7 +55,7 @@
  * types need to be added to any type state.
  * <p>
  * The type flows are constructed from a high-level Graal graph by the {@link TypeFlowBuilder}. All
- * nodes that operate on {@link Kind#Object object} values are converted to the appropriate type
+ * nodes that operate on {@link JavaKind#Object object} values are converted to the appropriate type
  * flows. The analysis is context insensitive: every Java field has {@link Results#lookupField one
  * list} of types assigned to the field; every Java method has {@link Results#lookupMethod one
  * state} for each {@link MethodState#formalParameters parameter} as well as the
@@ -445,7 +445,7 @@
         }
 
         private boolean isObject(ValueNode node) {
-            return node.getStackKind() == Kind.Object;
+            return node.getStackKind() == JavaKind.Object;
         }
 
         @Override
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Tue Sep 08 19:57:39 2015 +0200
@@ -336,17 +336,17 @@
 
             if (Debug.isMeterEnabled()) {
                 List<DataPatch> ldp = compilationResult.getDataPatches();
-                Kind[] kindValues = Kind.values();
+                JavaKind[] kindValues = JavaKind.values();
                 DebugMetric[] dms = new DebugMetric[kindValues.length];
                 for (int i = 0; i < dms.length; i++) {
                     dms[i] = Debug.metric("DataPatches-%s", kindValues[i]);
                 }
 
                 for (DataPatch dp : ldp) {
-                    Kind kind = Kind.Illegal;
+                    JavaKind kind = JavaKind.Illegal;
                     if (dp.reference instanceof ConstantReference) {
                         VMConstant constant = ((ConstantReference) dp.reference).getConstant();
-                        kind = ((JavaConstant) constant).getKind();
+                        kind = ((JavaConstant) constant).getJavaKind();
                     }
                     dms[kind.ordinal()].add(1);
                 }
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -84,19 +84,19 @@
                 assert vobjValue.getValues() == null;
 
                 JavaValue[] values = new JavaValue[vobjNode.entryCount()];
-                Kind[] slotKinds = new Kind[vobjNode.entryCount()];
+                JavaKind[] slotKinds = new JavaKind[vobjNode.entryCount()];
                 if (values.length > 0) {
                     VirtualObjectState currentField = (VirtualObjectState) objectStates.get(vobjNode);
                     assert currentField != null;
                     int pos = 0;
                     for (int i = 0; i < vobjNode.entryCount(); i++) {
-                        if (!currentField.values().get(i).isConstant() || currentField.values().get(i).asJavaConstant().getKind() != Kind.Illegal) {
+                        if (!currentField.values().get(i).isConstant() || currentField.values().get(i).asJavaConstant().getJavaKind() != JavaKind.Illegal) {
                             ValueNode value = currentField.values().get(i);
                             values[pos] = toJavaValue(value);
                             slotKinds[pos] = toSlotKind(value);
                             pos++;
                         } else {
-                            assert currentField.values().get(i - 1).getStackKind() == Kind.Double || currentField.values().get(i - 1).getStackKind() == Kind.Long : vobjNode + " " + i + " " +
+                            assert currentField.values().get(i - 1).getStackKind() == JavaKind.Double || currentField.values().get(i - 1).getStackKind() == JavaKind.Long : vobjNode + " " + i + " " +
                                             currentField.values().get(i - 1);
                         }
                     }
@@ -136,7 +136,7 @@
             int numLocks = state.locksSize();
 
             JavaValue[] values = new JavaValue[numLocals + numStack + numLocks];
-            Kind[] slotKinds = new Kind[numLocals + numStack];
+            JavaKind[] slotKinds = new JavaKind[numLocals + numStack];
             computeLocals(state, numLocals, values, slotKinds);
             computeStack(state, numLocals, numStack, values, slotKinds);
             computeLocks(state, values);
@@ -151,7 +151,7 @@
         }
     }
 
-    protected void computeLocals(FrameState state, int numLocals, JavaValue[] values, Kind[] slotKinds) {
+    protected void computeLocals(FrameState state, int numLocals, JavaValue[] values, JavaKind[] slotKinds) {
         for (int i = 0; i < numLocals; i++) {
             ValueNode local = state.localAt(i);
             values[i] = toJavaValue(local);
@@ -159,7 +159,7 @@
         }
     }
 
-    protected void computeStack(FrameState state, int numLocals, int numStack, JavaValue[] values, Kind[] slotKinds) {
+    protected void computeStack(FrameState state, int numLocals, int numStack, JavaValue[] values, JavaKind[] slotKinds) {
         for (int i = 0; i < numStack; i++) {
             ValueNode stack = state.stackAt(i);
             values[numLocals + i] = toJavaValue(stack);
@@ -182,9 +182,9 @@
     private static final DebugMetric STATE_VARIABLES = Debug.metric("StateVariables");
     private static final DebugMetric STATE_CONSTANTS = Debug.metric("StateConstants");
 
-    private static Kind toSlotKind(ValueNode value) {
+    private static JavaKind toSlotKind(ValueNode value) {
         if (value == null) {
-            return Kind.Illegal;
+            return JavaKind.Illegal;
         } else {
             return value.getStackKind();
         }
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -222,9 +222,9 @@
     }
 
     private static boolean verifyPHIKind(LIRKind derivedKind, LIRKind phiKind) {
-        assert derivedKind.getPlatformKind() != Kind.Object || !derivedKind.isUnknownReference();
+        assert derivedKind.getPlatformKind() != JavaKind.Object || !derivedKind.isUnknownReference();
         PlatformKind phiPlatformKind = phiKind.getPlatformKind();
-        assert derivedKind.equals(phiKind) || derivedKind.getPlatformKind().equals(phiPlatformKind instanceof Kind ? ((Kind) phiPlatformKind).getStackKind() : phiPlatformKind);
+        assert derivedKind.equals(phiKind) || derivedKind.getPlatformKind().equals(phiPlatformKind instanceof JavaKind ? ((JavaKind) phiPlatformKind).getStackKind() : phiPlatformKind);
         return true;
     }
 
@@ -630,14 +630,14 @@
                 LabelRef[] keyTargets = new LabelRef[keyCount];
                 JavaConstant[] keyConstants = new JavaConstant[keyCount];
                 double[] keyProbabilities = new double[keyCount];
-                Kind keyKind = x.keyAt(0).getKind();
+                JavaKind keyKind = x.keyAt(0).getJavaKind();
                 for (int i = 0; i < keyCount; i++) {
                     keyTargets[i] = getLIRBlock(x.keySuccessor(i));
                     keyConstants[i] = x.keyAt(i);
                     keyProbabilities[i] = x.keyProbability(i);
-                    assert keyConstants[i].getKind() == keyKind;
+                    assert keyConstants[i].getJavaKind() == keyKind;
                 }
-                if (keyKind != Kind.Int || !x.isSorted()) {
+                if (keyKind != JavaKind.Int || !x.isSorted()) {
                     // hopefully only a few entries
                     gen.emitStrategySwitch(new SwitchStrategy.SequentialStrategy(keyProbabilities, keyConstants), value, keyTargets, defaultTarget);
                 } else {
--- a/graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java	Tue Sep 08 19:57:39 2015 +0200
@@ -43,7 +43,7 @@
 
     /**
      * Raw operation for adding a node to the graph when neither {@link #add} nor
-     * {@link #addPush(Kind, ValueNode)} can be used.
+     * {@link #addPush(JavaKind, ValueNode)} can be used.
      *
      * @return either the node added or an equivalent node
      */
@@ -59,21 +59,21 @@
 
     /**
      * Pushes a given value to the frame state stack using an explicit kind. This should be used
-     * when {@code value.getKind()} is different from the kind that the bytecode instruction
+     * when {@code value.getJavaKind()} is different from the kind that the bytecode instruction
      * currently being parsed pushes to the stack.
      *
      * @param kind the kind to use when type checking this operation
      * @param value the value to push to the stack. The value must already have been
      *            {@linkplain #append(ValueNode) appended}.
      */
-    void push(Kind kind, ValueNode value);
+    void push(JavaKind kind, ValueNode value);
 
     /**
      * Adds a node to the graph. If the returned node is a {@link StateSplit} with a null
      * {@linkplain StateSplit#stateAfter() frame state}, the frame state is initialized.
      *
-     * @param value the value to add to the graph and push to the stack. The {@code value.getKind()}
-     *            kind is used when type checking this operation.
+     * @param value the value to add to the graph and push to the stack. The
+     *            {@code value.getJavaKind()} kind is used when type checking this operation.
      * @return a node equivalent to {@code value} in the graph
      */
     default <T extends ValueNode> T add(T value) {
@@ -100,7 +100,7 @@
      * @param value the value to add to the graph and push to the stack
      * @return a node equivalent to {@code value} in the graph
      */
-    default <T extends ValueNode> T addPush(Kind kind, T value) {
+    default <T extends ValueNode> T addPush(JavaKind kind, T value) {
         T equivalentValue = value.graph() != null ? value : append(value);
         push(kind, equivalentValue);
         if (equivalentValue instanceof StateSplit) {
@@ -198,10 +198,10 @@
 
     default Stamp getInvokeReturnStamp() {
         JavaType returnType = getInvokeReturnType();
-        if (returnType.getKind() == Kind.Object && returnType instanceof ResolvedJavaType) {
+        if (returnType.getJavaKind() == JavaKind.Object && returnType instanceof ResolvedJavaType) {
             return StampFactory.declared((ResolvedJavaType) returnType);
         } else {
-            return StampFactory.forKind(returnType.getKind());
+            return StampFactory.forKind(returnType.getJavaKind());
         }
     }
 
--- a/graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/NodePlugin.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/NodePlugin.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,8 +44,8 @@
 
     /**
      * Handle the parsing of a GETFIELD bytecode. If the method returns true, it must
-     * {@link GraphBuilderContext#push push} a value using the {@link ResolvedJavaField#getKind()
-     * kind} of the field.
+     * {@link GraphBuilderContext#push push} a value using the
+     * {@link ResolvedJavaField#getJavaKind() kind} of the field.
      *
      * @param b the context
      * @param object the receiver object for the field access
@@ -58,8 +58,8 @@
 
     /**
      * Handle the parsing of a GETSTATIC bytecode. If the method returns true, it must
-     * {@link GraphBuilderContext#push push} a value using the {@link ResolvedJavaField#getKind()
-     * kind} of the field.
+     * {@link GraphBuilderContext#push push} a value using the
+     * {@link ResolvedJavaField#getJavaKind() kind} of the field.
      *
      * @param b the context
      * @param field the accessed field
@@ -104,7 +104,7 @@
      * @param elementKind the element kind of the accessed array
      * @return true if the plugin handles the array access, false otherwise.
      */
-    default boolean handleLoadIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, Kind elementKind) {
+    default boolean handleLoadIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, JavaKind elementKind) {
         return false;
     }
 
@@ -118,14 +118,14 @@
      * @param value the value to be stored into the array
      * @return true if the plugin handles the array access, false otherwise.
      */
-    default boolean handleStoreIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, Kind elementKind, ValueNode value) {
+    default boolean handleStoreIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, JavaKind elementKind, ValueNode value) {
         return false;
     }
 
     /**
      * Handle the parsing of a CHECKCAST bytecode. If the method returns true, it must
      * {@link GraphBuilderContext#push push} a value with the result of the cast using
-     * {@link Kind#Object}.
+     * {@link JavaKind#Object}.
      *
      * @param b the context
      * @param object the object to be type checked
@@ -141,7 +141,7 @@
     /**
      * Handle the parsing of a INSTANCEOF bytecode. If the method returns true, it must
      * {@link GraphBuilderContext#push push} a value with the result of the instanceof using
-     * {@link Kind#Int}.
+     * {@link JavaKind#Int}.
      *
      * @param b the context
      * @param object the object to be type checked
@@ -157,7 +157,7 @@
     /**
      * Handle the parsing of a NEW bytecode. If the method returns true, it must
      * {@link GraphBuilderContext#push push} a value with the result of the allocation using
-     * {@link Kind#Object}.
+     * {@link JavaKind#Object}.
      *
      * @param b the context
      * @param type the type to be instantiated
@@ -170,7 +170,7 @@
     /**
      * Handle the parsing of a NEWARRAY and ANEWARRAY bytecode. If the method returns true, it must
      * {@link GraphBuilderContext#push push} a value with the result of the allocation using
-     * {@link Kind#Object}.
+     * {@link JavaKind#Object}.
      *
      * @param b the context
      * @param elementType the element type of the array to be instantiated
@@ -184,7 +184,7 @@
     /**
      * Handle the parsing of a MULTIANEWARRAY bytecode. If the method returns true, it must
      * {@link GraphBuilderContext#push push} a value with the result of the allocation using
-     * {@link Kind#Object}.
+     * {@link JavaKind#Object}.
      *
      * @param b the context
      * @param type the type of the outermost array to be instantiated
@@ -196,9 +196,9 @@
     }
 
     /**
-     * If the plugin {@link GraphBuilderContext#push pushes} a value with a different {@link Kind}
-     * than specified by the bytecode, it must override this method and return {@code true}. This
-     * disables assertion checking for value kinds.
+     * If the plugin {@link GraphBuilderContext#push pushes} a value with a different
+     * {@link JavaKind} than specified by the bytecode, it must override this method and return
+     * {@code true}. This disables assertion checking for value kinds.
      *
      * @param b the context
      */
--- a/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/AMD64HotSpotFrameOmissionTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/AMD64HotSpotFrameOmissionTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -72,7 +72,7 @@
 
             @Override
             public void generateCode(AMD64Assembler asm) {
-                Register arg = getArgumentRegister(0, Kind.Int);
+                Register arg = getArgumentRegister(0, JavaKind.Int);
                 asm.nop(5); // padding for mt-safe patching
                 asm.addl(arg, 5);
                 asm.movl(rax, arg);
@@ -92,7 +92,7 @@
 
             @Override
             public void generateCode(AMD64Assembler asm) {
-                Register arg = getArgumentRegister(0, Kind.Long);
+                Register arg = getArgumentRegister(0, JavaKind.Long);
                 asm.nop(5); // padding for mt-safe patching
                 asm.addq(arg, 1);
                 asm.movq(rax, arg);
@@ -119,7 +119,7 @@
         Assert.assertArrayEquals(expectedCode, actualCode);
     }
 
-    private Register getArgumentRegister(int index, Kind kind) {
+    private Register getArgumentRegister(int index, JavaKind kind) {
         Register[] regs = getCodeCache().getRegisterConfig().getCallingConventionRegisters(CallingConvention.Type.JavaCall, kind);
         return regs[index];
     }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -54,7 +54,7 @@
                 }
             }
         }
-        params[params.length - 1] = rbp.asValue(LIRKind.value(Kind.Long));
+        params[params.length - 1] = rbp.asValue(LIRKind.value(JavaKind.Long));
 
         gen.emitIncomingValues(params);
 
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCardTableAddressOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCardTableAddressOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -47,7 +47,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler asm) {
-        Kind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
+        JavaKind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
         int alignment = hostWordKind.getBitCount() / Byte.SIZE;
         JavaConstant address = JavaConstant.forIntegerKind(hostWordKind, 0);
         // recordDataReferenceInCode forces the mov to be rip-relative
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCardTableShiftOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCardTableShiftOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -47,8 +47,8 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler asm) {
-        Kind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
-        int alignment = Kind.Int.getBitCount() / Byte.SIZE;
+        JavaKind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
+        int alignment = JavaKind.Int.getBitCount() / Byte.SIZE;
         JavaConstant shift = JavaConstant.forIntegerKind(hostWordKind, 0);
         // recordDataReferenceInCode forces the mov to be rip-relative
         asm.movq(ValueUtil.asRegister(result), (AMD64Address) crb.recordDataReferenceInCode(shift, alignment));
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEnterUnpackFramesStackFrameOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEnterUnpackFramesStackFrameOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -90,10 +90,10 @@
 
         // Save return registers after moving the frame.
         final int stackSlotSize = frameMap.getTarget().wordSize;
-        Register integerResultRegister = registerConfig.getReturnRegister(Kind.Long);
+        Register integerResultRegister = registerConfig.getReturnRegister(JavaKind.Long);
         masm.movptr(new AMD64Address(stackPointerRegister, registerSaveLayout.registerToSlot(integerResultRegister) * stackSlotSize), integerResultRegister);
 
-        Register floatResultRegister = registerConfig.getReturnRegister(Kind.Double);
+        Register floatResultRegister = registerConfig.getReturnRegister(JavaKind.Double);
         masm.movdbl(new AMD64Address(stackPointerRegister, registerSaveLayout.registerToSlot(floatResultRegister) * stackSlotSize), floatResultRegister);
 
         // Set up last Java values.
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotForeignCallsProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotForeignCallsProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -52,7 +52,7 @@
     @Override
     public void initialize(HotSpotProviders providers, HotSpotVMConfig config) {
         TargetDescription target = providers.getCodeCache().getTarget();
-        Kind word = target.wordKind;
+        JavaKind word = target.wordKind;
 
         // The calling convention for the exception handler stub is (only?) defined in
         // TemplateInterpreterGenerator::generate_throw_exception()
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java	Tue Sep 08 19:57:39 2015 +0200
@@ -105,7 +105,7 @@
             this.placeholder = placeholder0;
             AMD64FrameMapBuilder frameMapBuilder = (AMD64FrameMapBuilder) getResult().getFrameMapBuilder();
             this.reservedSlot = frameMapBuilder.allocateRBPSpillSlot();
-            this.rescueSlot = newVariable(LIRKind.value(Kind.Long));
+            this.rescueSlot = newVariable(LIRKind.value(JavaKind.Long));
         }
 
         /**
@@ -114,13 +114,13 @@
          * @param useStack specifies if rbp must be saved to the stack
          */
         public void finalize(boolean useStack) {
-            RegisterValue rbpValue = rbp.asValue(LIRKind.value(Kind.Long));
+            RegisterValue rbpValue = rbp.asValue(LIRKind.value(JavaKind.Long));
             LIRInstruction move;
             if (useStack) {
                 move = new StoreRbpOp(rescueSlot, rbpValue, reservedSlot);
             } else {
                 ((AMD64FrameMapBuilder) getResult().getFrameMapBuilder()).freeRBPSpillSlot();
-                move = new MoveFromRegOp(Kind.Long, rescueSlot, rbpValue);
+                move = new MoveFromRegOp(JavaKind.Long, rescueSlot, rbpValue);
             }
             placeholder.replace(getResult().getLIR(), move);
 
@@ -200,7 +200,7 @@
     private Register findPollOnReturnScratchRegister() {
         RegisterConfig regConfig = getProviders().getCodeCache().getRegisterConfig();
         for (Register r : regConfig.getAllocatableRegisters()) {
-            if (!r.equals(regConfig.getReturnRegister(Kind.Long)) && !r.equals(AMD64.rbp)) {
+            if (!r.equals(regConfig.getReturnRegister(JavaKind.Long)) && !r.equals(AMD64.rbp)) {
                 return r;
             }
         }
@@ -267,14 +267,14 @@
 
     @Override
     public Value emitCardTableShift() {
-        Variable result = newVariable(LIRKind.value(Kind.Long));
+        Variable result = newVariable(LIRKind.value(JavaKind.Long));
         append(new AMD64HotSpotCardTableShiftOp(result, config));
         return result;
     }
 
     @Override
     public Value emitCardTableAddress() {
-        Variable result = newVariable(LIRKind.value(Kind.Long));
+        Variable result = newVariable(LIRKind.value(JavaKind.Long));
         append(new AMD64HotSpotCardTableAddressOp(result, config));
         return result;
     }
@@ -300,7 +300,7 @@
         StackSlotValue[] savedRegisterLocations = new StackSlotValue[savedRegisters.length];
         for (int i = 0; i < savedRegisters.length; i++) {
             PlatformKind kind = target().arch.getLargestStorableKind(savedRegisters[i].getRegisterCategory());
-            assert kind != Kind.Illegal;
+            assert kind != JavaKind.Illegal;
             VirtualStackSlot spillSlot = getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(kind));
             savedRegisterLocations[i] = spillSlot;
         }
@@ -377,7 +377,7 @@
 
         Register thread = getProviders().getRegisters().getThreadRegister();
         append(new AMD64HotSpotCRuntimeCallPrologueOp(config.threadLastJavaSpOffset(), thread));
-        Variable result = super.emitForeignCall(linkage, null, thread.asValue(LIRKind.value(Kind.Long)), trapRequest);
+        Variable result = super.emitForeignCall(linkage, null, thread.asValue(LIRKind.value(JavaKind.Long)), trapRequest);
         append(new AMD64HotSpotCRuntimeCallEpilogueOp(config.threadLastJavaSpOffset(), config.threadLastJavaFpOffset(), thread));
 
         Map<LIRFrameState, SaveRegistersOp> calleeSaveInfo = ((AMD64HotSpotLIRGenerationResult) getResult()).getCalleeSaveInfo();
@@ -392,7 +392,7 @@
 
         Register thread = getProviders().getRegisters().getThreadRegister();
         append(new AMD64HotSpotCRuntimeCallPrologueOp(config.threadLastJavaSpOffset(), thread));
-        Variable result = super.emitForeignCall(linkage, null, thread.asValue(LIRKind.value(Kind.Long)));
+        Variable result = super.emitForeignCall(linkage, null, thread.asValue(LIRKind.value(JavaKind.Long)));
         append(new AMD64HotSpotCRuntimeCallEpilogueOp(config.threadLastJavaSpOffset(), config.threadLastJavaFpOffset(), thread));
 
         Map<LIRFrameState, SaveRegistersOp> calleeSaveInfo = ((AMD64HotSpotLIRGenerationResult) getResult()).getCalleeSaveInfo();
@@ -413,7 +413,7 @@
         JavaConstant[] zapValues = new JavaConstant[zappedRegisters.length];
         for (int i = 0; i < zappedRegisters.length; i++) {
             PlatformKind kind = target().arch.getLargestStorableKind(zappedRegisters[i].getRegisterCategory());
-            assert kind != Kind.Illegal;
+            assert kind != JavaKind.Illegal;
             zapValues[i] = zapValueForKind(kind);
         }
         ((AMD64HotSpotLIRGenerationResult) getResult()).getCalleeSaveInfo().put(currentRuntimeCallInfo, emitZapRegisters(zappedRegisters, zapValues));
@@ -432,7 +432,7 @@
         // TODO(mg): in case a native function uses floating point varargs, the ABI requires that
         // RAX contains the length of the varargs
         PrimitiveConstant intConst = JavaConstant.forInt(numberOfFloatingPointArguments);
-        AllocatableValue numberOfFloatingPointArgumentsRegister = AMD64.rax.asValue(LIRKind.value(Kind.Int));
+        AllocatableValue numberOfFloatingPointArgumentsRegister = AMD64.rax.asValue(LIRKind.value(JavaKind.Int));
         emitMoveConstant(numberOfFloatingPointArgumentsRegister, intConst);
         for (int i = 0; i < args.length; i++) {
             Value arg = args[i];
@@ -440,7 +440,7 @@
             emitMove(loc, arg);
             argLocations[i] = loc;
         }
-        Value ptr = emitLoadConstant(LIRKind.value(Kind.Long), JavaConstant.forLong(address));
+        Value ptr = emitLoadConstant(LIRKind.value(JavaKind.Long), JavaConstant.forLong(address));
         append(new AMD64CCall(nativeCallingConvention.getReturn(), ptr, numberOfFloatingPointArgumentsRegister, argLocations));
     }
 
@@ -475,7 +475,7 @@
     @Override
     public void emitDeoptimizeCaller(DeoptimizationAction action, DeoptimizationReason reason) {
         Value actionAndReason = emitJavaConstant(getMetaAccess().encodeDeoptActionAndReason(action, reason, 0));
-        Value nullValue = emitConstant(LIRKind.reference(Kind.Long), JavaConstant.NULL_POINTER);
+        Value nullValue = emitConstant(LIRKind.reference(JavaKind.Long), JavaConstant.NULL_POINTER);
         moveDeoptValuesToThread(actionAndReason, nullValue);
         append(new AMD64HotSpotDeoptimizeCallerOp(saveRbp.getRbpRescueSlot()));
     }
@@ -509,12 +509,12 @@
     }
 
     @Override
-    protected void emitStoreConst(Kind kind, AMD64AddressValue address, ConstantValue value, LIRFrameState state) {
+    protected void emitStoreConst(JavaKind kind, AMD64AddressValue address, ConstantValue value, LIRFrameState state) {
         Constant c = value.getConstant();
         if (c instanceof HotSpotConstant && !JavaConstant.isNull(c)) {
             HotSpotConstant hc = (HotSpotConstant) c;
             if (hc.isCompressed()) {
-                assert kind == Kind.Int;
+                assert kind == JavaKind.Int;
                 if (!target().inlineObjects && hc instanceof HotSpotObjectConstant) {
                     emitStore(kind, address, asAllocatable(value), state);
                 } else {
@@ -531,18 +531,18 @@
     @Override
     public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
         LIRKind inputKind = pointer.getLIRKind();
-        assert inputKind.getPlatformKind() == Kind.Long;
+        assert inputKind.getPlatformKind() == JavaKind.Long;
         if (inputKind.isReference(0)) {
             // oop
-            Variable result = newVariable(LIRKind.reference(Kind.Int));
+            Variable result = newVariable(LIRKind.reference(JavaKind.Int));
             append(new AMD64HotSpotMove.CompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
             return result;
         } else {
             // metaspace pointer
-            Variable result = newVariable(LIRKind.value(Kind.Int));
+            Variable result = newVariable(LIRKind.value(JavaKind.Int));
             AllocatableValue base = Value.ILLEGAL;
             if (encoding.base != 0) {
-                base = emitLoadConstant(LIRKind.value(Kind.Long), JavaConstant.forLong(encoding.base));
+                base = emitLoadConstant(LIRKind.value(JavaKind.Long), JavaConstant.forLong(encoding.base));
             }
             append(new AMD64HotSpotMove.CompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
             return result;
@@ -552,18 +552,18 @@
     @Override
     public Value emitUncompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
         LIRKind inputKind = pointer.getLIRKind();
-        assert inputKind.getPlatformKind() == Kind.Int;
+        assert inputKind.getPlatformKind() == JavaKind.Int;
         if (inputKind.isReference(0)) {
             // oop
-            Variable result = newVariable(LIRKind.reference(Kind.Long));
+            Variable result = newVariable(LIRKind.reference(JavaKind.Long));
             append(new AMD64HotSpotMove.UncompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
             return result;
         } else {
             // metaspace pointer
-            Variable result = newVariable(LIRKind.value(Kind.Long));
+            Variable result = newVariable(LIRKind.value(JavaKind.Long));
             AllocatableValue base = Value.ILLEGAL;
             if (encoding.base != 0) {
-                base = emitLoadConstant(LIRKind.value(Kind.Long), JavaConstant.forLong(encoding.base));
+                base = emitLoadConstant(LIRKind.value(JavaKind.Long), JavaConstant.forLong(encoding.base));
             }
             append(new AMD64HotSpotMove.UncompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
             return result;
@@ -585,7 +585,7 @@
 
     @Override
     public void emitNullCheck(Value address, LIRFrameState state) {
-        if (address.getLIRKind().getPlatformKind() == Kind.Int) {
+        if (address.getLIRKind().getPlatformKind() == JavaKind.Int) {
             CompressEncoding encoding = config.getOopEncoding();
             Value uncompressed;
             if (encoding.shift <= 3) {
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveCurrentStackFrameOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveCurrentStackFrameOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -57,12 +57,12 @@
 
         // Restore integer result register.
         final int stackSlotSize = frameMap.getTarget().wordSize;
-        Register integerResultRegister = registerConfig.getReturnRegister(Kind.Long);
+        Register integerResultRegister = registerConfig.getReturnRegister(JavaKind.Long);
         masm.movptr(integerResultRegister, new AMD64Address(stackPointer, registerSaveLayout.registerToSlot(integerResultRegister) * stackSlotSize));
         masm.movptr(rdx, new AMD64Address(stackPointer, registerSaveLayout.registerToSlot(rdx) * stackSlotSize));
 
         // Restore float result register.
-        Register floatResultRegister = registerConfig.getReturnRegister(Kind.Double);
+        Register floatResultRegister = registerConfig.getReturnRegister(JavaKind.Double);
         masm.movdbl(floatResultRegister, new AMD64Address(stackPointer, registerSaveLayout.registerToSlot(floatResultRegister) * stackSlotSize));
 
         /*
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveUnpackFramesStackFrameOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveUnpackFramesStackFrameOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -74,10 +74,10 @@
 
         // Restore return values.
         final int stackSlotSize = frameMap.getTarget().wordSize;
-        Register integerResultRegister = registerConfig.getReturnRegister(Kind.Long);
+        Register integerResultRegister = registerConfig.getReturnRegister(JavaKind.Long);
         masm.movptr(integerResultRegister, new AMD64Address(stackPointerRegister, registerSaveLayout.registerToSlot(integerResultRegister) * stackSlotSize));
 
-        Register floatResultRegister = registerConfig.getReturnRegister(Kind.Double);
+        Register floatResultRegister = registerConfig.getReturnRegister(JavaKind.Double);
         masm.movdbl(floatResultRegister, new AMD64Address(stackPointerRegister, registerSaveLayout.registerToSlot(floatResultRegister) * stackSlotSize));
     }
 }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotMove.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotMove.java	Tue Sep 08 19:57:39 2015 +0200
@@ -118,7 +118,7 @@
             if (isRegister(result)) {
                 if (compressed) {
                     if (isImmutable && generatePIC) {
-                        Kind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
+                        JavaKind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
                         int alignment = hostWordKind.getBitCount() / Byte.SIZE;
                         // recordDataReferenceInCode forces the mov to be rip-relative
                         masm.movl(asRegister(result), (AMD64Address) crb.recordDataReferenceInCode(JavaConstant.INT_0, alignment));
@@ -128,7 +128,7 @@
                     }
                 } else {
                     if (isImmutable && generatePIC) {
-                        Kind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
+                        JavaKind hostWordKind = HotSpotGraalRuntime.getHostWordKind();
                         int alignment = hostWordKind.getBitCount() / Byte.SIZE;
                         // recordDataReferenceInCode forces the mov to be rip-relative
                         masm.movq(asRegister(result), (AMD64Address) crb.recordDataReferenceInCode(JavaConstant.INT_0, alignment));
@@ -181,7 +181,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
-            AMD64Move.move(Kind.Long, crb, masm, result, input);
+            AMD64Move.move(JavaKind.Long, crb, masm, result, input);
 
             Register resReg = asRegister(result);
             if (encoding.base != 0) {
@@ -229,8 +229,8 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
-            assert result.getPlatformKind() instanceof Kind : "Can only deal with Kind: " + result.getLIRKind();
-            Kind kind = (Kind) result.getPlatformKind();
+            assert result.getPlatformKind() instanceof JavaKind : "Can only deal with Kind: " + result.getLIRKind();
+            JavaKind kind = (JavaKind) result.getPlatformKind();
             AMD64Move.move(kind, crb, masm, result, input);
             AMD64Move.move(kind, crb, masm, stackSlot, input);
         }
@@ -257,7 +257,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
-            AMD64Move.move(Kind.Int, crb, masm, result, input);
+            AMD64Move.move(JavaKind.Int, crb, masm, result, input);
 
             Register resReg = asRegister(result);
             if (encoding.shift != 0) {
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -67,7 +67,7 @@
 
     @Override
     protected DebugInfoBuilder createDebugInfoBuilder(StructuredGraph graph, NodeValueMap nodeValueMap) {
-        HotSpotLockStack lockStack = new HotSpotLockStack(gen.getResult().getFrameMapBuilder(), LIRKind.value(Kind.Long));
+        HotSpotLockStack lockStack = new HotSpotLockStack(gen.getResult().getFrameMapBuilder(), LIRKind.value(JavaKind.Long));
         return new HotSpotDebugInfoBuilder(nodeValueMap, lockStack);
     }
 
@@ -86,7 +86,7 @@
                 }
             }
         }
-        params[params.length - 1] = rbp.asValue(LIRKind.value(Kind.Long));
+        params[params.length - 1] = rbp.asValue(LIRKind.value(JavaKind.Long));
 
         gen.emitIncomingValues(params);
 
@@ -173,7 +173,7 @@
 
         RegisterValue raxLocal = AMD64.rax.asValue(expected.getLIRKind());
         gen.emitMove(raxLocal, expected);
-        append(new CompareAndSwapOp((Kind) expected.getPlatformKind(), raxLocal, getGen().asAddressValue(operand(x.getAddress())), raxLocal, newVal));
+        append(new CompareAndSwapOp((JavaKind) expected.getPlatformKind(), raxLocal, getGen().asAddressValue(operand(x.getAddress())), raxLocal, newVal));
 
         setResult(x, gen.emitMove(raxLocal));
     }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotSafepointOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotSafepointOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -76,7 +76,7 @@
     public static void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler asm, HotSpotVMConfig config, boolean atReturn, LIRFrameState state, Register scratch) {
         assert !atReturn || state == null : "state is unneeded at return";
         if (ImmutableCode.getValue()) {
-            Kind hostWordKind = Kind.Long;
+            JavaKind hostWordKind = JavaKind.Long;
             int alignment = hostWordKind.getBitCount() / Byte.SIZE;
             JavaConstant pollingPageAddress = JavaConstant.forIntegerKind(hostWordKind, config.safepointPollingAddress);
             // This move will be patched to load the safepoint page from a data segment
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -40,7 +40,7 @@
     protected final JavaConstant functionPointer;
     @Input NodeInputList<ValueNode> args;
 
-    public AMD64RawNativeCallNode(Kind returnType, JavaConstant functionPointer, ValueNode[] args) {
+    public AMD64RawNativeCallNode(JavaKind returnType, JavaConstant functionPointer, ValueNode[] args) {
         super(TYPE, StampFactory.forKind(returnType));
         this.functionPointer = functionPointer;
         this.args = new NodeInputList<>(this, args);
@@ -59,7 +59,7 @@
         CallingConvention cc = generator.getLIRGeneratorTool().getCodeCache().getRegisterConfig().getCallingConvention(Type.NativeCall, returnType, parameterTypes,
                         generator.getLIRGeneratorTool().target(), false);
         gen.getLIRGeneratorTool().emitCCall(functionPointer.asLong(), cc, parameter, countFloatingTypeArguments(args));
-        if (this.getStackKind() != Kind.Void) {
+        if (this.getStackKind() != JavaKind.Void) {
             generator.setResult(this, gen.getLIRGeneratorTool().emitMove(cc.getReturn()));
         }
     }
@@ -67,7 +67,7 @@
     private static int countFloatingTypeArguments(NodeInputList<ValueNode> args) {
         int count = 0;
         for (ValueNode n : args) {
-            if (n.getStackKind() == Kind.Double || n.getStackKind() == Kind.Float) {
+            if (n.getStackKind() == JavaKind.Double || n.getStackKind() == JavaKind.Float) {
                 count++;
             }
         }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallEpilogueOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallEpilogueOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -56,7 +56,7 @@
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
 
         // Restore the thread register when coming back from the runtime.
-        SPARCMove.move(crb, masm, thread.asValue(LIRKind.value(Kind.Long)), threadTemp, SPARCDelayedControlTransfer.DUMMY);
+        SPARCMove.move(crb, masm, thread.asValue(LIRKind.value(JavaKind.Long)), threadTemp, SPARCDelayedControlTransfer.DUMMY);
 
         // Reset last Java frame, last Java PC and flags.
         masm.stx(g0, new SPARCAddress(thread, threadLastJavaSpOffset));
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -61,6 +61,6 @@
         masm.stx(scratchRegister, new SPARCAddress(thread, threadLastJavaSpOffset));
 
         // Save the thread register when calling out to the runtime.
-        SPARCMove.move(crb, masm, threadTemp, thread.asValue(LIRKind.value(Kind.Long)), getDelayedControlTransfer());
+        SPARCMove.move(crb, masm, threadTemp, thread.asValue(LIRKind.value(JavaKind.Long)), getDelayedControlTransfer());
     }
 }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotForeignCallsProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotForeignCallsProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -50,14 +50,14 @@
     @Override
     public void initialize(HotSpotProviders providers, HotSpotVMConfig config) {
         TargetDescription target = providers.getCodeCache().getTarget();
-        Kind word = target.wordKind;
+        JavaKind word = target.wordKind;
 
         // The calling convention for the exception handler stub is (only?) defined in
         // TemplateInterpreterGenerator::generate_throw_exception()
         // in templateInterpreter_sparc.cpp around line 1925
-        RegisterValue outgoingException = o0.asValue(target.getLIRKind(Kind.Object));
+        RegisterValue outgoingException = o0.asValue(target.getLIRKind(JavaKind.Object));
         RegisterValue outgoingExceptionPc = o1.asValue(target.getLIRKind(word));
-        RegisterValue incomingException = i0.asValue(target.getLIRKind(Kind.Object));
+        RegisterValue incomingException = i0.asValue(target.getLIRKind(JavaKind.Object));
         RegisterValue incomingExceptionPc = i1.asValue(LIRKind.value(word));
         CallingConvention outgoingExceptionCc = new CallingConvention(0, ILLEGAL, outgoingException, outgoingExceptionPc);
         CallingConvention incomingExceptionCc = new CallingConvention(0, ILLEGAL, incomingException, incomingExceptionPc);
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotJumpToExceptionHandlerOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -54,7 +54,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        Register addrRegister = asRegister(address, Kind.Long);
+        Register addrRegister = asRegister(address, JavaKind.Long);
         masm.jmp(addrRegister);
         masm.restoreWindow();
     }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java	Tue Sep 08 19:57:39 2015 +0200
@@ -140,7 +140,7 @@
         if (linkage.destroysRegisters() || hotspotLinkage.needsJavaFrameAnchor()) {
             HotSpotRegistersProvider registers = getProviders().getRegisters();
             Register thread = registers.getThreadRegister();
-            Value threadTemp = newVariable(LIRKind.value(Kind.Long));
+            Value threadTemp = newVariable(LIRKind.value(JavaKind.Long));
             Register stackPointer = registers.getStackPointerRegister();
             Variable spScratch = newVariable(LIRKind.value(target().wordKind));
             append(new SPARCHotSpotCRuntimeCallPrologueOp(config.threadLastJavaSpOffset(), thread, stackPointer, threadTemp, spScratch));
@@ -240,7 +240,7 @@
     public Variable emitCompareAndSwap(Value address, Value expectedValue, Value newValue, Value trueValue, Value falseValue) {
         LIRKind kind = newValue.getLIRKind();
         assert kind.equals(expectedValue.getLIRKind());
-        Kind memKind = (Kind) kind.getPlatformKind();
+        JavaKind memKind = (JavaKind) kind.getPlatformKind();
         Variable result = newVariable(newValue.getLIRKind());
         append(new CompareAndSwapOp(result, asAllocatable(address), asAllocatable(expectedValue), asAllocatable(newValue)));
         return emitConditionalMove(memKind, expectedValue, result, Condition.EQ, true, trueValue, falseValue);
@@ -287,7 +287,7 @@
         if (isConstantValue(a)) {
             Constant c = asConstant(a);
             if (HotSpotCompressedNullConstant.COMPRESSED_NULL.equals(c)) {
-                localA = SPARC.g0.asValue(LIRKind.value(Kind.Int));
+                localA = SPARC.g0.asValue(LIRKind.value(JavaKind.Int));
             } else if (c instanceof HotSpotObjectConstant) {
                 localA = load(localA);
             }
@@ -295,7 +295,7 @@
         if (isConstantValue(b)) {
             Constant c = asConstant(b);
             if (HotSpotCompressedNullConstant.COMPRESSED_NULL.equals(c)) {
-                localB = SPARC.g0.asValue(LIRKind.value(Kind.Int));
+                localB = SPARC.g0.asValue(LIRKind.value(JavaKind.Int));
             } else if (c instanceof HotSpotObjectConstant) {
                 localB = load(localB);
             }
@@ -306,18 +306,18 @@
     @Override
     public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
         LIRKind inputKind = pointer.getLIRKind();
-        assert inputKind.getPlatformKind() == Kind.Long || inputKind.getPlatformKind() == Kind.Object;
+        assert inputKind.getPlatformKind() == JavaKind.Long || inputKind.getPlatformKind() == JavaKind.Object;
         if (inputKind.isReference(0)) {
             // oop
-            Variable result = newVariable(LIRKind.reference(Kind.Int));
+            Variable result = newVariable(LIRKind.reference(JavaKind.Int));
             append(new SPARCHotSpotMove.CompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
             return result;
         } else {
             // metaspace pointer
-            Variable result = newVariable(LIRKind.value(Kind.Int));
+            Variable result = newVariable(LIRKind.value(JavaKind.Int));
             AllocatableValue base = Value.ILLEGAL;
             if (encoding.base != 0) {
-                base = emitLoadConstant(LIRKind.value(Kind.Long), JavaConstant.forLong(encoding.base));
+                base = emitLoadConstant(LIRKind.value(JavaKind.Long), JavaConstant.forLong(encoding.base));
             }
             append(new SPARCHotSpotMove.CompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
             return result;
@@ -327,18 +327,18 @@
     @Override
     public Value emitUncompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
         LIRKind inputKind = pointer.getLIRKind();
-        assert inputKind.getPlatformKind() == Kind.Int;
+        assert inputKind.getPlatformKind() == JavaKind.Int;
         if (inputKind.isReference(0)) {
             // oop
-            Variable result = newVariable(LIRKind.reference(Kind.Object));
+            Variable result = newVariable(LIRKind.reference(JavaKind.Object));
             append(new SPARCHotSpotMove.UncompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
             return result;
         } else {
             // metaspace pointer
-            Variable result = newVariable(LIRKind.value(Kind.Long));
+            Variable result = newVariable(LIRKind.value(JavaKind.Long));
             AllocatableValue base = Value.ILLEGAL;
             if (encoding.base != 0) {
-                base = emitLoadConstant(LIRKind.value(Kind.Long), JavaConstant.forLong(encoding.base));
+                base = emitLoadConstant(LIRKind.value(JavaKind.Long), JavaConstant.forLong(encoding.base));
             }
             append(new SPARCHotSpotMove.UncompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
             return result;
@@ -376,7 +376,7 @@
         StackSlotValue[] savedRegisterLocations = new StackSlotValue[savedRegisters.length];
         for (int i = 0; i < savedRegisters.length; i++) {
             PlatformKind kind = target().arch.getLargestStorableKind(savedRegisters[i].getRegisterCategory());
-            assert kind != Kind.Illegal;
+            assert kind != JavaKind.Illegal;
             VirtualStackSlot spillSlot = getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(kind));
             savedRegisterLocations[i] = spillSlot;
         }
@@ -455,7 +455,7 @@
     @Override
     public void emitNullCheck(Value address, LIRFrameState state) {
         PlatformKind kind = address.getPlatformKind();
-        if (kind == Kind.Int) {
+        if (kind == JavaKind.Int) {
             CompressEncoding encoding = config.getOopEncoding();
             Value uncompressed = emitUncompress(address, encoding, false);
             append(new NullCheckOp(asAddressValue(uncompressed), state));
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -58,7 +58,7 @@
 
     @Override
     protected DebugInfoBuilder createDebugInfoBuilder(StructuredGraph graph, NodeValueMap nodeValueMap) {
-        HotSpotLockStack lockStack = new HotSpotLockStack(gen.getResult().getFrameMapBuilder(), LIRKind.value(Kind.Long));
+        HotSpotLockStack lockStack = new HotSpotLockStack(gen.getResult().getFrameMapBuilder(), LIRKind.value(JavaKind.Long));
         return new HotSpotDebugInfoBuilder(nodeValueMap, lockStack);
     }
 
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -50,7 +50,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        Register addrRegister = asRegister(address, Kind.Long);
+        Register addrRegister = asRegister(address, JavaKind.Long);
         masm.sub(addrRegister, SPARCAssembler.PC_RETURN_OFFSET, i7);
     }
 }
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -81,7 +81,7 @@
     public void testStaticFinalObject() {
         StructuredGraph result = compile("getStaticFinalObject", false);
         assertDeepEquals(1, getConstantNodes(result).count());
-        assertDeepEquals(Kind.Object, getConstantNodes(result).first().getStackKind());
+        assertDeepEquals(JavaKind.Object, getConstantNodes(result).first().getStackKind());
         assertDeepEquals(0, result.getNodes().filter(FloatingReadNode.class).count());
         assertDeepEquals(0, result.getNodes().filter(ReadNode.class).count());
     }
@@ -187,7 +187,7 @@
         assertDeepEquals(1, result.getNodes(PiNode.TYPE).count());
         assertDeepEquals(1, getConstantNodes(result).count());
         ConstantNode constant = getConstantNodes(result).first();
-        assertDeepEquals(Kind.Long, constant.getStackKind());
+        assertDeepEquals(JavaKind.Long, constant.getStackKind());
         assertDeepEquals(((HotSpotResolvedObjectType) getMetaAccess().lookupJavaType(Boolean.class)).klass(), constant.asConstant());
     }
 
@@ -198,7 +198,7 @@
         assertDeepEquals(0, result.getNodes(PiNode.TYPE).count());
         assertDeepEquals(1, getConstantNodes(result).count());
         ConstantNode constant = getConstantNodes(result).first();
-        assertDeepEquals(Kind.Object, constant.getStackKind());
+        assertDeepEquals(JavaKind.Object, constant.getStackKind());
 
         HotSpotObjectConstantImpl c = (HotSpotObjectConstantImpl) constant.asConstant();
         Assert.assertTrue(c.isEqualTo(Boolean.TRUE));
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedObjectTypeTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedObjectTypeTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -45,9 +45,9 @@
         JavaConstant klass = HotSpotResolvedObjectTypeImpl.fromObjectClass(this.getClass()).klass();
         MemoryAccessProvider memoryAccess = getProviders().getConstantReflection().getMemoryAccessProvider();
         HotSpotVMConfig config = runtime().getConfig();
-        Constant c = StampFactory.forKind(Kind.Int).readConstant(memoryAccess, klass, config.klassLayoutHelperOffset);
+        Constant c = StampFactory.forKind(JavaKind.Int).readConstant(memoryAccess, klass, config.klassLayoutHelperOffset);
         assertTrue(c.toString(), c.getClass() == PrimitiveConstant.class);
         PrimitiveConstant pc = (PrimitiveConstant) c;
-        assertTrue(pc.toString(), pc.getKind() == Kind.Int);
+        assertTrue(pc.toString(), pc.getJavaKind() == JavaKind.Int);
     }
 }
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/InstalledCodeExecuteHelperTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/InstalledCodeExecuteHelperTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -78,7 +78,7 @@
             assert parameterTypes.length == args.length;
             for (int i = 0; i < argsToBind.length; i++) {
                 ParameterNode param = graph.getParameter(i);
-                JavaConstant c = HotSpotObjectConstantImpl.forBoxedValue(parameterTypes[i].getKind(), argsToBind[i]);
+                JavaConstant c = HotSpotObjectConstantImpl.forBoxedValue(parameterTypes[i].getJavaKind(), argsToBind[i]);
                 ConstantNode replacement = ConstantNode.forConstant(c, getMetaAccess(), graph);
                 param.replaceAtUsages(replacement);
             }
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/LoadJavaMirrorWithKlassTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/LoadJavaMirrorWithKlassTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -66,7 +66,7 @@
     @Override
     protected boolean checkLowTierGraph(StructuredGraph graph) {
         for (ConstantNode constantNode : graph.getNodes().filter(ConstantNode.class)) {
-            assert constantNode.asJavaConstant() == null || constantNode.asJavaConstant().getKind() != Kind.Object || constantNode.asJavaConstant().isDefaultForKind() : "Found unexpected object constant " +
+            assert constantNode.asJavaConstant() == null || constantNode.asJavaConstant().getJavaKind() != JavaKind.Object || constantNode.asJavaConstant().isDefaultForKind() : "Found unexpected object constant " +
                             constantNode + ", this should have been removed by the LoadJavaMirrorWithKlassPhase.";
         }
         return true;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCounterOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCounterOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -64,7 +64,7 @@
     }
 
     protected static int getDisplacementForLongIndex(TargetDescription target, long index) {
-        long finalDisp = index * target.getSizeInBytes(Kind.Long);
+        long finalDisp = index * target.getSizeInBytes(JavaKind.Long);
         if (!NumUtil.isInt(finalDisp)) {
             throw JVMCIError.unimplemented("cannot deal with indices that big: " + index);
         }
@@ -133,7 +133,7 @@
     }
 
     private static long asLong(JavaConstant value) {
-        Kind kind = value.getKind();
+        JavaKind kind = value.getJavaKind();
         switch (kind) {
             case Byte:
             case Short:
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Tue Sep 08 19:57:39 2015 +0200
@@ -105,21 +105,21 @@
     }
 
     private boolean checkArrayIndexScaleInvariants() {
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Byte) == 1;
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Boolean) == 1;
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Char) == 2;
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Short) == 2;
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Int) == 4;
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Long) == 8;
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Float) == 4;
-        assert getJVMCIRuntime().getArrayIndexScale(Kind.Double) == 8;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Byte) == 1;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Boolean) == 1;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Char) == 2;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Short) == 2;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Int) == 4;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Long) == 8;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Float) == 4;
+        assert getJVMCIRuntime().getArrayIndexScale(JavaKind.Double) == 8;
         return true;
     }
 
     /**
      * Gets the kind of a word value on the {@linkplain #getHostBackend() host} backend.
      */
-    public static Kind getHostWordKind() {
+    public static JavaKind getHostWordKind() {
         return runtime().getHostBackend().getTarget().wordKind;
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotInstructionProfiling.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotInstructionProfiling.java	Tue Sep 08 19:57:39 2015 +0200
@@ -85,7 +85,7 @@
             for (int i = 0; i < instructionsToProfile.length; i++) {
                 names[i] = compilationUnitName;
                 groups[i] = COUNTER_GROUP + " " + instructionsToProfile[i];
-                increments[i] = new ConstantValue(target.getLIRKind(Kind.Int), JavaConstant.INT_0);
+                increments[i] = new ConstantValue(target.getLIRKind(JavaKind.Int), JavaConstant.INT_0);
             }
             HotSpotCounterOp op = (HotSpotCounterOp) counterFactory.createMultiBenchmarkCounter(names, groups, increments);
             LIRInstruction inst = new InstructionCounterOp(op, instructionsToProfile);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -274,7 +274,7 @@
                 HotSpotResolvedJavaMethod hsMethod = (HotSpotResolvedJavaMethod) callTarget.targetMethod();
                 ResolvedJavaType receiverType = invoke.getReceiverType();
                 if (hsMethod.isInVirtualMethodTable(receiverType)) {
-                    Kind wordKind = runtime.getTarget().wordKind;
+                    JavaKind wordKind = runtime.getTarget().wordKind;
                     ValueNode hub = createReadHub(graph, receiver, receiverNullCheck, tool);
 
                     ReadNode metaspaceMethod = createReadVirtualMethod(graph, hub, hsMethod, receiverType);
@@ -302,16 +302,16 @@
     }
 
     @Override
-    protected Stamp loadStamp(Stamp stamp, Kind kind, boolean compressible) {
-        if (kind == Kind.Object && compressible && runtime.getConfig().useCompressedOops) {
+    protected Stamp loadStamp(Stamp stamp, JavaKind kind, boolean compressible) {
+        if (kind == JavaKind.Object && compressible && runtime.getConfig().useCompressedOops) {
             return NarrowOopStamp.compressed((ObjectStamp) stamp, runtime.getConfig().getOopEncoding());
         }
         return super.loadStamp(stamp, kind, compressible);
     }
 
     @Override
-    protected ValueNode implicitLoadConvert(StructuredGraph graph, Kind kind, ValueNode value, boolean compressible) {
-        if (kind == Kind.Object && compressible && runtime.getConfig().useCompressedOops) {
+    protected ValueNode implicitLoadConvert(StructuredGraph graph, JavaKind kind, ValueNode value, boolean compressible) {
+        if (kind == JavaKind.Object && compressible && runtime.getConfig().useCompressedOops) {
             return CompressionNode.uncompress(value, runtime.getConfig().getOopEncoding());
         }
         return super.implicitLoadConvert(graph, kind, value, compressible);
@@ -325,8 +325,8 @@
     }
 
     @Override
-    protected ValueNode implicitStoreConvert(StructuredGraph graph, Kind kind, ValueNode value, boolean compressible) {
-        if (kind == Kind.Object && compressible && runtime.getConfig().useCompressedOops) {
+    protected ValueNode implicitStoreConvert(StructuredGraph graph, JavaKind kind, ValueNode value, boolean compressible) {
+        if (kind == JavaKind.Object && compressible && runtime.getConfig().useCompressedOops) {
             return CompressionNode.compress(value, runtime.getConfig().getOopEncoding());
         }
         return super.implicitStoreConvert(graph, kind, value, compressible);
@@ -374,13 +374,13 @@
     }
 
     @Override
-    protected BarrierType fieldInitializationBarrier(Kind entryKind) {
-        return (entryKind == Kind.Object && !runtime.getConfig().useDeferredInitBarriers) ? BarrierType.IMPRECISE : BarrierType.NONE;
+    protected BarrierType fieldInitializationBarrier(JavaKind entryKind) {
+        return (entryKind == JavaKind.Object && !runtime.getConfig().useDeferredInitBarriers) ? BarrierType.IMPRECISE : BarrierType.NONE;
     }
 
     @Override
-    protected BarrierType arrayInitializationBarrier(Kind entryKind) {
-        return (entryKind == Kind.Object && !runtime.getConfig().useDeferredInitBarriers) ? BarrierType.PRECISE : BarrierType.NONE;
+    protected BarrierType arrayInitializationBarrier(JavaKind entryKind) {
+        return (entryKind == JavaKind.Object && !runtime.getConfig().useDeferredInitBarriers) ? BarrierType.PRECISE : BarrierType.NONE;
     }
 
     private void lowerOSRStartNode(OSRStartNode osrStart) {
@@ -461,8 +461,8 @@
     }
 
     private boolean addReadBarrier(UnsafeLoadNode load) {
-        if (runtime.getConfig().useG1GC && load.graph().getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS && load.object().getStackKind() == Kind.Object &&
-                        load.accessKind() == Kind.Object && !StampTool.isPointerAlwaysNull(load.object())) {
+        if (runtime.getConfig().useG1GC && load.graph().getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS && load.object().getStackKind() == JavaKind.Object &&
+                        load.accessKind() == JavaKind.Object && !StampTool.isPointerAlwaysNull(load.object())) {
             ResolvedJavaType type = StampTool.typeOrNull(load.object());
             if (type != null && !type.isArray()) {
                 return true;
@@ -524,7 +524,7 @@
     protected BarrierType fieldLoadBarrierType(ResolvedJavaField f) {
         HotSpotResolvedJavaField loadField = (HotSpotResolvedJavaField) f;
         BarrierType barrierType = BarrierType.NONE;
-        if (runtime.getConfig().useG1GC && loadField.getKind() == Kind.Object && metaAccess.lookupJavaType(Reference.class).equals(loadField.getDeclaringClass()) &&
+        if (runtime.getConfig().useG1GC && loadField.getJavaKind() == JavaKind.Object && metaAccess.lookupJavaType(Reference.class).equals(loadField.getDeclaringClass()) &&
                         loadField.getName().equals("referent")) {
             barrierType = BarrierType.PRECISE;
         }
@@ -538,16 +538,16 @@
     }
 
     @Override
-    public int arrayScalingFactor(Kind kind) {
-        if (runtime.getConfig().useCompressedOops && kind == Kind.Object) {
-            return super.arrayScalingFactor(Kind.Int);
+    public int arrayScalingFactor(JavaKind kind) {
+        if (runtime.getConfig().useCompressedOops && kind == JavaKind.Object) {
+            return super.arrayScalingFactor(JavaKind.Int);
         } else {
             return super.arrayScalingFactor(kind);
         }
     }
 
     @Override
-    protected int arrayBaseOffset(Kind kind) {
+    protected int arrayBaseOffset(JavaKind kind) {
         return runtime.getJVMCIRuntime().getArrayBaseOffset(kind);
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java	Tue Sep 08 19:57:39 2015 +0200
@@ -103,7 +103,7 @@
         r.register1("clone", Receiver.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
                 ValueNode object = receiver.get();
-                b.addPush(Kind.Object, new ObjectCloneNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), object));
+                b.addPush(JavaKind.Object, new ObjectCloneNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), object));
                 return true;
             }
 
@@ -129,9 +129,9 @@
                 ValueNode javaClass = receiver.get();
                 ValueNode folded = ClassCastNode.tryFold(GraphUtil.originalValue(javaClass), object, b.getConstantReflection(), b.getAssumptions());
                 if (folded != null) {
-                    b.addPush(Kind.Object, folded);
+                    b.addPush(JavaKind.Object, folded);
                 } else {
-                    b.addPush(Kind.Object, new ClassCastNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), javaClass, object));
+                    b.addPush(JavaKind.Object, new ClassCastNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), javaClass, object));
                 }
                 return true;
             }
@@ -148,9 +148,9 @@
                 ValueNode callSite = receiver.get();
                 ValueNode folded = CallSiteTargetNode.tryFold(GraphUtil.originalValue(callSite), b.getMetaAccess(), b.getAssumptions());
                 if (folded != null) {
-                    b.addPush(Kind.Object, folded);
+                    b.addPush(JavaKind.Object, folded);
                 } else {
-                    b.addPush(Kind.Object, new CallSiteTargetNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), callSite));
+                    b.addPush(JavaKind.Object, new CallSiteTargetNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), callSite));
                 }
                 return true;
             }
@@ -168,7 +168,7 @@
         Registration r = new Registration(plugins, Reflection.class);
         r.register0("getCallerClass", new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
-                b.addPush(Kind.Object, new ReflectionGetCallerClassNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType()));
+                b.addPush(JavaKind.Object, new ReflectionGetCallerClassNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType()));
                 return true;
             }
 
@@ -184,7 +184,7 @@
         r.register0("nanoTime", new ForeignCallPlugin(foreignCalls, JAVA_TIME_NANOS));
         r.register1("identityHashCode", Object.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode object) {
-                b.addPush(Kind.Int, new IdentityHashCodeNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), object));
+                b.addPush(JavaKind.Int, new IdentityHashCodeNode(b.getInvokeKind(), targetMethod, b.bci(), b.getInvokeReturnType(), object));
                 return true;
             }
 
@@ -212,10 +212,10 @@
                 boolean compressible = false;
                 ValueNode offset = b.add(ConstantNode.forLong(config.threadObjectOffset));
                 AddressNode address = b.add(new OffsetAddressNode(thread, offset));
-                ValueNode javaThread = WordOperationPlugin.readOp(b, Kind.Object, address, JAVA_THREAD_THREAD_OBJECT_LOCATION, BarrierType.NONE, compressible);
+                ValueNode javaThread = WordOperationPlugin.readOp(b, JavaKind.Object, address, JAVA_THREAD_THREAD_OBJECT_LOCATION, BarrierType.NONE, compressible);
                 boolean exactType = compressible;
                 boolean nonNull = true;
-                b.addPush(Kind.Object, new PiNode(javaThread, metaAccess.lookupJavaType(Thread.class), exactType, nonNull));
+                b.addPush(JavaKind.Object, new PiNode(javaThread, metaAccess.lookupJavaType(Thread.class), exactType, nonNull));
                 return true;
             }
         });
@@ -227,7 +227,7 @@
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
                 if (receiver.isConstant()) {
                     StableOptionValue<?> option = snippetReflection.asObject(StableOptionValue.class, (JavaConstant) receiver.get().asConstant());
-                    b.addPush(Kind.Object, ConstantNode.forConstant(HotSpotObjectConstantImpl.forObject(option.getValue()), b.getMetaAccess()));
+                    b.addPush(JavaKind.Object, ConstantNode.forConstant(HotSpotObjectConstantImpl.forObject(option.getValue()), b.getMetaAccess()));
                     return true;
                 }
                 return false;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -76,20 +76,20 @@
         return checkcastArraycopyDescriptors[uninit ? 1 : 0];
     }
 
-    public static ForeignCallDescriptor lookupArraycopyDescriptor(Kind kind, boolean aligned, boolean disjoint, boolean uninit, boolean killAny) {
+    public static ForeignCallDescriptor lookupArraycopyDescriptor(JavaKind kind, boolean aligned, boolean disjoint, boolean uninit, boolean killAny) {
         if (uninit) {
-            assert kind == Kind.Object;
+            assert kind == JavaKind.Object;
             assert !killAny : "unsupported";
             return uninitObjectArraycopyDescriptors[aligned ? 1 : 0][disjoint ? 1 : 0];
         }
         if (killAny) {
-            assert kind == Kind.Object;
+            assert kind == JavaKind.Object;
             return objectArraycopyDescriptorsKillAny[aligned ? 1 : 0][disjoint ? 1 : 0];
         }
         return arraycopyDescriptors[aligned ? 1 : 0][disjoint ? 1 : 0].get(kind);
     }
 
-    @SuppressWarnings({"unchecked"}) private static final EnumMap<Kind, ForeignCallDescriptor>[][] arraycopyDescriptors = (EnumMap<Kind, ForeignCallDescriptor>[][]) new EnumMap<?, ?>[2][2];
+    @SuppressWarnings({"unchecked"}) private static final EnumMap<JavaKind, ForeignCallDescriptor>[][] arraycopyDescriptors = (EnumMap<JavaKind, ForeignCallDescriptor>[][]) new EnumMap<?, ?>[2][2];
 
     private static final ForeignCallDescriptor[][] uninitObjectArraycopyDescriptors = new ForeignCallDescriptor[2][2];
     private static final ForeignCallDescriptor[] checkcastArraycopyDescriptors = new ForeignCallDescriptor[2];
@@ -99,27 +99,27 @@
         // Populate the EnumMap instances
         for (int i = 0; i < arraycopyDescriptors.length; i++) {
             for (int j = 0; j < arraycopyDescriptors[i].length; j++) {
-                arraycopyDescriptors[i][j] = new EnumMap<>(Kind.class);
+                arraycopyDescriptors[i][j] = new EnumMap<>(JavaKind.class);
             }
         }
     }
 
-    private void registerArraycopyDescriptor(Map<Long, ForeignCallDescriptor> descMap, Kind kind, boolean aligned, boolean disjoint, boolean uninit, boolean killAny, long routine) {
+    private void registerArraycopyDescriptor(Map<Long, ForeignCallDescriptor> descMap, JavaKind kind, boolean aligned, boolean disjoint, boolean uninit, boolean killAny, long routine) {
         ForeignCallDescriptor desc = descMap.get(routine);
         if (desc == null) {
             desc = buildDescriptor(kind, aligned, disjoint, uninit, killAny, routine);
             descMap.put(routine, desc);
         }
         if (uninit) {
-            assert kind == Kind.Object;
+            assert kind == JavaKind.Object;
             uninitObjectArraycopyDescriptors[aligned ? 1 : 0][disjoint ? 1 : 0] = desc;
         } else {
             arraycopyDescriptors[aligned ? 1 : 0][disjoint ? 1 : 0].put(kind, desc);
         }
     }
 
-    private ForeignCallDescriptor buildDescriptor(Kind kind, boolean aligned, boolean disjoint, boolean uninit, boolean killAny, long routine) {
-        assert !killAny || kind == Kind.Object;
+    private ForeignCallDescriptor buildDescriptor(JavaKind kind, boolean aligned, boolean disjoint, boolean uninit, boolean killAny, long routine) {
+        assert !killAny || kind == JavaKind.Object;
         String name = kind + (aligned ? "Aligned" : "") + (disjoint ? "Disjoint" : "") + (uninit ? "Uninit" : "") + "Arraycopy" + (killAny ? "KillAny" : "");
         ForeignCallDescriptor desc = new ForeignCallDescriptor(name, void.class, Word.class, Word.class, Word.class);
         LocationIdentity killed = killAny ? LocationIdentity.any() : NamedLocationIdentity.getArrayLocation(kind);
@@ -137,16 +137,16 @@
         // c_rarg4 - oop ckval (super_klass)
         // return: 0 = success, n = number of copied elements xor'd with -1.
         ForeignCallDescriptor desc = new ForeignCallDescriptor(name, int.class, Word.class, Word.class, Word.class, Word.class, Word.class);
-        LocationIdentity killed = NamedLocationIdentity.getArrayLocation(Kind.Object);
+        LocationIdentity killed = NamedLocationIdentity.getArrayLocation(JavaKind.Object);
         registerForeignCall(desc, routine, NativeCall, DESTROYS_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE, killed);
         checkcastArraycopyDescriptors[uninit ? 1 : 0] = desc;
     }
 
-    private void registerArrayCopy(Kind kind, long routine, long alignedRoutine, long disjointRoutine, long alignedDisjointRoutine) {
+    private void registerArrayCopy(JavaKind kind, long routine, long alignedRoutine, long disjointRoutine, long alignedDisjointRoutine) {
         registerArrayCopy(kind, routine, alignedRoutine, disjointRoutine, alignedDisjointRoutine, false);
     }
 
-    private void registerArrayCopy(Kind kind, long routine, long alignedRoutine, long disjointRoutine, long alignedDisjointRoutine, boolean uninit) {
+    private void registerArrayCopy(JavaKind kind, long routine, long alignedRoutine, long disjointRoutine, long alignedDisjointRoutine, boolean uninit) {
         /*
          * Sometimes the same function is used for multiple cases so share them when that's the case
          * but only within the same Kind. For instance short and char are the same copy routines but
@@ -158,7 +158,7 @@
         registerArraycopyDescriptor(descMap, kind, false, true, uninit, false, disjointRoutine);
         registerArraycopyDescriptor(descMap, kind, true, true, uninit, false, alignedDisjointRoutine);
 
-        if (kind == Kind.Object && !uninit) {
+        if (kind == JavaKind.Object && !uninit) {
             objectArraycopyDescriptorsKillAny[0][0] = buildDescriptor(kind, false, false, uninit, true, routine);
             objectArraycopyDescriptorsKillAny[1][0] = buildDescriptor(kind, true, false, uninit, true, alignedRoutine);
             objectArraycopyDescriptorsKillAny[0][1] = buildDescriptor(kind, false, true, uninit, true, disjointRoutine);
@@ -235,16 +235,16 @@
 
         linkForeignCall(providers, TEST_DEOPTIMIZE_CALL_INT, c.testDeoptimizeCallInt, PREPEND_THREAD, NOT_LEAF, REEXECUTABLE, any());
 
-        registerArrayCopy(Kind.Byte, c.jbyteArraycopy, c.jbyteAlignedArraycopy, c.jbyteDisjointArraycopy, c.jbyteAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Boolean, c.jbyteArraycopy, c.jbyteAlignedArraycopy, c.jbyteDisjointArraycopy, c.jbyteAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Char, c.jshortArraycopy, c.jshortAlignedArraycopy, c.jshortDisjointArraycopy, c.jshortAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Short, c.jshortArraycopy, c.jshortAlignedArraycopy, c.jshortDisjointArraycopy, c.jshortAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Int, c.jintArraycopy, c.jintAlignedArraycopy, c.jintDisjointArraycopy, c.jintAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Float, c.jintArraycopy, c.jintAlignedArraycopy, c.jintDisjointArraycopy, c.jintAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Long, c.jlongArraycopy, c.jlongAlignedArraycopy, c.jlongDisjointArraycopy, c.jlongAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Double, c.jlongArraycopy, c.jlongAlignedArraycopy, c.jlongDisjointArraycopy, c.jlongAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Object, c.oopArraycopy, c.oopAlignedArraycopy, c.oopDisjointArraycopy, c.oopAlignedDisjointArraycopy);
-        registerArrayCopy(Kind.Object, c.oopArraycopyUninit, c.oopAlignedArraycopyUninit, c.oopDisjointArraycopyUninit, c.oopAlignedDisjointArraycopyUninit, true);
+        registerArrayCopy(JavaKind.Byte, c.jbyteArraycopy, c.jbyteAlignedArraycopy, c.jbyteDisjointArraycopy, c.jbyteAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Boolean, c.jbyteArraycopy, c.jbyteAlignedArraycopy, c.jbyteDisjointArraycopy, c.jbyteAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Char, c.jshortArraycopy, c.jshortAlignedArraycopy, c.jshortDisjointArraycopy, c.jshortAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Short, c.jshortArraycopy, c.jshortAlignedArraycopy, c.jshortDisjointArraycopy, c.jshortAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Int, c.jintArraycopy, c.jintAlignedArraycopy, c.jintDisjointArraycopy, c.jintAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Float, c.jintArraycopy, c.jintAlignedArraycopy, c.jintDisjointArraycopy, c.jintAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Long, c.jlongArraycopy, c.jlongAlignedArraycopy, c.jlongDisjointArraycopy, c.jlongAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Double, c.jlongArraycopy, c.jlongAlignedArraycopy, c.jlongDisjointArraycopy, c.jlongAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Object, c.oopArraycopy, c.oopAlignedArraycopy, c.oopDisjointArraycopy, c.oopAlignedDisjointArraycopy);
+        registerArrayCopy(JavaKind.Object, c.oopArraycopyUninit, c.oopAlignedArraycopyUninit, c.oopDisjointArraycopyUninit, c.oopAlignedDisjointArraycopyUninit, true);
 
         registerCheckcastArraycopyDescriptor(true, c.checkcastArraycopyUninit);
         registerCheckcastArraycopyDescriptor(false, c.checkcastArraycopy);
@@ -257,8 +257,8 @@
              */
             try {
                 // These stubs do callee saving
-                registerForeignCall(ENCRYPT_BLOCK, c.aescryptEncryptBlockStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE, NamedLocationIdentity.getArrayLocation(Kind.Byte));
-                registerForeignCall(DECRYPT_BLOCK, c.aescryptDecryptBlockStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE, NamedLocationIdentity.getArrayLocation(Kind.Byte));
+                registerForeignCall(ENCRYPT_BLOCK, c.aescryptEncryptBlockStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE, NamedLocationIdentity.getArrayLocation(JavaKind.Byte));
+                registerForeignCall(DECRYPT_BLOCK, c.aescryptDecryptBlockStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE, NamedLocationIdentity.getArrayLocation(JavaKind.Byte));
             } catch (JVMCIError e) {
                 if (!(e.getCause() instanceof ClassNotFoundException)) {
                     throw e;
@@ -266,8 +266,10 @@
             }
             try {
                 // These stubs do callee saving
-                registerForeignCall(ENCRYPT, c.cipherBlockChainingEncryptAESCryptStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE, NamedLocationIdentity.getArrayLocation(Kind.Byte));
-                registerForeignCall(DECRYPT, c.cipherBlockChainingDecryptAESCryptStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE, NamedLocationIdentity.getArrayLocation(Kind.Byte));
+                registerForeignCall(ENCRYPT, c.cipherBlockChainingEncryptAESCryptStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE,
+                                NamedLocationIdentity.getArrayLocation(JavaKind.Byte));
+                registerForeignCall(DECRYPT, c.cipherBlockChainingDecryptAESCryptStub, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, NOT_REEXECUTABLE,
+                                NamedLocationIdentity.getArrayLocation(JavaKind.Byte));
             } catch (JVMCIError e) {
                 if (!(e.getCause() instanceof ClassNotFoundException)) {
                     throw e;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java	Tue Sep 08 19:57:39 2015 +0200
@@ -23,7 +23,7 @@
 package com.oracle.graal.hotspot.meta;
 
 import jdk.internal.jvmci.hotspot.HotSpotVMConfig;
-import jdk.internal.jvmci.meta.Kind;
+import jdk.internal.jvmci.meta.JavaKind;
 import jdk.internal.jvmci.meta.MetaAccessProvider;
 import jdk.internal.jvmci.meta.ResolvedJavaType;
 
@@ -75,7 +75,7 @@
             for (Node node : newNodes) {
                 if (node.hasUsages() && node instanceof ConstantNode) {
                     ConstantNode c = (ConstantNode) node;
-                    if (c.getStackKind() == Kind.Object && AheadOfTimeVerificationPhase.isIllegalObjectConstant(c)) {
+                    if (c.getStackKind() == JavaKind.Object && AheadOfTimeVerificationPhase.isIllegalObjectConstant(c)) {
                         if (isClass(c)) {
                             // This will be handled later by LoadJavaMirrorWithKlassPhase
                         } else {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -37,13 +37,13 @@
 
     void initialize(HotSpotProviders providers, HotSpotVMConfig config);
 
-    int arrayScalingFactor(Kind kind);
+    int arrayScalingFactor(JavaKind kind);
 
-    AddressNode createArrayAddress(StructuredGraph graph, ValueNode array, Kind elementKind, ValueNode index);
+    AddressNode createArrayAddress(StructuredGraph graph, ValueNode array, JavaKind elementKind, ValueNode index);
 
-    Stamp loadStamp(Stamp stamp, Kind kind);
+    Stamp loadStamp(Stamp stamp, JavaKind kind);
 
-    ValueNode implicitLoadConvert(StructuredGraph graph, Kind kind, ValueNode value);
+    ValueNode implicitLoadConvert(StructuredGraph graph, JavaKind kind, ValueNode value);
 
-    ValueNode implicitStoreConvert(StructuredGraph graph, Kind kind, ValueNode value);
+    ValueNode implicitStoreConvert(StructuredGraph graph, JavaKind kind, ValueNode value);
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNodePlugin.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNodePlugin.java	Tue Sep 08 19:57:39 2015 +0200
@@ -133,7 +133,7 @@
         JavaConstant result = b.getConstantReflection().readConstantFieldValue(field, object);
         if (result != null) {
             ConstantNode constantNode = ConstantNode.forConstant(result, b.getMetaAccess(), b.getGraph());
-            b.push(field.getKind(), constantNode);
+            b.push(field.getJavaKind(), constantNode);
             return true;
         }
         return false;
@@ -156,7 +156,7 @@
     }
 
     @Override
-    public boolean handleLoadIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, Kind elementKind) {
+    public boolean handleLoadIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, JavaKind elementKind) {
         if (b.parsingIntrinsic() && wordOperationPlugin.handleLoadIndexed(b, array, index, elementKind)) {
             return true;
         }
@@ -164,7 +164,7 @@
     }
 
     @Override
-    public boolean handleStoreIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, Kind elementKind, ValueNode value) {
+    public boolean handleStoreIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, JavaKind elementKind, ValueNode value) {
         if (b.parsingIntrinsic() && wordOperationPlugin.handleStoreIndexed(b, array, index, elementKind, value)) {
             return true;
         }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -60,7 +60,7 @@
     }
 
     @Override
-    public JavaConstant forBoxed(Kind kind, Object value) {
+    public JavaConstant forBoxed(JavaKind kind, Object value) {
         return HotSpotObjectConstantImpl.forBoxedValue(kind, value);
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotWordOperationPlugin.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotWordOperationPlugin.java	Tue Sep 08 19:57:39 2015 +0200
@@ -81,7 +81,7 @@
     }
 
     protected void processHotSpotWordOperation(GraphBuilderContext b, ResolvedJavaMethod method, ValueNode[] args, HotSpotOperation operation) {
-        Kind returnKind = method.getSignature().getReturnKind();
+        JavaKind returnKind = method.getSignature().getReturnKind();
         switch (operation.opcode()) {
             case POINTER_EQ:
             case POINTER_NE:
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -53,7 +53,7 @@
      */
     protected final BitSet objects;
 
-    public AllocaNode(int slots, Kind wordKind, BitSet objects) {
+    public AllocaNode(int slots, JavaKind wordKind, BitSet objects) {
         super(TYPE, StampFactory.forKind(wordKind));
         this.slots = slots;
         this.objects = objects;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ComputeObjectAddressNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ComputeObjectAddressNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -42,7 +42,7 @@
     @Input ValueNode offset;
 
     public ComputeObjectAddressNode(ValueNode obj, ValueNode offset) {
-        super(TYPE, StampFactory.forKind(Kind.Long));
+        super(TYPE, StampFactory.forKind(JavaKind.Long));
         this.object = obj;
         this.offset = offset;
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -46,7 +46,7 @@
         this(wordTypes.getWordKind());
     }
 
-    public CurrentJavaThreadNode(Kind wordKind) {
+    public CurrentJavaThreadNode(JavaKind wordKind) {
         super(TYPE, StampFactory.forKind(wordKind));
         this.wordKind = LIRKind.value(wordKind);
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -47,7 +47,7 @@
     protected final ForeignCallsProvider foreignCalls;
 
     public DeoptimizationFetchUnrollInfoCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver) {
-        super(TYPE, StampFactory.forKind(Kind.fromJavaClass(FETCH_UNROLL_INFO.getResultType())));
+        super(TYPE, StampFactory.forKind(JavaKind.fromJavaClass(FETCH_UNROLL_INFO.getResultType())));
         this.registerSaver = (SaveAllRegistersNode) registerSaver;
         this.foreignCalls = foreignCalls;
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,7 +44,7 @@
     @Input ValueNode object;
 
     public GetObjectAddressNode(ValueNode obj) {
-        super(TYPE, StampFactory.forKind(Kind.Long));
+        super(TYPE, StampFactory.forKind(JavaKind.Long));
         this.object = obj;
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -36,7 +36,7 @@
     public static final NodeClass<LoadIndexedPointerNode> TYPE = NodeClass.create(LoadIndexedPointerNode.class);
 
     public LoadIndexedPointerNode(Stamp stamp, ValueNode array, ValueNode index) {
-        super(TYPE, stamp, array, index, Kind.Illegal);
+        super(TYPE, stamp, array, index, JavaKind.Illegal);
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -43,7 +43,7 @@
     protected SaveRegistersOp saveRegistersOp;
 
     public SaveAllRegistersNode() {
-        super(TYPE, StampFactory.forKind(Kind.Long));
+        super(TYPE, StampFactory.forKind(JavaKind.Long));
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -48,7 +48,7 @@
     protected final ForeignCallDescriptor descriptor;
 
     public StubForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) {
-        super(TYPE, StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType())));
+        super(TYPE, StampFactory.forKind(JavaKind.fromJavaClass(descriptor.getResultType())));
         this.arguments = new NodeInputList<>(this, arguments);
         this.descriptor = descriptor;
         this.foreignCalls = foreignCalls;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -48,7 +48,7 @@
     protected final ForeignCallsProvider foreignCalls;
 
     public UncommonTrapCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver, ValueNode trapRequest) {
-        super(TYPE, StampFactory.forKind(Kind.fromJavaClass(UNCOMMON_TRAP.getResultType())));
+        super(TYPE, StampFactory.forKind(JavaKind.fromJavaClass(UNCOMMON_TRAP.getResultType())));
         this.trapRequest = trapRequest;
         this.registerSaver = (SaveAllRegistersNode) registerSaver;
         this.foreignCalls = foreignCalls;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/KlassPointerStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/KlassPointerStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -111,7 +111,7 @@
     @Override
     public LIRKind getLIRKind(LIRKindTool tool) {
         if (isCompressed()) {
-            return LIRKind.value(Kind.Int);
+            return LIRKind.value(JavaKind.Int);
         } else {
             return super.getLIRKind(tool);
         }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowOopStamp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowOopStamp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -57,7 +57,7 @@
 
     @Override
     public LIRKind getLIRKind(LIRKindTool tool) {
-        return LIRKind.reference(Kind.Int);
+        return LIRKind.reference(JavaKind.Int);
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -54,7 +54,7 @@
     }
 
     private static boolean isObject(ConstantNode node) {
-        return node.getStackKind() == Kind.Object;
+        return node.getStackKind() == JavaKind.Object;
     }
 
     private static boolean isNullReference(ConstantNode node) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java	Tue Sep 08 19:57:39 2015 +0200
@@ -85,7 +85,7 @@
                      * Klass* so get them from Class.TYPE for the java box type.
                      */
                     HotSpotResolvedPrimitiveType primitive = (HotSpotResolvedPrimitiveType) type;
-                    ResolvedJavaType boxingClass = metaAccess.lookupJavaType(primitive.getKind().toBoxedJavaClass());
+                    ResolvedJavaType boxingClass = metaAccess.lookupJavaType(primitive.getJavaKind().toBoxedJavaClass());
                     ConstantNode clazz = ConstantNode.forConstant(boxingClass.getJavaClass(), metaAccess, graph);
                     HotSpotResolvedJavaField[] a = (HotSpotResolvedJavaField[]) boxingClass.getStaticFields();
                     HotSpotResolvedJavaField typeField = null;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java	Tue Sep 08 19:57:39 2015 +0200
@@ -77,10 +77,10 @@
     private static void crypt(Object rcvr, byte[] in, int inOffset, byte[] out, int outOffset, boolean encrypt) {
         checkArgs(in, inOffset, out, outOffset);
         Object realReceiver = PiNode.piCastNonNull(rcvr, AESCryptClass);
-        Object kObject = UnsafeLoadNode.load(realReceiver, kOffset, Kind.Object, LocationIdentity.any());
-        Pointer kAddr = Word.objectToTrackedPointer(kObject).add(arrayBaseOffset(Kind.Byte));
-        Word inAddr = Word.unsigned(ComputeObjectAddressNode.get(in, arrayBaseOffset(Kind.Byte) + inOffset));
-        Word outAddr = Word.unsigned(ComputeObjectAddressNode.get(out, arrayBaseOffset(Kind.Byte) + outOffset));
+        Object kObject = UnsafeLoadNode.load(realReceiver, kOffset, JavaKind.Object, LocationIdentity.any());
+        Pointer kAddr = Word.objectToTrackedPointer(kObject).add(arrayBaseOffset(JavaKind.Byte));
+        Word inAddr = Word.unsigned(ComputeObjectAddressNode.get(in, arrayBaseOffset(JavaKind.Byte) + inOffset));
+        Word outAddr = Word.unsigned(ComputeObjectAddressNode.get(out, arrayBaseOffset(JavaKind.Byte) + outOffset));
         if (encrypt) {
             encryptBlockStub(ENCRYPT_BLOCK, inAddr, outAddr, kAddr);
         } else {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java	Tue Sep 08 19:57:39 2015 +0200
@@ -62,7 +62,7 @@
     }
 
     static int updateBytes(int crc, byte[] buf, int off, int len) {
-        Word bufAddr = Word.unsigned(ComputeObjectAddressNode.get(buf, arrayBaseOffset(Kind.Byte) + off));
+        Word bufAddr = Word.unsigned(ComputeObjectAddressNode.get(buf, arrayBaseOffset(JavaKind.Byte) + off));
         return updateBytes(UPDATE_BYTES_CRC32, crc, bufAddr, len);
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -36,7 +36,7 @@
     public static final NodeClass<CardTableAddressNode> TYPE = NodeClass.create(CardTableAddressNode.class);
 
     public CardTableAddressNode() {
-        super(TYPE, StampFactory.forKind(Kind.Long));
+        super(TYPE, StampFactory.forKind(JavaKind.Long));
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java	Tue Sep 08 19:57:39 2015 +0200
@@ -71,7 +71,7 @@
 
     static int encrypt(Object rcvr, byte[] in, int inOffset, int inLength, byte[] out, int outOffset) {
         Object realReceiver = PiNode.piCastNonNull(rcvr, cipherBlockChainingClass);
-        Object embeddedCipher = UnsafeLoadNode.load(realReceiver, embeddedCipherOffset, Kind.Object, LocationIdentity.any());
+        Object embeddedCipher = UnsafeLoadNode.load(realReceiver, embeddedCipherOffset, JavaKind.Object, LocationIdentity.any());
         if (getAESCryptClass().isInstance(embeddedCipher)) {
             Object aesCipher = PiNode.piCastNonNull(embeddedCipher, AESCryptSubstitutions.AESCryptClass);
             crypt(realReceiver, in, inOffset, inLength, out, outOffset, aesCipher, true);
@@ -83,7 +83,7 @@
 
     static int decrypt(Object rcvr, byte[] in, int inOffset, int inLength, byte[] out, int outOffset) {
         Object realReceiver = PiNode.piCastNonNull(rcvr, cipherBlockChainingClass);
-        Object embeddedCipher = UnsafeLoadNode.load(realReceiver, embeddedCipherOffset, Kind.Object, LocationIdentity.any());
+        Object embeddedCipher = UnsafeLoadNode.load(realReceiver, embeddedCipherOffset, JavaKind.Object, LocationIdentity.any());
         if (in != out && getAESCryptClass().isInstance(embeddedCipher)) {
             Object aesCipher = PiNode.piCastNonNull(embeddedCipher, AESCryptSubstitutions.AESCryptClass);
             crypt(realReceiver, in, inOffset, inLength, out, outOffset, aesCipher, false);
@@ -96,12 +96,12 @@
     private static void crypt(Object rcvr, byte[] in, int inOffset, int inLength, byte[] out, int outOffset, Object embeddedCipher, boolean encrypt) {
         AESCryptSubstitutions.checkArgs(in, inOffset, out, outOffset);
         Object realReceiver = PiNode.piCastNonNull(rcvr, cipherBlockChainingClass);
-        Object kObject = UnsafeLoadNode.load(embeddedCipher, AESCryptSubstitutions.kOffset, Kind.Object, LocationIdentity.any());
-        Object rObject = UnsafeLoadNode.load(realReceiver, rOffset, Kind.Object, LocationIdentity.any());
-        Pointer kAddr = Word.objectToTrackedPointer(kObject).add(arrayBaseOffset(Kind.Byte));
-        Pointer rAddr = Word.objectToTrackedPointer(rObject).add(arrayBaseOffset(Kind.Byte));
-        Word inAddr = Word.unsigned(ComputeObjectAddressNode.get(in, arrayBaseOffset(Kind.Byte) + inOffset));
-        Word outAddr = Word.unsigned(ComputeObjectAddressNode.get(out, arrayBaseOffset(Kind.Byte) + outOffset));
+        Object kObject = UnsafeLoadNode.load(embeddedCipher, AESCryptSubstitutions.kOffset, JavaKind.Object, LocationIdentity.any());
+        Object rObject = UnsafeLoadNode.load(realReceiver, rOffset, JavaKind.Object, LocationIdentity.any());
+        Pointer kAddr = Word.objectToTrackedPointer(kObject).add(arrayBaseOffset(JavaKind.Byte));
+        Pointer rAddr = Word.objectToTrackedPointer(rObject).add(arrayBaseOffset(JavaKind.Byte));
+        Word inAddr = Word.unsigned(ComputeObjectAddressNode.get(in, arrayBaseOffset(JavaKind.Byte) + inOffset));
+        Word outAddr = Word.unsigned(ComputeObjectAddressNode.get(out, arrayBaseOffset(JavaKind.Byte) + outOffset));
         if (encrypt) {
             encryptAESCryptStub(ENCRYPT, inAddr, outAddr, kAddr, rAddr, inLength);
         } else {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -315,7 +315,7 @@
     }
 
     @Fold
-    public static Kind getWordKind() {
+    public static JavaKind getWordKind() {
         return runtime().getTarget().wordKind;
     }
 
@@ -520,12 +520,12 @@
     }
 
     @Fold
-    public static int arrayBaseOffset(Kind elementKind) {
+    public static int arrayBaseOffset(JavaKind elementKind) {
         return runtime().getJVMCIRuntime().getArrayBaseOffset(elementKind);
     }
 
     @Fold
-    public static int arrayIndexScale(Kind elementKind) {
+    public static int arrayIndexScale(JavaKind elementKind) {
         return runtime().getJVMCIRuntime().getArrayIndexScale(elementKind);
     }
 
@@ -691,10 +691,10 @@
     public static native void writeRegisterAsWord(@ConstantNodeParameter Register register, Word value);
 
     @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true)
-    private static native Word loadWordFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter Kind wordKind, @ConstantNodeParameter LocationIdentity locationIdentity);
+    private static native Word loadWordFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter JavaKind wordKind, @ConstantNodeParameter LocationIdentity locationIdentity);
 
     @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true)
-    private static native KlassPointer loadKlassFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter Kind wordKind, @ConstantNodeParameter LocationIdentity locationIdentity);
+    private static native KlassPointer loadKlassFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter JavaKind wordKind, @ConstantNodeParameter LocationIdentity locationIdentity);
 
     @NodeIntrinsic(value = LoadHubNode.class)
     public static native KlassPointer loadHubIntrinsic(Object object, GuardingNode anchor);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java	Tue Sep 08 19:57:39 2015 +0200
@@ -245,7 +245,7 @@
                     args = new Arguments(instanceofWithProfile, graph.getGuardsStage(), tool.getLoweringStage());
                     args.add("object", object);
                     args.addVarargs("hints", KlassPointer.class, KlassPointerStamp.klassNonNull(), hints.hubs);
-                    args.addVarargs("hintIsPositive", boolean.class, StampFactory.forKind(Kind.Boolean), hints.isPositive);
+                    args.addVarargs("hintIsPositive", boolean.class, StampFactory.forKind(JavaKind.Boolean), hints.isPositive);
                 } else if (hintInfo.exact != null) {
                     args = new Arguments(instanceofExact, graph.getGuardsStage(), tool.getLoweringStage());
                     args.add("object", object);
@@ -261,7 +261,7 @@
                     args.add("hub", hub);
                     args.add("object", object);
                     args.addVarargs("hints", KlassPointer.class, KlassPointerStamp.klassNonNull(), hints.hubs);
-                    args.addVarargs("hintIsPositive", boolean.class, StampFactory.forKind(Kind.Boolean), hints.isPositive);
+                    args.addVarargs("hintIsPositive", boolean.class, StampFactory.forKind(JavaKind.Boolean), hints.isPositive);
                 }
                 args.add("trueValue", replacer.trueValue);
                 args.add("falseValue", replacer.falseValue);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -49,7 +49,7 @@
     }
 
     public KlassLayoutHelperNode(@InjectedNodeParameter HotSpotVMConfig config, ValueNode klass, ValueNode guard) {
-        super(TYPE, StampFactory.forKind(Kind.Int), (GuardingNode) guard);
+        super(TYPE, StampFactory.forKind(JavaKind.Int), (GuardingNode) guard);
         this.klass = klass;
         this.config = config;
     }
@@ -67,10 +67,10 @@
                         /*
                          * Definitely some form of instance type.
                          */
-                        return updateStamp(StampFactory.forInteger(Kind.Int, config.klassLayoutHelperNeutralValue, Integer.MAX_VALUE));
+                        return updateStamp(StampFactory.forInteger(JavaKind.Int, config.klassLayoutHelperNeutralValue, Integer.MAX_VALUE));
                     }
                     if (type.isArray()) {
-                        return updateStamp(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, config.klassLayoutHelperNeutralValue - 1));
+                        return updateStamp(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, config.klassLayoutHelperNeutralValue - 1));
                     }
                 }
             }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java	Tue Sep 08 19:57:39 2015 +0200
@@ -244,18 +244,19 @@
 
     @Snippet
     public static Object allocateArrayDynamic(Class<?> elementType, int length, @ConstantParameter boolean fillContents, @ConstantParameter Register threadRegister,
-                    @ConstantParameter Kind knownElementKind, @ConstantParameter int knownLayoutHelper, Word prototypeMarkWord) {
+                    @ConstantParameter JavaKind knownElementKind, @ConstantParameter int knownLayoutHelper, Word prototypeMarkWord) {
         Object result = allocateArrayDynamicImpl(elementType, length, fillContents, threadRegister, knownElementKind, knownLayoutHelper, prototypeMarkWord);
         return result;
     }
 
-    private static Object allocateArrayDynamicImpl(Class<?> elementType, int length, boolean fillContents, Register threadRegister, Kind knownElementKind, int knownLayoutHelper, Word prototypeMarkWord) {
+    private static Object allocateArrayDynamicImpl(Class<?> elementType, int length, boolean fillContents, Register threadRegister, JavaKind knownElementKind, int knownLayoutHelper,
+                    Word prototypeMarkWord) {
         /*
          * We only need the dynamic check for void when we have no static information from
          * knownElementKind.
          */
-        staticAssert(knownElementKind != Kind.Void, "unsupported knownElementKind");
-        if (knownElementKind == Kind.Illegal && probability(SLOW_PATH_PROBABILITY, elementType == null || DynamicNewArrayNode.throwsIllegalArgumentException(elementType))) {
+        staticAssert(knownElementKind != JavaKind.Void, "unsupported knownElementKind");
+        if (knownElementKind == JavaKind.Illegal && probability(SLOW_PATH_PROBABILITY, elementType == null || DynamicNewArrayNode.throwsIllegalArgumentException(elementType))) {
             DeoptimizeNode.deopt(DeoptimizationAction.None, DeoptimizationReason.RuntimeConstraint);
         }
 
@@ -263,7 +264,7 @@
         if (probability(BranchProbabilityNode.NOT_FREQUENT_PROBABILITY, klass.isNull() || length < 0)) {
             DeoptimizeNode.deopt(DeoptimizationAction.None, DeoptimizationReason.RuntimeConstraint);
         }
-        int layoutHelper = knownElementKind != Kind.Illegal ? knownLayoutHelper : readLayoutHelper(klass);
+        int layoutHelper = knownElementKind != JavaKind.Illegal ? knownLayoutHelper : readLayoutHelper(klass);
         //@formatter:off
         // from src/share/vm/oops/klass.hpp:
         //
@@ -475,7 +476,7 @@
             StructuredGraph graph = newArrayNode.graph();
             ResolvedJavaType elementType = newArrayNode.elementType();
             HotSpotResolvedObjectType arrayType = (HotSpotResolvedObjectType) elementType.getArrayClass();
-            Kind elementKind = elementType.getKind();
+            JavaKind elementKind = elementType.getJavaKind();
             ConstantNode hub = ConstantNode.forConstant(KlassPointerStamp.klassNonNull(), arrayType.klass(), providers.getMetaAccess(), graph);
             final int headerSize = runtime.getJVMCIRuntime().getArrayBaseOffset(elementKind);
             HotSpotLoweringProvider lowerer = (HotSpotLoweringProvider) providers.getLowerer();
@@ -485,7 +486,7 @@
             args.add("hub", hub);
             ValueNode length = newArrayNode.length();
             args.add("length", length.isAlive() ? length : graph.addOrUniqueWithInputs(length));
-            assert arrayType.prototypeMarkWord() == lookupArrayClass(tool, Kind.Object).prototypeMarkWord() : "all array types are assumed to have the same prototypeMarkWord";
+            assert arrayType.prototypeMarkWord() == lookupArrayClass(tool, JavaKind.Object).prototypeMarkWord() : "all array types are assumed to have the same prototypeMarkWord";
             args.add("prototypeMarkWord", arrayType.prototypeMarkWord());
             args.addConst("headerSize", headerSize);
             args.addConst("log2ElementSize", log2ElementSize);
@@ -521,19 +522,19 @@
              * We use Kind.Illegal as a marker value instead of null because constant snippet
              * parameters cannot be null.
              */
-            args.addConst("knownElementKind", newArrayNode.getKnownElementKind() == null ? Kind.Illegal : newArrayNode.getKnownElementKind());
+            args.addConst("knownElementKind", newArrayNode.getKnownElementKind() == null ? JavaKind.Illegal : newArrayNode.getKnownElementKind());
             if (newArrayNode.getKnownElementKind() != null) {
                 args.addConst("knownLayoutHelper", lookupArrayClass(tool, newArrayNode.getKnownElementKind()).layoutHelper());
             } else {
                 args.addConst("knownLayoutHelper", 0);
             }
-            args.add("prototypeMarkWord", lookupArrayClass(tool, Kind.Object).prototypeMarkWord());
+            args.add("prototypeMarkWord", lookupArrayClass(tool, JavaKind.Object).prototypeMarkWord());
             SnippetTemplate template = template(args);
             template.instantiate(providers.getMetaAccess(), newArrayNode, DEFAULT_REPLACER, args);
         }
 
-        private static HotSpotResolvedObjectType lookupArrayClass(LoweringTool tool, Kind kind) {
-            return (HotSpotResolvedObjectType) tool.getMetaAccess().lookupJavaType(kind == Kind.Object ? Object.class : kind.toJavaClass()).getArrayClass();
+        private static HotSpotResolvedObjectType lookupArrayClass(LoweringTool tool, JavaKind kind) {
+            return (HotSpotResolvedObjectType) tool.getMetaAccess().lookupJavaType(kind == JavaKind.Object ? Object.class : kind.toJavaClass()).getArrayClass();
         }
 
         public void lower(NewMultiArrayNode newmultiarrayNode, LoweringTool tool) {
@@ -549,7 +550,7 @@
             Arguments args = new Arguments(newmultiarray, graph.getGuardsStage(), tool.getLoweringStage());
             args.add("hub", hub);
             args.addConst("rank", rank);
-            args.addVarargs("dimensions", int.class, StampFactory.forKind(Kind.Int), dims);
+            args.addVarargs("dimensions", int.class, StampFactory.forKind(JavaKind.Int), dims);
             template(args).instantiate(providers.getMetaAccess(), newmultiarrayNode, DEFAULT_REPLACER, args);
         }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -54,7 +54,7 @@
         ResolvedJavaType type = StampTool.typeOrNull(getObject());
         if (type != null) {
             if (type.isArray()) {
-                Method method = ObjectCloneSnippets.arrayCloneMethods.get(type.getComponentType().getKind());
+                Method method = ObjectCloneSnippets.arrayCloneMethods.get(type.getComponentType().getJavaKind());
                 if (method != null) {
                     final ResolvedJavaMethod snippetMethod = tool.getMetaAccess().lookupJavaMethod(method);
                     final Replacements replacements = tool.getReplacements();
@@ -68,7 +68,7 @@
                     assert snippetGraph != null : "ObjectCloneSnippets should be installed";
                     return lowerReplacement((StructuredGraph) snippetGraph.copy(), tool);
                 }
-                assert false : "unhandled array type " + type.getComponentType().getKind();
+                assert false : "unhandled array type " + type.getComponentType().getJavaKind();
             } else {
                 Assumptions assumptions = graph().getAssumptions();
                 type = getConcreteType(getObject().stamp(), assumptions, tool.getMetaAccess());
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -35,18 +35,18 @@
 
 public class ObjectCloneSnippets implements Snippets {
 
-    public static final EnumMap<Kind, Method> arrayCloneMethods = new EnumMap<>(Kind.class);
+    public static final EnumMap<JavaKind, Method> arrayCloneMethods = new EnumMap<>(JavaKind.class);
 
     static {
-        arrayCloneMethods.put(Kind.Boolean, getCloneMethod("booleanArrayClone", boolean[].class));
-        arrayCloneMethods.put(Kind.Byte, getCloneMethod("byteArrayClone", byte[].class));
-        arrayCloneMethods.put(Kind.Char, getCloneMethod("charArrayClone", char[].class));
-        arrayCloneMethods.put(Kind.Short, getCloneMethod("shortArrayClone", short[].class));
-        arrayCloneMethods.put(Kind.Int, getCloneMethod("intArrayClone", int[].class));
-        arrayCloneMethods.put(Kind.Float, getCloneMethod("floatArrayClone", float[].class));
-        arrayCloneMethods.put(Kind.Long, getCloneMethod("longArrayClone", long[].class));
-        arrayCloneMethods.put(Kind.Double, getCloneMethod("doubleArrayClone", double[].class));
-        arrayCloneMethods.put(Kind.Object, getCloneMethod("objectArrayClone", Object[].class));
+        arrayCloneMethods.put(JavaKind.Boolean, getCloneMethod("booleanArrayClone", boolean[].class));
+        arrayCloneMethods.put(JavaKind.Byte, getCloneMethod("byteArrayClone", byte[].class));
+        arrayCloneMethods.put(JavaKind.Char, getCloneMethod("charArrayClone", char[].class));
+        arrayCloneMethods.put(JavaKind.Short, getCloneMethod("shortArrayClone", short[].class));
+        arrayCloneMethods.put(JavaKind.Int, getCloneMethod("intArrayClone", int[].class));
+        arrayCloneMethods.put(JavaKind.Float, getCloneMethod("floatArrayClone", float[].class));
+        arrayCloneMethods.put(JavaKind.Long, getCloneMethod("longArrayClone", long[].class));
+        arrayCloneMethods.put(JavaKind.Double, getCloneMethod("doubleArrayClone", double[].class));
+        arrayCloneMethods.put(JavaKind.Object, getCloneMethod("objectArrayClone", Object[].class));
     }
 
     private static Method getCloneMethod(String name, Class<?> param) {
@@ -60,64 +60,64 @@
     @Snippet
     public static boolean[] booleanArrayClone(boolean[] src) {
         boolean[] result = (boolean[]) NewArrayNode.newUninitializedArray(Boolean.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Boolean);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Boolean);
         return result;
     }
 
     @Snippet
     public static byte[] byteArrayClone(byte[] src) {
         byte[] result = (byte[]) NewArrayNode.newUninitializedArray(Byte.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Byte);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Byte);
         return result;
     }
 
     @Snippet
     public static short[] shortArrayClone(short[] src) {
         short[] result = (short[]) NewArrayNode.newUninitializedArray(Short.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Short);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Short);
         return result;
     }
 
     @Snippet
     public static char[] charArrayClone(char[] src) {
         char[] result = (char[]) NewArrayNode.newUninitializedArray(Character.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Char);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Char);
         return result;
     }
 
     @Snippet
     public static int[] intArrayClone(int[] src) {
         int[] result = (int[]) NewArrayNode.newUninitializedArray(Integer.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Int);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Int);
         return result;
     }
 
     @Snippet
     public static float[] floatArrayClone(float[] src) {
         float[] result = (float[]) NewArrayNode.newUninitializedArray(Float.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Float);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Float);
         return result;
     }
 
     @Snippet
     public static long[] longArrayClone(long[] src) {
         long[] result = (long[]) NewArrayNode.newUninitializedArray(Long.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Long);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Long);
         return result;
     }
 
     @Snippet
     public static double[] doubleArrayClone(double[] src) {
         double[] result = (double[]) NewArrayNode.newUninitializedArray(Double.TYPE, src.length);
-        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, Kind.Double);
+        ArrayCopyCallNode.disjointArraycopy(src, 0, result, 0, src.length, JavaKind.Double);
         return result;
     }
 
     @Snippet
     public static Object[] objectArrayClone(Object[] src) {
         /* Since this snippet is lowered early the array must be initialized */
-        Object[] result = (Object[]) DynamicNewArrayNode.newArray(GraalDirectives.guardingNonNull(src.getClass().getComponentType()), src.length, Kind.Object);
-        ArrayCopyCallNode.disjointUninitializedArraycopy(src, 0, result, 0, src.length, Kind.Object);
+        Object[] result = (Object[]) DynamicNewArrayNode.newArray(GraalDirectives.guardingNonNull(src.getClass().getComponentType()), src.length, JavaKind.Object);
+        ArrayCopyCallNode.disjointUninitializedArraycopy(src, 0, result, 0, src.length, JavaKind.Object);
         return result;
     }
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java	Tue Sep 08 19:57:39 2015 +0200
@@ -103,14 +103,14 @@
         Object dest = FixedValueAnchorNode.getObject(object);
         int cardShift = cardTableShift();
         long cardStart = cardTableStart();
-        final int scale = arrayIndexScale(Kind.Object);
-        int header = arrayBaseOffset(Kind.Object);
+        final int scale = arrayIndexScale(JavaKind.Object);
+        int header = arrayBaseOffset(JavaKind.Object);
         long dstAddr = GetObjectAddressNode.get(dest);
         long start = (dstAddr + header + (long) startIndex * scale) >>> cardShift;
         long end = (dstAddr + header + ((long) startIndex + length - 1) * scale) >>> cardShift;
         long count = end - start + 1;
         while (count-- > 0) {
-            DirectStoreNode.storeBoolean((start + cardStart) + count, false, Kind.Boolean);
+            DirectStoreNode.storeBoolean((start + cardStart) + count, false, JavaKind.Boolean);
         }
     }
 
@@ -258,8 +258,8 @@
         Word indexAddress = thread.add(g1SATBQueueIndexOffset());
         long dstAddr = GetObjectAddressNode.get(dest);
         long indexValue = indexAddress.readWord(0).rawValue();
-        final int scale = arrayIndexScale(Kind.Object);
-        int header = arrayBaseOffset(Kind.Object);
+        final int scale = arrayIndexScale(JavaKind.Object);
+        int header = arrayBaseOffset(JavaKind.Object);
 
         for (int i = startIndex; i < length; i++) {
             long address = dstAddr + header + (i * scale);
@@ -292,8 +292,8 @@
 
         int cardShift = cardTableShift();
         long cardStart = cardTableStart();
-        final int scale = arrayIndexScale(Kind.Object);
-        int header = arrayBaseOffset(Kind.Object);
+        final int scale = arrayIndexScale(JavaKind.Object);
+        int header = arrayBaseOffset(JavaKind.Object);
         long dstAddr = GetObjectAddressNode.get(dest);
         long start = (dstAddr + header + (long) startIndex * scale) >>> cardShift;
         long end = (dstAddr + header + ((long) startIndex + length - 1) * scale) >>> cardShift;
@@ -504,7 +504,7 @@
     public static void validateObject(Object parent, Object child) {
         if (verifyOops() && child != null && !validateOop(VALIDATE_OBJECT, parent, child)) {
             log(true, "Verification ERROR, Parent: %p Child: %p\n", Word.objectToTrackedPointer(parent).rawValue(), Word.objectToTrackedPointer(child).rawValue());
-            DirectObjectStoreNode.storeObject(null, 0, 0, null, LocationIdentity.any(), Kind.Object);
+            DirectObjectStoreNode.storeObject(null, 0, 0, null, LocationIdentity.any(), JavaKind.Object);
         }
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -56,7 +56,7 @@
 
     @OptionalInput(InputType.Memory) MemoryNode lastLocationAccess;
 
-    protected final Kind elementKind;
+    protected final JavaKind elementKind;
     protected final LocationIdentity locationIdentity;
 
     /**
@@ -68,17 +68,17 @@
 
     protected final HotSpotGraalRuntimeProvider runtime;
 
-    public ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind,
+    public ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind,
                     boolean aligned, boolean disjoint, boolean uninitialized) {
         this(runtime, src, srcPos, dest, destPos, length, elementKind, null, aligned, disjoint, uninitialized);
     }
 
-    public ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind,
+    public ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind,
                     boolean disjoint) {
         this(runtime, src, srcPos, dest, destPos, length, elementKind, null, false, disjoint, false);
     }
 
-    protected ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind,
+    protected ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind,
                     LocationIdentity locationIdentity, boolean aligned, boolean disjoint, boolean uninitialized) {
         super(TYPE, StampFactory.forVoid());
         assert elementKind != null;
@@ -115,7 +115,7 @@
         return length;
     }
 
-    public Kind getElementKind() {
+    public JavaKind getElementKind() {
         return elementKind;
     }
 
@@ -141,8 +141,8 @@
             ValueNode srcAddr = computeBase(getSource(), getSourcePosition());
             ValueNode destAddr = computeBase(getDestination(), getDestinationPosition());
             ValueNode len = getLength();
-            if (len.stamp().getStackKind() != Kind.Long) {
-                len = IntegerConvertNode.convert(len, StampFactory.forKind(Kind.Long), graph());
+            if (len.stamp().getStackKind() != JavaKind.Long) {
+                len = IntegerConvertNode.convert(len, StampFactory.forKind(JavaKind.Long), graph());
             }
             ForeignCallNode call = graph.add(new ForeignCallNode(Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getForeignCalls(), desc, srcAddr, destAddr, len));
             call.setStateAfter(stateAfter());
@@ -165,27 +165,27 @@
     }
 
     @NodeIntrinsic
-    private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter Kind elementKind, @ConstantNodeParameter boolean aligned,
+    private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind, @ConstantNodeParameter boolean aligned,
                     @ConstantNodeParameter boolean disjoint, @ConstantNodeParameter boolean uninitialized);
 
     @NodeIntrinsic
-    private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter Kind elementKind,
+    private static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind,
                     @ConstantNodeParameter LocationIdentity locationIdentity, @ConstantNodeParameter boolean aligned, @ConstantNodeParameter boolean disjoint,
                     @ConstantNodeParameter boolean uninitialized);
 
     public static void arraycopyObjectKillsAny(Object src, int srcPos, Object dest, int destPos, int length) {
-        arraycopy(src, srcPos, dest, destPos, length, Kind.Object, LocationIdentity.any(), false, false, false);
+        arraycopy(src, srcPos, dest, destPos, length, JavaKind.Object, LocationIdentity.any(), false, false, false);
     }
 
-    public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter Kind elementKind) {
+    public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind) {
         arraycopy(src, srcPos, dest, destPos, length, elementKind, false, false, false);
     }
 
-    public static void disjointArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter Kind elementKind) {
+    public static void disjointArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind) {
         arraycopy(src, srcPos, dest, destPos, length, elementKind, false, true, false);
     }
 
-    public static void disjointUninitializedArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter Kind elementKind) {
+    public static void disjointUninitializedArraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind) {
         arraycopy(src, srcPos, dest, destPos, length, elementKind, false, true, true);
     }
 
@@ -201,13 +201,13 @@
         return uninitialized;
     }
 
-    boolean isHeapWordAligned(JavaConstant value, Kind kind) {
+    boolean isHeapWordAligned(JavaConstant value, JavaKind kind) {
         HotSpotJVMCIRuntimeProvider jvmciRuntime = runtime.getJVMCIRuntime();
         return (jvmciRuntime.getArrayBaseOffset(kind) + (long) value.asInt() * jvmciRuntime.getArrayIndexScale(kind)) % runtime.getConfig().heapWordSize == 0;
     }
 
     public void updateAlignedDisjoint() {
-        Kind componentKind = elementKind;
+        JavaKind componentKind = elementKind;
         if (srcPos == destPos) {
             // Can treat as disjoint
             disjoint = true;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -36,7 +36,7 @@
 
     public static final NodeClass<ArrayCopyNode> TYPE = NodeClass.create(ArrayCopyNode.class);
 
-    private Kind elementKind;
+    private JavaKind elementKind;
 
     public ArrayCopyNode(int bci, ValueNode src, ValueNode srcPos, ValueNode dst, ValueNode dstPos, ValueNode length) {
         super(TYPE, src, srcPos, dst, dstPos, length, null, bci);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySlowPathNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySlowPathNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -45,7 +45,7 @@
      */
     private final Object argument;
 
-    public ArrayCopySlowPathNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind, SnippetTemplate.SnippetInfo snippet, Object argument) {
+    public ArrayCopySlowPathNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind, SnippetTemplate.SnippetInfo snippet, Object argument) {
         super(TYPE, src, srcPos, dest, destPos, length, elementKind, BytecodeFrame.INVALID_FRAMESTATE_BCI);
         assert StampTool.isPointerNonNull(src) && StampTool.isPointerNonNull(dest) : "must have been null checked";
         this.snippet = snippet;
@@ -53,7 +53,7 @@
     }
 
     @NodeIntrinsic
-    public static native void arraycopy(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, @ConstantNodeParameter Kind elementKind,
+    public static native void arraycopy(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind,
                     @ConstantNodeParameter SnippetTemplate.SnippetInfo snippet, @ConstantNodeParameter Object argument);
 
     public SnippetTemplate.SnippetInfo getSnippet() {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySnippets.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySnippets.java	Tue Sep 08 19:57:39 2015 +0200
@@ -99,7 +99,7 @@
     }
 
     @Snippet
-    public static void arraycopyExactIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter Kind elementKind, @ConstantParameter SnippetCounter counter,
+    public static void arraycopyExactIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter JavaKind elementKind, @ConstantParameter SnippetCounter counter,
                     @ConstantParameter SnippetCounter copiedCounter) {
         Object nonNullSrc = GraalDirectives.guardingNonNull(src);
         Object nonNullDest = GraalDirectives.guardingNonNull(dest);
@@ -120,8 +120,8 @@
      * inputs but not the other.
      */
     @Snippet
-    public static void arraycopyPredictedExactIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter Kind elementKind, @ConstantParameter SnippetCounter counter,
-                    @ConstantParameter SnippetCounter copiedCounter) {
+    public static void arraycopyPredictedExactIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter JavaKind elementKind,
+                    @ConstantParameter SnippetCounter counter, @ConstantParameter SnippetCounter copiedCounter) {
         Object nonNullSrc = GraalDirectives.guardingNonNull(src);
         Object nonNullDest = GraalDirectives.guardingNonNull(dest);
         KlassPointer srcHub = loadHub(nonNullSrc);
@@ -166,7 +166,7 @@
      * underlying type is really an array type.
      */
     @Snippet
-    public static void arraycopySlowPathIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter Kind elementKind, @ConstantParameter SnippetInfo slowPath,
+    public static void arraycopySlowPathIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter JavaKind elementKind, @ConstantParameter SnippetInfo slowPath,
                     @ConstantParameter Object slowPathArgument) {
         Object nonNullSrc = GraalDirectives.guardingNonNull(src);
         Object nonNullDest = GraalDirectives.guardingNonNull(dest);
@@ -188,7 +188,7 @@
      * Snippet for unrolled arraycopy.
      */
     @Snippet
-    public static void arraycopyUnrolledIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter int unrolledLength, @ConstantParameter Kind elementKind) {
+    public static void arraycopyUnrolledIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, @ConstantParameter int unrolledLength, @ConstantParameter JavaKind elementKind) {
         Object nonNullSrc = GraalDirectives.guardingNonNull(src);
         Object nonNullDest = GraalDirectives.guardingNonNull(dest);
         checkLimits(nonNullSrc, srcPos, nonNullDest, destPos, length);
@@ -242,7 +242,7 @@
             if (probability(FAST_PATH_PROBABILITY, isObjectArray)) {
                 genericObjectExactCallCounter.inc();
                 genericObjectExactCallCopiedCounter.add(length);
-                ArrayCopyCallNode.disjointArraycopy(nonNullSrc, srcPos, nonNullDest, destPos, length, Kind.Object);
+                ArrayCopyCallNode.disjointArraycopy(nonNullSrc, srcPos, nonNullDest, destPos, length, JavaKind.Object);
             } else {
                 genericPrimitiveCallCounter.inc();
                 genericPrimitiveCallCopiedCounter.add(length);
@@ -256,12 +256,12 @@
     }
 
     @Fold
-    private static LocationIdentity getArrayLocation(Kind kind) {
+    private static LocationIdentity getArrayLocation(JavaKind kind) {
         return NamedLocationIdentity.getArrayLocation(kind);
     }
 
     @Snippet
-    public static void arraycopyUnrolledWork(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, @ConstantParameter int length, @ConstantParameter Kind elementKind) {
+    public static void arraycopyUnrolledWork(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, @ConstantParameter int length, @ConstantParameter JavaKind elementKind) {
         final int scale = arrayIndexScale(elementKind);
         int arrayBaseOffset = arrayBaseOffset(elementKind);
         LocationIdentity arrayLocation = getArrayLocation(elementKind);
@@ -301,13 +301,13 @@
     private static final SnippetCounter predictedObjectArrayCopySlowPathCounter = new SnippetCounter(counters, "Object[]{slow-path}", "used System.arraycopy slow path for predicted Object[] arrays");
     private static final SnippetCounter predictedObjectArrayCopyFastPathCounter = new SnippetCounter(counters, "Object[]{fast-path}", "used oop_arraycopy for predicted Object[] arrays");
 
-    private static final EnumMap<Kind, SnippetCounter> arraycopyCallCounters = new EnumMap<>(Kind.class);
-    private static final EnumMap<Kind, SnippetCounter> arraycopyCounters = new EnumMap<>(Kind.class);
+    private static final EnumMap<JavaKind, SnippetCounter> arraycopyCallCounters = new EnumMap<>(JavaKind.class);
+    private static final EnumMap<JavaKind, SnippetCounter> arraycopyCounters = new EnumMap<>(JavaKind.class);
 
-    private static final EnumMap<Kind, SnippetCounter> arraycopyCallCopiedCounters = new EnumMap<>(Kind.class);
-    private static final EnumMap<Kind, SnippetCounter> arraycopyCopiedCounters = new EnumMap<>(Kind.class);
+    private static final EnumMap<JavaKind, SnippetCounter> arraycopyCallCopiedCounters = new EnumMap<>(JavaKind.class);
+    private static final EnumMap<JavaKind, SnippetCounter> arraycopyCopiedCounters = new EnumMap<>(JavaKind.class);
 
-    static void createArraycopyCounter(Kind kind) {
+    static void createArraycopyCounter(JavaKind kind) {
         arraycopyCallCounters.put(kind, new SnippetCounter(counters, kind + "[]{stub}", "arraycopy call for " + kind + "[] arrays"));
         arraycopyCounters.put(kind, new SnippetCounter(counters, kind + "[]{inline}", "inline arraycopy for " + kind + "[] arrays"));
 
@@ -316,15 +316,15 @@
     }
 
     static {
-        createArraycopyCounter(Kind.Byte);
-        createArraycopyCounter(Kind.Boolean);
-        createArraycopyCounter(Kind.Char);
-        createArraycopyCounter(Kind.Short);
-        createArraycopyCounter(Kind.Int);
-        createArraycopyCounter(Kind.Long);
-        createArraycopyCounter(Kind.Float);
-        createArraycopyCounter(Kind.Double);
-        createArraycopyCounter(Kind.Object);
+        createArraycopyCounter(JavaKind.Byte);
+        createArraycopyCounter(JavaKind.Boolean);
+        createArraycopyCounter(JavaKind.Char);
+        createArraycopyCounter(JavaKind.Short);
+        createArraycopyCounter(JavaKind.Int);
+        createArraycopyCounter(JavaKind.Long);
+        createArraycopyCounter(JavaKind.Float);
+        createArraycopyCounter(JavaKind.Double);
+        createArraycopyCounter(JavaKind.Object);
     }
 
     private static final SnippetCounter genericPrimitiveCallCounter = new SnippetCounter(counters, "genericPrimitive", "generic arraycopy snippet for primitive arrays");
@@ -389,17 +389,17 @@
             return info;
         }
 
-        public static Kind selectComponentKind(BasicArrayCopyNode arraycopy) {
+        public static JavaKind selectComponentKind(BasicArrayCopyNode arraycopy) {
             return selectComponentKind(arraycopy, true);
         }
 
-        public static Kind selectComponentKind(BasicArrayCopyNode arraycopy, boolean exact) {
+        public static JavaKind selectComponentKind(BasicArrayCopyNode arraycopy, boolean exact) {
             ResolvedJavaType srcType = StampTool.typeOrNull(arraycopy.getSource().stamp());
             ResolvedJavaType destType = StampTool.typeOrNull(arraycopy.getDestination().stamp());
 
             if (srcType == null || !srcType.isArray() || destType == null || !destType.isArray()) {
                 if (!exact) {
-                    Kind component = getComponentKind(srcType);
+                    JavaKind component = getComponentKind(srcType);
                     if (component != null) {
                         return component;
                     }
@@ -415,12 +415,12 @@
                     return null;
                 }
             }
-            return srcType.getComponentType().getKind();
+            return srcType.getComponentType().getJavaKind();
         }
 
-        private static Kind getComponentKind(ResolvedJavaType type) {
+        private static JavaKind getComponentKind(ResolvedJavaType type) {
             if (type != null && type.isArray()) {
-                return type.getComponentType().getKind();
+                return type.getComponentType().getJavaKind();
             }
             return null;
         }
@@ -430,7 +430,7 @@
         }
 
         public void lower(ArrayCopyNode arraycopy, LoweringTool tool) {
-            Kind componentKind = selectComponentKind(arraycopy);
+            JavaKind componentKind = selectComponentKind(arraycopy);
             SnippetInfo snippetInfo = null;
             SnippetInfo slowPathSnippetInfo = null;
             Object slowPathArgument = null;
@@ -443,7 +443,7 @@
                     snippetInfo = arraycopyUnrolledIntrinsicSnippet;
                 }
             } else {
-                if (componentKind == Kind.Object) {
+                if (componentKind == JavaKind.Object) {
                     ResolvedJavaType srcType = StampTool.typeOrNull(arraycopy.getSource().stamp());
                     ResolvedJavaType destType = StampTool.typeOrNull(arraycopy.getDestination().stamp());
                     ResolvedJavaType srcComponentType = srcType == null ? null : srcType.getComponentType();
@@ -460,7 +460,7 @@
                     }
                 }
                 if (componentKind == null && snippetInfo == null) {
-                    Kind predictedKind = selectComponentKind(arraycopy, false);
+                    JavaKind predictedKind = selectComponentKind(arraycopy, false);
                     if (predictedKind != null) {
                         /*
                          * At least one array is of a known type requiring no store checks, so
@@ -468,7 +468,7 @@
                          * deficiencies in our propagation of type information.
                          */
                         componentKind = predictedKind;
-                        if (predictedKind == Kind.Object) {
+                        if (predictedKind == JavaKind.Object) {
                             snippetInfo = arraycopySlowPathIntrinsicSnippet;
                             slowPathSnippetInfo = arraycopyPredictedObjectWorkSnippet;
                             slowPathArgument = predictedKind;
@@ -490,9 +490,9 @@
             args.add("length", arraycopy.getLength());
             if (snippetInfo == arraycopyUnrolledIntrinsicSnippet) {
                 args.addConst("unrolledLength", arraycopy.getLength().asJavaConstant().asInt());
-                args.addConst("elementKind", componentKind != null ? componentKind : Kind.Illegal);
+                args.addConst("elementKind", componentKind != null ? componentKind : JavaKind.Illegal);
             } else if (snippetInfo == arraycopySlowPathIntrinsicSnippet) {
-                args.addConst("elementKind", componentKind != null ? componentKind : Kind.Illegal);
+                args.addConst("elementKind", componentKind != null ? componentKind : JavaKind.Illegal);
                 args.addConst("slowPath", slowPathSnippetInfo);
                 assert slowPathArgument != null;
                 args.addConst("slowPathArgument", slowPathArgument);
@@ -527,8 +527,8 @@
                 HotSpotResolvedObjectType arrayKlass = (HotSpotResolvedObjectType) tool.getMetaAccess().lookupJavaType(Object[].class);
                 ValueNode objectArrayKlass = ConstantNode.forConstant(KlassPointerStamp.klassNonNull(), arrayKlass.klass(), tool.getMetaAccess(), arraycopy.graph());
                 args.add("objectArrayKlass", objectArrayKlass);
-                args.addConst("counter", arraycopyCallCounters.get(Kind.Object));
-                args.addConst("copiedCounter", arraycopyCallCopiedCounters.get(Kind.Object));
+                args.addConst("counter", arraycopyCallCounters.get(JavaKind.Object));
+                args.addConst("copiedCounter", arraycopyCallCopiedCounters.get(JavaKind.Object));
             }
             instantiate(args, arraycopy);
         }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyUnrollNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyUnrollNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,21 +44,21 @@
     @Input protected ValueNode destPos;
     @Input protected ValueNode length;
 
-    private Kind elementKind;
+    private JavaKind elementKind;
 
     private int unrolledLength;
 
     @OptionalInput(InputType.Memory) private MemoryNode lastLocationAccess;
 
-    public ArrayCopyUnrollNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, int unrolledLength, Kind elementKind) {
-        super(TYPE, StampFactory.forKind(Kind.Void));
+    public ArrayCopyUnrollNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, int unrolledLength, JavaKind elementKind) {
+        super(TYPE, StampFactory.forKind(JavaKind.Void));
         this.src = src;
         this.srcPos = srcPos;
         this.dest = dest;
         this.destPos = destPos;
         this.length = length;
         this.unrolledLength = unrolledLength;
-        assert elementKind != null && elementKind != Kind.Illegal;
+        assert elementKind != null && elementKind != JavaKind.Illegal;
         this.elementKind = elementKind;
     }
 
@@ -95,7 +95,7 @@
 
     @Override
     public boolean isObjectArray() {
-        return elementKind == Kind.Object;
+        return elementKind == JavaKind.Object;
     }
 
     @Override
@@ -104,13 +104,14 @@
     }
 
     @NodeIntrinsic
-    public static native void arraycopy(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, @ConstantNodeParameter int unrolledLength, @ConstantNodeParameter Kind elementKind);
+    public static native void arraycopy(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, @ConstantNodeParameter int unrolledLength,
+                    @ConstantNodeParameter JavaKind elementKind);
 
     public int getUnrollLength() {
         return unrolledLength;
     }
 
-    public Kind getElementKind() {
+    public JavaKind getElementKind() {
         return elementKind;
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -60,7 +60,7 @@
 
     protected CheckcastArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length,
                     ValueNode superCheckOffset, ValueNode destElemKlass, boolean uninit) {
-        super(TYPE, StampFactory.forKind(Kind.Int));
+        super(TYPE, StampFactory.forKind(JavaKind.Int));
         this.src = src;
         this.srcPos = srcPos;
         this.dest = dest;
@@ -101,9 +101,9 @@
         graph().addBeforeFixed(this, basePtr);
 
         HotSpotJVMCIRuntimeProvider jvmciRuntime = runtime.getJVMCIRuntime();
-        int shift = CodeUtil.log2(jvmciRuntime.getArrayIndexScale(Kind.Object));
+        int shift = CodeUtil.log2(jvmciRuntime.getArrayIndexScale(JavaKind.Object));
         ValueNode scaledIndex = graph().unique(new LeftShiftNode(pos, ConstantNode.forInt(shift, graph())));
-        ValueNode offset = graph().unique(new AddNode(scaledIndex, ConstantNode.forInt(jvmciRuntime.getArrayBaseOffset(Kind.Object), graph())));
+        ValueNode offset = graph().unique(new AddNode(scaledIndex, ConstantNode.forInt(jvmciRuntime.getArrayBaseOffset(JavaKind.Object), graph())));
         return graph().unique(new OffsetAddressNode(basePtr, offset));
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -47,9 +47,9 @@
 
     @OptionalInput(InputType.Memory) MemoryNode lastLocationAccess;
 
-    protected Kind elementKind;
+    protected JavaKind elementKind;
 
-    public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind) {
+    public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, JavaKind elementKind) {
         super(TYPE, StampFactory.forVoid());
         assert layoutHelper == null || elementKind == null;
         this.src = src;
@@ -61,7 +61,7 @@
         this.elementKind = elementKind;
     }
 
-    public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind) {
+    public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind) {
         this(src, srcPos, dest, destPos, length, null, elementKind);
     }
 
@@ -86,7 +86,7 @@
 
     @Override
     public boolean isObjectArray() {
-        return elementKind == Kind.Object;
+        return elementKind == JavaKind.Object;
     }
 
     @Override
@@ -94,7 +94,7 @@
         return false;
     }
 
-    public Kind getElementKind() {
+    public JavaKind getElementKind() {
         return elementKind;
     }
 
@@ -135,7 +135,7 @@
     }
 
     @NodeIntrinsic
-    public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter Kind elementKind);
+    public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter JavaKind elementKind);
 
     @NodeIntrinsic
     public static native void arraycopyPrimitive(Object src, int srcPos, Object dest, int destPos, int length, int layoutHelper);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopySnippets.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopySnippets.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -50,10 +50,10 @@
 public class UnsafeArrayCopySnippets implements Snippets {
     private static final boolean supportsUnalignedMemoryAccess = runtime().getTarget().arch.supportsUnalignedMemoryAccess();
 
-    private static final Kind VECTOR_KIND = Kind.Long;
+    private static final JavaKind VECTOR_KIND = JavaKind.Long;
     private static final long VECTOR_SIZE = arrayIndexScale(VECTOR_KIND);
 
-    private static void vectorizedCopy(Object src, int srcPos, Object dest, int destPos, int length, Kind baseKind, LocationIdentity locationIdentity) {
+    private static void vectorizedCopy(Object src, int srcPos, Object dest, int destPos, int length, JavaKind baseKind, LocationIdentity locationIdentity) {
         int arrayBaseOffset = arrayBaseOffset(baseKind);
         int elementSize = arrayIndexScale(baseKind);
         long byteLength = (long) length * elementSize;
@@ -129,55 +129,55 @@
     }
 
     @Fold
-    private static LocationIdentity getArrayLocation(Kind kind) {
+    private static LocationIdentity getArrayLocation(JavaKind kind) {
         return NamedLocationIdentity.getArrayLocation(kind);
     }
 
     @Snippet
     public static void arraycopyByte(byte[] src, int srcPos, byte[] dest, int destPos, int length) {
-        Kind kind = Kind.Byte;
+        JavaKind kind = JavaKind.Byte;
         vectorizedCopy(src, srcPos, dest, destPos, length, kind, getArrayLocation(kind));
     }
 
     @Snippet
     public static void arraycopyBoolean(boolean[] src, int srcPos, boolean[] dest, int destPos, int length) {
-        Kind kind = Kind.Boolean;
+        JavaKind kind = JavaKind.Boolean;
         vectorizedCopy(src, srcPos, dest, destPos, length, kind, getArrayLocation(kind));
     }
 
     @Snippet
     public static void arraycopyChar(char[] src, int srcPos, char[] dest, int destPos, int length) {
-        Kind kind = Kind.Char;
+        JavaKind kind = JavaKind.Char;
         vectorizedCopy(src, srcPos, dest, destPos, length, kind, getArrayLocation(kind));
     }
 
     @Snippet
     public static void arraycopyShort(short[] src, int srcPos, short[] dest, int destPos, int length) {
-        Kind kind = Kind.Short;
+        JavaKind kind = JavaKind.Short;
         vectorizedCopy(src, srcPos, dest, destPos, length, kind, getArrayLocation(kind));
     }
 
     @Snippet
     public static void arraycopyInt(int[] src, int srcPos, int[] dest, int destPos, int length) {
-        Kind kind = Kind.Int;
+        JavaKind kind = JavaKind.Int;
         vectorizedCopy(src, srcPos, dest, destPos, length, kind, getArrayLocation(kind));
     }
 
     @Snippet
     public static void arraycopyFloat(float[] src, int srcPos, float[] dest, int destPos, int length) {
-        Kind kind = Kind.Float;
+        JavaKind kind = JavaKind.Float;
         vectorizedCopy(src, srcPos, dest, destPos, length, kind, getArrayLocation(kind));
     }
 
     @Snippet
     public static void arraycopyLong(long[] src, int srcPos, long[] dest, int destPos, int length) {
-        Kind kind = Kind.Long;
+        JavaKind kind = JavaKind.Long;
         vectorizedCopy(src, srcPos, dest, destPos, length, kind, getArrayLocation(kind));
     }
 
     @Snippet
     public static void arraycopyDouble(double[] src, int srcPos, double[] dest, int destPos, int length) {
-        Kind kind = Kind.Double;
+        JavaKind kind = JavaKind.Double;
         /*
          * TODO atomicity problem on 32-bit architectures: The JVM spec requires double values to be
          * copied atomically, but not long values. For example, on Intel 32-bit this code is not
@@ -194,7 +194,7 @@
      */
     @Snippet
     public static void arraycopyObject(Object[] src, int srcPos, Object[] dest, int destPos, int length) {
-        Kind kind = Kind.Object;
+        JavaKind kind = JavaKind.Object;
         final int scale = arrayIndexScale(kind);
         int arrayBaseOffset = arrayBaseOffset(kind);
         LocationIdentity arrayLocation = getArrayLocation(kind);
@@ -270,22 +270,22 @@
         public Templates(HotSpotProviders providers, TargetDescription target) {
             super(providers, providers.getSnippetReflection(), target);
 
-            arraycopySnippets = new SnippetInfo[Kind.values().length];
-            arraycopySnippets[Kind.Boolean.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyBoolean");
-            arraycopySnippets[Kind.Byte.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyByte");
-            arraycopySnippets[Kind.Short.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyShort");
-            arraycopySnippets[Kind.Char.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyChar");
-            arraycopySnippets[Kind.Int.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyInt");
-            arraycopySnippets[Kind.Long.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyLong");
-            arraycopySnippets[Kind.Float.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyFloat");
-            arraycopySnippets[Kind.Double.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyDouble");
-            arraycopySnippets[Kind.Object.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyObject");
+            arraycopySnippets = new SnippetInfo[JavaKind.values().length];
+            arraycopySnippets[JavaKind.Boolean.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyBoolean");
+            arraycopySnippets[JavaKind.Byte.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyByte");
+            arraycopySnippets[JavaKind.Short.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyShort");
+            arraycopySnippets[JavaKind.Char.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyChar");
+            arraycopySnippets[JavaKind.Int.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyInt");
+            arraycopySnippets[JavaKind.Long.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyLong");
+            arraycopySnippets[JavaKind.Float.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyFloat");
+            arraycopySnippets[JavaKind.Double.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyDouble");
+            arraycopySnippets[JavaKind.Object.ordinal()] = snippet(UnsafeArrayCopySnippets.class, "arraycopyObject");
 
             genericPrimitiveSnippet = snippet(UnsafeArrayCopySnippets.class, "arraycopyPrimitive");
         }
 
         public void lower(UnsafeArrayCopyNode node, LoweringTool tool) {
-            Kind elementKind = node.getElementKind();
+            JavaKind elementKind = node.getElementKind();
             SnippetInfo snippet;
             if (elementKind == null) {
                 // primitive array of unknown kind
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java	Tue Sep 08 19:57:39 2015 +0200
@@ -234,10 +234,10 @@
         for (int i = 0; i < args.length; i++) {
             ResolvedJavaType type = providers.getMetaAccess().lookupJavaType(args[i]).resolve(accessingClass);
             Stamp stamp;
-            if (type.getKind().getStackKind() == Kind.Object) {
+            if (type.getJavaKind().getStackKind() == JavaKind.Object) {
                 stamp = StampFactory.declared(type);
             } else {
-                stamp = StampFactory.forKind(type.getKind());
+                stamp = StampFactory.forKind(type.getJavaKind());
             }
             ParameterNode param = kit.unique(new ParameterNode(i, stamp));
             params[i] = param;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java	Tue Sep 08 19:57:39 2015 +0200
@@ -183,7 +183,7 @@
             // if TLAB is currently allocated (top or end != null) then
             // fill [top, end + alignment_reserve) with array object
             if (top.notEqual(0)) {
-                int headerSize = arrayBaseOffset(Kind.Int);
+                int headerSize = arrayBaseOffset(JavaKind.Int);
                 // just like the HotSpot assembler stubs, assumes that tlabFreeSpaceInInts fits in
                 // an int
                 int tlabFreeSpaceInInts = (int) tlabFreeSpaceInBytes >>> 2;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypes.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypes.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -48,7 +48,7 @@
      */
     private final ResolvedJavaType methodPointerType;
 
-    public HotSpotWordTypes(MetaAccessProvider metaAccess, Kind wordKind) {
+    public HotSpotWordTypes(MetaAccessProvider metaAccess, JavaKind wordKind) {
         super(metaAccess, wordKind);
         this.metaspacePointerType = metaAccess.lookupJavaType(MetaspacePointer.class);
         this.klassPointerType = metaAccess.lookupJavaType(KlassPointer.class);
@@ -64,7 +64,7 @@
     }
 
     @Override
-    public Kind asKind(JavaType type) {
+    public JavaKind asKind(JavaType type) {
         if (klassPointerType.equals(type) || methodPointerType.equals(type)) {
             return getWordKind();
         }
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Tue Sep 08 19:57:39 2015 +0200
@@ -152,7 +152,7 @@
          * @param parser the parsing context of the (non-intrinsic) method calling the intrinsic
          * @param args the arguments to the call
          */
-        public IntrinsicScope(BytecodeParser parser, Kind[] argSlotKinds, ValueNode[] args) {
+        public IntrinsicScope(BytecodeParser parser, JavaKind[] argSlotKinds, ValueNode[] args) {
             assert !parser.parsingIntrinsic();
             this.parser = parser;
             mark = parser.getGraph().getMark();
@@ -190,10 +190,10 @@
                                  * Swap the top-of-stack value with the side-effect return value
                                  * using the frame state.
                                  */
-                                Kind returnKind = parser.currentInvokeReturnType.getKind();
+                                JavaKind returnKind = parser.currentInvokeReturnType.getJavaKind();
                                 ValueNode tos = frameStateBuilder.pop(returnKind);
                                 assert tos.getStackKind() == returnVal.getStackKind();
-                                FrameState newFrameState = frameStateBuilder.create(parser.stream.nextBCI(), parser.getNonIntrinsicAncestor(), false, new Kind[]{returnKind},
+                                FrameState newFrameState = frameStateBuilder.create(parser.stream.nextBCI(), parser.getNonIntrinsicAncestor(), false, new JavaKind[]{returnKind},
                                                 new ValueNode[]{returnVal});
                                 frameState.replaceAndDelete(newFrameState);
                                 frameStateBuilder.push(returnKind, tos);
@@ -829,7 +829,7 @@
     protected void handleUnresolvedCheckCast(JavaType type, ValueNode object) {
         assert !graphBuilderConfig.eagerResolving();
         append(new FixedGuardNode(graph.unique(new IsNullNode(object)), Unresolved, InvalidateRecompile));
-        frameState.push(Kind.Object, appendConstant(JavaConstant.NULL_POINTER));
+        frameState.push(JavaKind.Object, appendConstant(JavaConstant.NULL_POINTER));
     }
 
     /**
@@ -842,7 +842,7 @@
         DeoptimizeNode deopt = graph.add(new DeoptimizeNode(InvalidateRecompile, Unresolved));
         append(new IfNode(graph.unique(new IsNullNode(object)), successor, deopt, 1));
         lastInstr = successor;
-        frameState.push(Kind.Int, appendConstant(JavaConstant.INT_0));
+        frameState.push(JavaKind.Int, appendConstant(JavaConstant.INT_0));
     }
 
     /**
@@ -927,12 +927,12 @@
         DispatchBeginNode dispatchBegin;
         if (exceptionObject == null) {
             dispatchBegin = graph.add(new ExceptionObjectNode(metaAccess));
-            dispatchState.push(Kind.Object, dispatchBegin);
+            dispatchState.push(JavaKind.Object, dispatchBegin);
             dispatchState.setRethrowException(true);
             dispatchBegin.setStateAfter(dispatchState.create(bci, dispatchBegin));
         } else {
             dispatchBegin = graph.add(new DispatchBeginNode());
-            dispatchState.push(Kind.Object, exceptionObject);
+            dispatchState.push(JavaKind.Object, exceptionObject);
             dispatchState.setRethrowException(true);
             dispatchBegin.setStateAfter(dispatchState.create(bci, dispatchBegin));
         }
@@ -943,11 +943,11 @@
         return dispatchBegin;
     }
 
-    protected ValueNode genLoadIndexed(ValueNode array, ValueNode index, Kind kind) {
+    protected ValueNode genLoadIndexed(ValueNode array, ValueNode index, JavaKind kind) {
         return LoadIndexedNode.create(array, index, kind, metaAccess, constantReflection);
     }
 
-    protected void genStoreIndexed(ValueNode array, ValueNode index, Kind kind, ValueNode value) {
+    protected void genStoreIndexed(ValueNode array, ValueNode index, JavaKind kind, ValueNode value) {
         add(new StoreIndexedNode(array, index, kind, value));
     }
 
@@ -1067,7 +1067,7 @@
     protected void genThrow() {
         genInfoPointNode(InfopointReason.LINE_NUMBER, null);
 
-        ValueNode exception = frameState.pop(Kind.Object);
+        ValueNode exception = frameState.pop(JavaKind.Object);
         FixedGuardNode nullCheck = append(new FixedGuardNode(graph.unique(new IsNullNode(exception)), NullCheckException, InvalidateReprofile, true));
         PiNode nonNullException = graph.unique(new PiNode(exception, exception.stamp().join(objectNonNull())));
         nonNullException.setGuard(nullCheck);
@@ -1182,7 +1182,7 @@
         if (target instanceof ResolvedJavaMethod) {
             JavaConstant appendix = constantPool.lookupAppendix(stream.readCPI4(), Bytecodes.INVOKEDYNAMIC);
             if (appendix != null) {
-                frameState.push(Kind.Object, ConstantNode.forConstant(appendix, metaAccess, graph));
+                frameState.push(JavaKind.Object, ConstantNode.forConstant(appendix, metaAccess, graph));
             }
             ValueNode[] args = frameState.popArguments(target.getSignature().getParameterCount(false));
             appendInvoke(InvokeKind.Static, (ResolvedJavaMethod) target, args);
@@ -1201,7 +1201,7 @@
             boolean hasReceiver = !((ResolvedJavaMethod) target).isStatic();
             JavaConstant appendix = constantPool.lookupAppendix(stream.readCPI(), Bytecodes.INVOKEVIRTUAL);
             if (appendix != null) {
-                frameState.push(Kind.Object, ConstantNode.forConstant(appendix, metaAccess, graph));
+                frameState.push(JavaKind.Object, ConstantNode.forConstant(appendix, metaAccess, graph));
             }
             ValueNode[] args = frameState.popArguments(target.getSignature().getParameterCount(hasReceiver));
             if (hasReceiver) {
@@ -1273,7 +1273,7 @@
             }
         }
 
-        Kind resultType = targetMethod.getSignature().getReturnKind();
+        JavaKind resultType = targetMethod.getSignature().getReturnKind();
         if (DeoptALot.getValue()) {
             append(new DeoptimizeNode(DeoptimizationAction.None, RuntimeConstraint));
             frameState.pushReturn(resultType, ConstantNode.defaultForKind(resultType, graph));
@@ -1352,20 +1352,20 @@
         final InvocationPlugin plugin;
         final ValueNode[] args;
         final ResolvedJavaMethod targetMethod;
-        final Kind resultType;
+        final JavaKind resultType;
         final int beforeStackSize;
         final boolean needsNullCheck;
         final int nodeCount;
         final Mark mark;
 
-        public InvocationPluginAssertions(InvocationPlugin plugin, ValueNode[] args, ResolvedJavaMethod targetMethod, Kind resultType) {
+        public InvocationPluginAssertions(InvocationPlugin plugin, ValueNode[] args, ResolvedJavaMethod targetMethod, JavaKind resultType) {
             guarantee(assertionsEnabled(), "%s should only be loaded and instantiated if assertions are enabled", getClass().getSimpleName());
             this.plugin = plugin;
             this.targetMethod = targetMethod;
             this.args = args;
             this.resultType = resultType;
             this.beforeStackSize = frameState.stackSize();
-            this.needsNullCheck = !targetMethod.isStatic() && args[0].getStackKind() == Kind.Object && !StampTool.isPointerNonNull(args[0].stamp());
+            this.needsNullCheck = !targetMethod.isStatic() && args[0].getStackKind() == JavaKind.Object && !StampTool.isPointerNonNull(args[0].stamp());
             this.nodeCount = graph.getNodeCount();
             this.mark = graph.getMark();
         }
@@ -1400,7 +1400,7 @@
         }
     }
 
-    private boolean tryInvocationPlugin(ValueNode[] args, ResolvedJavaMethod targetMethod, Kind resultType) {
+    private boolean tryInvocationPlugin(ValueNode[] args, ResolvedJavaMethod targetMethod, JavaKind resultType) {
         InvocationPlugin plugin = graphBuilderConfig.getPlugins().getInvocationPlugins().lookupInvocation(targetMethod);
         if (plugin != null) {
 
@@ -1554,7 +1554,7 @@
 
             FixedWithNextNode calleeBeforeReturnNode = parser.getBeforeReturnNode();
             this.lastInstr = calleeBeforeReturnNode;
-            Kind calleeReturnKind = targetMethod.getSignature().getReturnKind();
+            JavaKind calleeReturnKind = targetMethod.getSignature().getReturnKind();
             if (calleeBeforeReturnNode != null) {
                 ValueNode calleeReturnValue = parser.getReturnValue();
                 if (calleeReturnValue != null) {
@@ -1578,14 +1578,14 @@
         return new MethodCallTargetNode(invokeKind, targetMethod, args, returnType, profile);
     }
 
-    protected InvokeNode createInvoke(CallTargetNode callTarget, Kind resultType) {
+    protected InvokeNode createInvoke(CallTargetNode callTarget, JavaKind resultType) {
         InvokeNode invoke = append(new InvokeNode(callTarget, bci()));
         frameState.pushReturn(resultType, invoke);
         invoke.setStateAfter(createFrameState(stream.nextBCI(), invoke));
         return invoke;
     }
 
-    protected InvokeWithExceptionNode createInvokeWithException(CallTargetNode callTarget, Kind resultType) {
+    protected InvokeWithExceptionNode createInvokeWithException(CallTargetNode callTarget, JavaKind resultType) {
         if (currentBlock != null && stream.nextBCI() > currentBlock.endBci) {
             /*
              * Clear non-live locals early so that the exception handler entry gets the cleared
@@ -1601,7 +1601,7 @@
         return invoke;
     }
 
-    protected void genReturn(ValueNode returnVal, Kind returnKind) {
+    protected void genReturn(ValueNode returnVal, JavaKind returnKind) {
         if (parsingIntrinsic() && returnVal != null) {
             if (returnVal instanceof StateSplit) {
                 StateSplit stateSplit = (StateSplit) returnVal;
@@ -1648,9 +1648,9 @@
         }
     }
 
-    private void beforeReturn(ValueNode x, Kind kind) {
+    private void beforeReturn(ValueNode x, JavaKind kind) {
         if (graph.method() != null && graph.method().isJavaLangObjectInit()) {
-            ValueNode receiver = frameState.loadLocal(0, Kind.Object);
+            ValueNode receiver = frameState.loadLocal(0, JavaKind.Object);
             if (RegisterFinalizerNode.mayHaveFinalizer(receiver, graph.getAssumptions())) {
                 append(new RegisterFinalizerNode(receiver));
             }
@@ -1694,13 +1694,13 @@
             throw new JsrNotSupportedBailout("unstructured control flow (internal limitation)");
         }
         ConstantNode nextBciNode = getJsrConstant(nextBci);
-        frameState.push(Kind.Object, nextBciNode);
+        frameState.push(JavaKind.Object, nextBciNode);
         appendGoto(successor);
     }
 
     protected void genRet(int localIndex) {
         BciBlock successor = currentBlock.getRetSuccessor();
-        ValueNode local = frameState.loadLocal(localIndex, Kind.Object);
+        ValueNode local = frameState.loadLocal(localIndex, JavaKind.Object);
         JsrScope scope = currentBlock.getJsrScope();
         int retAddress = scope.nextReturnAddress();
         ConstantNode returnBciNode = getJsrConstant(retAddress);
@@ -2120,7 +2120,7 @@
         if (target.isStatic()) {
             return appendConstant(target.getDeclaringClass().getJavaClass());
         } else {
-            return state.loadLocal(0, Kind.Object);
+            return state.loadLocal(0, JavaKind.Object);
         }
     }
 
@@ -2163,15 +2163,15 @@
             frameState.setRethrowException(false);
             createUnwind();
         } else {
-            ValueNode exception = frameState.pop(Kind.Object);
+            ValueNode exception = frameState.pop(JavaKind.Object);
             this.unwindValue = exception;
             this.beforeUnwindNode = this.lastInstr;
         }
     }
 
     private void handleReturnBlock() {
-        Kind returnKind = method.getSignature().getReturnKind().getStackKind();
-        ValueNode x = returnKind == Kind.Void ? null : frameState.pop(returnKind);
+        JavaKind returnKind = method.getSignature().getReturnKind().getStackKind();
+        ValueNode x = returnKind == JavaKind.Void ? null : frameState.pop(returnKind);
         assert frameState.stackSize() == 0;
         beforeReturn(x, returnKind);
         this.returnValue = x;
@@ -2191,12 +2191,12 @@
 
     private void createUnwind() {
         assert frameState.stackSize() == 1 : frameState;
-        ValueNode exception = frameState.pop(Kind.Object);
+        ValueNode exception = frameState.pop(JavaKind.Object);
         synchronizedEpilogue(BytecodeFrame.AFTER_EXCEPTION_BCI, null, null);
         append(new UnwindNode(exception));
     }
 
-    private void synchronizedEpilogue(int bci, ValueNode currentReturnValue, Kind currentReturnValueKind) {
+    private void synchronizedEpilogue(int bci, ValueNode currentReturnValue, JavaKind currentReturnValueKind) {
         if (method.isSynchronized()) {
             if (currentReturnValue != null) {
                 frameState.push(currentReturnValueKind, currentReturnValue);
@@ -2237,11 +2237,11 @@
             BciBlock nextBlock = block.getSuccessorCount() == 1 ? blockMap.getUnwindBlock() : block.getSuccessor(1);
             ValueNode exception = frameState.stack[0];
             CheckCastNode checkCast = graph.add(new CheckCastNode((ResolvedJavaType) catchType, exception, null, false));
-            frameState.pop(Kind.Object);
-            frameState.push(Kind.Object, checkCast);
+            frameState.pop(JavaKind.Object);
+            frameState.push(JavaKind.Object, checkCast);
             FixedNode catchSuccessor = createTarget(block.getSuccessor(0), frameState);
-            frameState.pop(Kind.Object);
-            frameState.push(Kind.Object, exception);
+            frameState.pop(JavaKind.Object);
+            frameState.push(JavaKind.Object, exception);
             FixedNode nextDispatch = createTarget(nextBlock, frameState);
             checkCast.setNext(catchSuccessor);
             append(new IfNode(graph.unique(InstanceOfNode.create((ResolvedJavaType) catchType, exception, null)), checkCast, nextDispatch, 0.5));
@@ -2528,10 +2528,10 @@
             conditionalNode = graph.addOrUnique(conditionalNode);
         }
         if (genReturn) {
-            Kind returnKind = method.getSignature().getReturnKind().getStackKind();
+            JavaKind returnKind = method.getSignature().getReturnKind().getStackKind();
             this.genReturn(conditionalNode, returnKind);
         } else {
-            frameState.push(Kind.Int, conditionalNode);
+            frameState.push(JavaKind.Int, conditionalNode);
             appendGoto(trueBlock.getSuccessor(0));
             stream.setBCI(oldBci);
         }
@@ -2541,13 +2541,13 @@
         LogicNode condition;
         assert !a.getStackKind().isNumericFloat();
         if (cond == Condition.EQ || cond == Condition.NE) {
-            if (a.getStackKind() == Kind.Object) {
+            if (a.getStackKind() == JavaKind.Object) {
                 condition = genObjectEquals(a, b);
             } else {
                 condition = genIntegerEquals(a, b);
             }
         } else {
-            assert a.getStackKind() != Kind.Object && !cond.isUnsigned();
+            assert a.getStackKind() != JavaKind.Object && !cond.isUnsigned();
             condition = genIntegerLessThan(a, b);
         }
         return condition;
@@ -2600,7 +2600,7 @@
         return metaAccess;
     }
 
-    public void push(Kind slotKind, ValueNode value) {
+    public void push(JavaKind slotKind, ValueNode value) {
         assert value.isAlive();
         frameState.push(slotKind, value);
     }
@@ -2685,12 +2685,12 @@
         return stream.currentBCI();
     }
 
-    public void loadLocal(int index, Kind kind) {
+    public void loadLocal(int index, JavaKind kind) {
         ValueNode value = frameState.loadLocal(index, kind);
         frameState.push(kind, value);
     }
 
-    public void storeLocal(Kind kind, int index) {
+    public void storeLocal(JavaKind kind, int index) {
         ValueNode value = frameState.pop(kind);
         frameState.storeLocal(index, kind, value);
     }
@@ -2702,21 +2702,21 @@
             // this is a load of class constant which might be unresolved
             JavaType type = (JavaType) con;
             if (type instanceof ResolvedJavaType) {
-                frameState.push(Kind.Object, appendConstant(((ResolvedJavaType) type).getJavaClass()));
+                frameState.push(JavaKind.Object, appendConstant(((ResolvedJavaType) type).getJavaClass()));
             } else {
                 handleUnresolvedLoadConstant(type);
             }
         } else if (con instanceof JavaConstant) {
             JavaConstant constant = (JavaConstant) con;
-            frameState.push(constant.getKind(), appendConstant(constant));
+            frameState.push(constant.getJavaKind(), appendConstant(constant));
         } else {
             throw new Error("lookupConstant returned an object of incorrect type");
         }
     }
 
-    private void genLoadIndexed(Kind kind) {
-        ValueNode index = frameState.pop(Kind.Int);
-        ValueNode array = emitExplicitExceptions(frameState.pop(Kind.Object), index);
+    private void genLoadIndexed(JavaKind kind) {
+        ValueNode index = frameState.pop(JavaKind.Int);
+        ValueNode array = emitExplicitExceptions(frameState.pop(JavaKind.Object), index);
 
         for (NodePlugin plugin : graphBuilderConfig.getPlugins().getNodePlugins()) {
             if (plugin.handleLoadIndexed(this, array, index, kind)) {
@@ -2727,10 +2727,10 @@
         frameState.push(kind, append(genLoadIndexed(array, index, kind)));
     }
 
-    private void genStoreIndexed(Kind kind) {
+    private void genStoreIndexed(JavaKind kind) {
         ValueNode value = frameState.pop(kind);
-        ValueNode index = frameState.pop(Kind.Int);
-        ValueNode array = emitExplicitExceptions(frameState.pop(Kind.Object), index);
+        ValueNode index = frameState.pop(JavaKind.Int);
+        ValueNode array = emitExplicitExceptions(frameState.pop(JavaKind.Object), index);
 
         for (NodePlugin plugin : graphBuilderConfig.getPlugins().getNodePlugins()) {
             if (plugin.handleStoreIndexed(this, array, index, kind, value)) {
@@ -2741,7 +2741,7 @@
         genStoreIndexed(array, index, kind, value);
     }
 
-    private void genArithmeticOp(Kind kind, int opcode) {
+    private void genArithmeticOp(JavaKind kind, int opcode) {
         ValueNode y = frameState.pop(kind);
         ValueNode x = frameState.pop(kind);
         ValueNode v;
@@ -2784,7 +2784,7 @@
         frameState.push(kind, append(v));
     }
 
-    private void genIntegerDivOp(Kind kind, int opcode) {
+    private void genIntegerDivOp(JavaKind kind, int opcode) {
         ValueNode y = frameState.pop(kind);
         ValueNode x = frameState.pop(kind);
         ValueNode v;
@@ -2803,13 +2803,13 @@
         frameState.push(kind, append(v));
     }
 
-    private void genNegateOp(Kind kind) {
+    private void genNegateOp(JavaKind kind) {
         ValueNode x = frameState.pop(kind);
         frameState.push(kind, append(genNegateOp(x)));
     }
 
-    private void genShiftOp(Kind kind, int opcode) {
-        ValueNode s = frameState.pop(Kind.Int);
+    private void genShiftOp(JavaKind kind, int opcode) {
+        ValueNode s = frameState.pop(JavaKind.Int);
         ValueNode x = frameState.pop(kind);
         ValueNode v;
         switch (opcode) {
@@ -2831,7 +2831,7 @@
         frameState.push(kind, append(v));
     }
 
-    private void genLogicOp(Kind kind, int opcode) {
+    private void genLogicOp(JavaKind kind, int opcode) {
         ValueNode y = frameState.pop(kind);
         ValueNode x = frameState.pop(kind);
         ValueNode v;
@@ -2854,18 +2854,18 @@
         frameState.push(kind, append(v));
     }
 
-    private void genCompareOp(Kind kind, boolean isUnorderedLess) {
+    private void genCompareOp(JavaKind kind, boolean isUnorderedLess) {
         ValueNode y = frameState.pop(kind);
         ValueNode x = frameState.pop(kind);
-        frameState.push(Kind.Int, append(genNormalizeCompare(x, y, isUnorderedLess)));
+        frameState.push(JavaKind.Int, append(genNormalizeCompare(x, y, isUnorderedLess)));
     }
 
-    private void genFloatConvert(FloatConvert op, Kind from, Kind to) {
+    private void genFloatConvert(FloatConvert op, JavaKind from, JavaKind to) {
         ValueNode input = frameState.pop(from);
         frameState.push(to, append(genFloatConvert(op, input)));
     }
 
-    private void genSignExtend(Kind from, Kind to) {
+    private void genSignExtend(JavaKind from, JavaKind to) {
         ValueNode input = frameState.pop(from);
         if (from != from.getStackKind()) {
             input = append(genNarrow(input, from.getBitCount()));
@@ -2873,7 +2873,7 @@
         frameState.push(to, append(genSignExtend(input, to.getBitCount())));
     }
 
-    private void genZeroExtend(Kind from, Kind to) {
+    private void genZeroExtend(JavaKind from, JavaKind to) {
         ValueNode input = frameState.pop(from);
         if (from != from.getStackKind()) {
             input = append(genNarrow(input, from.getBitCount()));
@@ -2881,7 +2881,7 @@
         frameState.push(to, append(genZeroExtend(input, to.getBitCount())));
     }
 
-    private void genNarrow(Kind from, Kind to) {
+    private void genNarrow(JavaKind from, JavaKind to) {
         ValueNode input = frameState.pop(from);
         frameState.push(to, append(genNarrow(input, to.getBitCount())));
     }
@@ -2889,24 +2889,24 @@
     private void genIncrement() {
         int index = getStream().readLocalIndex();
         int delta = getStream().readIncrement();
-        ValueNode x = frameState.loadLocal(index, Kind.Int);
+        ValueNode x = frameState.loadLocal(index, JavaKind.Int);
         ValueNode y = appendConstant(JavaConstant.forInt(delta));
-        frameState.storeLocal(index, Kind.Int, append(genIntegerAdd(x, y)));
+        frameState.storeLocal(index, JavaKind.Int, append(genIntegerAdd(x, y)));
     }
 
     private void genIfZero(Condition cond) {
         ValueNode y = appendConstant(JavaConstant.INT_0);
-        ValueNode x = frameState.pop(Kind.Int);
+        ValueNode x = frameState.pop(JavaKind.Int);
         genIf(x, cond, y);
     }
 
     private void genIfNull(Condition cond) {
         ValueNode y = appendConstant(JavaConstant.NULL_POINTER);
-        ValueNode x = frameState.pop(Kind.Object);
+        ValueNode x = frameState.pop(JavaKind.Object);
         genIf(x, cond, y);
     }
 
-    private void genIfSame(Kind kind, Condition cond) {
+    private void genIfSame(JavaKind kind, Condition cond) {
         ValueNode y = frameState.pop(kind);
         ValueNode x = frameState.pop(kind);
         genIf(x, cond, y);
@@ -2971,7 +2971,7 @@
     private void genCheckCast() {
         int cpi = getStream().readCPI();
         JavaType type = lookupType(cpi, CHECKCAST);
-        ValueNode object = frameState.pop(Kind.Object);
+        ValueNode object = frameState.pop(JavaKind.Object);
 
         if (!(type instanceof ResolvedJavaType)) {
             handleUnresolvedCheckCast(type, object);
@@ -3008,7 +3008,7 @@
         if (checkCastNode == null) {
             checkCastNode = append(createCheckCast(resolvedType, object, profile, false));
         }
-        frameState.push(Kind.Object, checkCastNode);
+        frameState.push(JavaKind.Object, checkCastNode);
     }
 
     private ValueNode appendNullCheck(ValueNode object) {
@@ -3027,7 +3027,7 @@
     private void genInstanceOf() {
         int cpi = getStream().readCPI();
         JavaType type = lookupType(cpi, INSTANCEOF);
-        ValueNode object = frameState.pop(Kind.Object);
+        ValueNode object = frameState.pop(JavaKind.Object);
 
         if (!(type instanceof ResolvedJavaType)) {
             handleUnresolvedInstanceOf(type, object);
@@ -3059,7 +3059,7 @@
         if (instanceOfNode == null) {
             instanceOfNode = createInstanceOf(resolvedType, object, profile);
         }
-        frameState.push(Kind.Int, append(genConditional(genUnique(instanceOfNode))));
+        frameState.push(JavaKind.Int, append(genConditional(genUnique(instanceOfNode))));
     }
 
     void genNewInstance(int cpi) {
@@ -3087,7 +3087,7 @@
             }
         }
 
-        frameState.push(Kind.Object, append(createNewInstance(resolvedType, true)));
+        frameState.push(JavaKind.Object, append(createNewInstance(resolvedType, true)));
     }
 
     /**
@@ -3122,7 +3122,7 @@
 
     private void genNewPrimitiveArray(int typeCode) {
         ResolvedJavaType elementType = metaAccess.lookupJavaType(arrayTypeCodeToClass(typeCode));
-        ValueNode length = frameState.pop(Kind.Int);
+        ValueNode length = frameState.pop(JavaKind.Int);
 
         for (NodePlugin plugin : graphBuilderConfig.getPlugins().getNodePlugins()) {
             if (plugin.handleNewArray(this, elementType, length)) {
@@ -3130,12 +3130,12 @@
             }
         }
 
-        frameState.push(Kind.Object, append(createNewArray(elementType, length, true)));
+        frameState.push(JavaKind.Object, append(createNewArray(elementType, length, true)));
     }
 
     private void genNewObjectArray(int cpi) {
         JavaType type = lookupType(cpi, ANEWARRAY);
-        ValueNode length = frameState.pop(Kind.Int);
+        ValueNode length = frameState.pop(JavaKind.Int);
 
         if (!(type instanceof ResolvedJavaType)) {
             handleUnresolvedNewObjectArray(type, length);
@@ -3149,7 +3149,7 @@
             }
         }
 
-        frameState.push(Kind.Object, append(createNewArray(resolvedType, length, true)));
+        frameState.push(JavaKind.Object, append(createNewArray(resolvedType, length, true)));
     }
 
     private void genNewMultiArray(int cpi) {
@@ -3157,7 +3157,7 @@
         int rank = getStream().readUByte(bci() + 3);
         ValueNode[] dims = new ValueNode[rank];
         for (int i = rank - 1; i >= 0; i--) {
-            dims[i] = frameState.pop(Kind.Int);
+            dims[i] = frameState.pop(JavaKind.Int);
         }
 
         if (!(type instanceof ResolvedJavaType)) {
@@ -3172,11 +3172,11 @@
             }
         }
 
-        frameState.push(Kind.Object, append(createNewMultiArray(resolvedType, dims)));
+        frameState.push(JavaKind.Object, append(createNewMultiArray(resolvedType, dims)));
     }
 
     private void genGetField(JavaField field) {
-        ValueNode receiver = emitExplicitExceptions(frameState.pop(Kind.Object), null);
+        ValueNode receiver = emitExplicitExceptions(frameState.pop(JavaKind.Object), null);
 
         if (!(field instanceof ResolvedJavaField) || !((ResolvedJavaField) field).getDeclaringClass().isInitialized()) {
             handleUnresolvedLoadField(field, receiver);
@@ -3190,7 +3190,7 @@
             }
         }
 
-        frameState.push(field.getKind(), append(genLoadField(receiver, resolvedField)));
+        frameState.push(field.getJavaKind(), append(genLoadField(receiver, resolvedField)));
     }
 
     /**
@@ -3216,8 +3216,8 @@
     }
 
     private void genPutField(JavaField field) {
-        ValueNode value = frameState.pop(field.getKind());
-        ValueNode receiver = emitExplicitExceptions(frameState.pop(Kind.Object), null);
+        ValueNode value = frameState.pop(field.getJavaKind());
+        ValueNode receiver = emitExplicitExceptions(frameState.pop(JavaKind.Object), null);
 
         if (!(field instanceof ResolvedJavaField) || !((ResolvedJavaField) field).getDeclaringClass().isInitialized()) {
             handleUnresolvedStoreField(field, value, receiver);
@@ -3246,7 +3246,7 @@
          * which case a suffix is added to the generated field.
          */
         if ((parsingIntrinsic() || graphBuilderConfig.omitAssertions()) && resolvedField.isSynthetic() && resolvedField.getName().startsWith("$assertionsDisabled")) {
-            frameState.push(field.getKind(), ConstantNode.forBoolean(true, graph));
+            frameState.push(field.getJavaKind(), ConstantNode.forBoolean(true, graph));
             return;
         }
 
@@ -3256,11 +3256,11 @@
             }
         }
 
-        frameState.push(field.getKind(), append(genLoadField(null, resolvedField)));
+        frameState.push(field.getJavaKind(), append(genLoadField(null, resolvedField)));
     }
 
     private void genPutStatic(JavaField field) {
-        ValueNode value = frameState.pop(field.getKind());
+        ValueNode value = frameState.pop(field.getJavaKind());
         if (!(field instanceof ResolvedJavaField) || !((ResolvedJavaType) field.getDeclaringClass()).isInitialized()) {
             handleUnresolvedStoreField(field, value, null);
             return;
@@ -3312,7 +3312,7 @@
 
     private void genSwitch(BytecodeSwitch bs) {
         int bci = bci();
-        ValueNode value = frameState.pop(Kind.Int);
+        ValueNode value = frameState.pop(JavaKind.Int);
 
         int nofCases = bs.numberOfCases();
         double[] keyProbabilities = switchProbability(nofCases + 1, bci);
@@ -3415,92 +3415,92 @@
         // Checkstyle: stop
         switch (opcode) {
             case NOP            : /* nothing to do */ break;
-            case ACONST_NULL    : frameState.push(Kind.Object, appendConstant(JavaConstant.NULL_POINTER)); break;
+            case ACONST_NULL    : frameState.push(JavaKind.Object, appendConstant(JavaConstant.NULL_POINTER)); break;
             case ICONST_M1      : // fall through
             case ICONST_0       : // fall through
             case ICONST_1       : // fall through
             case ICONST_2       : // fall through
             case ICONST_3       : // fall through
             case ICONST_4       : // fall through
-            case ICONST_5       : frameState.push(Kind.Int, appendConstant(JavaConstant.forInt(opcode - ICONST_0))); break;
+            case ICONST_5       : frameState.push(JavaKind.Int, appendConstant(JavaConstant.forInt(opcode - ICONST_0))); break;
             case LCONST_0       : // fall through
-            case LCONST_1       : frameState.push(Kind.Long, appendConstant(JavaConstant.forLong(opcode - LCONST_0))); break;
+            case LCONST_1       : frameState.push(JavaKind.Long, appendConstant(JavaConstant.forLong(opcode - LCONST_0))); break;
             case FCONST_0       : // fall through
             case FCONST_1       : // fall through
-            case FCONST_2       : frameState.push(Kind.Float, appendConstant(JavaConstant.forFloat(opcode - FCONST_0))); break;
+            case FCONST_2       : frameState.push(JavaKind.Float, appendConstant(JavaConstant.forFloat(opcode - FCONST_0))); break;
             case DCONST_0       : // fall through
-            case DCONST_1       : frameState.push(Kind.Double, appendConstant(JavaConstant.forDouble(opcode - DCONST_0))); break;
-            case BIPUSH         : frameState.push(Kind.Int, appendConstant(JavaConstant.forInt(stream.readByte()))); break;
-            case SIPUSH         : frameState.push(Kind.Int, appendConstant(JavaConstant.forInt(stream.readShort()))); break;
+            case DCONST_1       : frameState.push(JavaKind.Double, appendConstant(JavaConstant.forDouble(opcode - DCONST_0))); break;
+            case BIPUSH         : frameState.push(JavaKind.Int, appendConstant(JavaConstant.forInt(stream.readByte()))); break;
+            case SIPUSH         : frameState.push(JavaKind.Int, appendConstant(JavaConstant.forInt(stream.readShort()))); break;
             case LDC            : // fall through
             case LDC_W          : // fall through
             case LDC2_W         : genLoadConstant(stream.readCPI(), opcode); break;
-            case ILOAD          : loadLocal(stream.readLocalIndex(), Kind.Int); break;
-            case LLOAD          : loadLocal(stream.readLocalIndex(), Kind.Long); break;
-            case FLOAD          : loadLocal(stream.readLocalIndex(), Kind.Float); break;
-            case DLOAD          : loadLocal(stream.readLocalIndex(), Kind.Double); break;
-            case ALOAD          : loadLocal(stream.readLocalIndex(), Kind.Object); break;
+            case ILOAD          : loadLocal(stream.readLocalIndex(), JavaKind.Int); break;
+            case LLOAD          : loadLocal(stream.readLocalIndex(), JavaKind.Long); break;
+            case FLOAD          : loadLocal(stream.readLocalIndex(), JavaKind.Float); break;
+            case DLOAD          : loadLocal(stream.readLocalIndex(), JavaKind.Double); break;
+            case ALOAD          : loadLocal(stream.readLocalIndex(), JavaKind.Object); break;
             case ILOAD_0        : // fall through
             case ILOAD_1        : // fall through
             case ILOAD_2        : // fall through
-            case ILOAD_3        : loadLocal(opcode - ILOAD_0, Kind.Int); break;
+            case ILOAD_3        : loadLocal(opcode - ILOAD_0, JavaKind.Int); break;
             case LLOAD_0        : // fall through
             case LLOAD_1        : // fall through
             case LLOAD_2        : // fall through
-            case LLOAD_3        : loadLocal(opcode - LLOAD_0, Kind.Long); break;
+            case LLOAD_3        : loadLocal(opcode - LLOAD_0, JavaKind.Long); break;
             case FLOAD_0        : // fall through
             case FLOAD_1        : // fall through
             case FLOAD_2        : // fall through
-            case FLOAD_3        : loadLocal(opcode - FLOAD_0, Kind.Float); break;
+            case FLOAD_3        : loadLocal(opcode - FLOAD_0, JavaKind.Float); break;
             case DLOAD_0        : // fall through
             case DLOAD_1        : // fall through
             case DLOAD_2        : // fall through
-            case DLOAD_3        : loadLocal(opcode - DLOAD_0, Kind.Double); break;
+            case DLOAD_3        : loadLocal(opcode - DLOAD_0, JavaKind.Double); break;
             case ALOAD_0        : // fall through
             case ALOAD_1        : // fall through
             case ALOAD_2        : // fall through
-            case ALOAD_3        : loadLocal(opcode - ALOAD_0, Kind.Object); break;
-            case IALOAD         : genLoadIndexed(Kind.Int   ); break;
-            case LALOAD         : genLoadIndexed(Kind.Long  ); break;
-            case FALOAD         : genLoadIndexed(Kind.Float ); break;
-            case DALOAD         : genLoadIndexed(Kind.Double); break;
-            case AALOAD         : genLoadIndexed(Kind.Object); break;
-            case BALOAD         : genLoadIndexed(Kind.Byte  ); break;
-            case CALOAD         : genLoadIndexed(Kind.Char  ); break;
-            case SALOAD         : genLoadIndexed(Kind.Short ); break;
-            case ISTORE         : storeLocal(Kind.Int, stream.readLocalIndex()); break;
-            case LSTORE         : storeLocal(Kind.Long, stream.readLocalIndex()); break;
-            case FSTORE         : storeLocal(Kind.Float, stream.readLocalIndex()); break;
-            case DSTORE         : storeLocal(Kind.Double, stream.readLocalIndex()); break;
-            case ASTORE         : storeLocal(Kind.Object, stream.readLocalIndex()); break;
+            case ALOAD_3        : loadLocal(opcode - ALOAD_0, JavaKind.Object); break;
+            case IALOAD         : genLoadIndexed(JavaKind.Int   ); break;
+            case LALOAD         : genLoadIndexed(JavaKind.Long  ); break;
+            case FALOAD         : genLoadIndexed(JavaKind.Float ); break;
+            case DALOAD         : genLoadIndexed(JavaKind.Double); break;
+            case AALOAD         : genLoadIndexed(JavaKind.Object); break;
+            case BALOAD         : genLoadIndexed(JavaKind.Byte  ); break;
+            case CALOAD         : genLoadIndexed(JavaKind.Char  ); break;
+            case SALOAD         : genLoadIndexed(JavaKind.Short ); break;
+            case ISTORE         : storeLocal(JavaKind.Int, stream.readLocalIndex()); break;
+            case LSTORE         : storeLocal(JavaKind.Long, stream.readLocalIndex()); break;
+            case FSTORE         : storeLocal(JavaKind.Float, stream.readLocalIndex()); break;
+            case DSTORE         : storeLocal(JavaKind.Double, stream.readLocalIndex()); break;
+            case ASTORE         : storeLocal(JavaKind.Object, stream.readLocalIndex()); break;
             case ISTORE_0       : // fall through
             case ISTORE_1       : // fall through
             case ISTORE_2       : // fall through
-            case ISTORE_3       : storeLocal(Kind.Int, opcode - ISTORE_0); break;
+            case ISTORE_3       : storeLocal(JavaKind.Int, opcode - ISTORE_0); break;
             case LSTORE_0       : // fall through
             case LSTORE_1       : // fall through
             case LSTORE_2       : // fall through
-            case LSTORE_3       : storeLocal(Kind.Long, opcode - LSTORE_0); break;
+            case LSTORE_3       : storeLocal(JavaKind.Long, opcode - LSTORE_0); break;
             case FSTORE_0       : // fall through
             case FSTORE_1       : // fall through
             case FSTORE_2       : // fall through
-            case FSTORE_3       : storeLocal(Kind.Float, opcode - FSTORE_0); break;
+            case FSTORE_3       : storeLocal(JavaKind.Float, opcode - FSTORE_0); break;
             case DSTORE_0       : // fall through
             case DSTORE_1       : // fall through
             case DSTORE_2       : // fall through
-            case DSTORE_3       : storeLocal(Kind.Double, opcode - DSTORE_0); break;
+            case DSTORE_3       : storeLocal(JavaKind.Double, opcode - DSTORE_0); break;
             case ASTORE_0       : // fall through
             case ASTORE_1       : // fall through
             case ASTORE_2       : // fall through
-            case ASTORE_3       : storeLocal(Kind.Object, opcode - ASTORE_0); break;
-            case IASTORE        : genStoreIndexed(Kind.Int   ); break;
-            case LASTORE        : genStoreIndexed(Kind.Long  ); break;
-            case FASTORE        : genStoreIndexed(Kind.Float ); break;
-            case DASTORE        : genStoreIndexed(Kind.Double); break;
-            case AASTORE        : genStoreIndexed(Kind.Object); break;
-            case BASTORE        : genStoreIndexed(Kind.Byte  ); break;
-            case CASTORE        : genStoreIndexed(Kind.Char  ); break;
-            case SASTORE        : genStoreIndexed(Kind.Short ); break;
+            case ASTORE_3       : storeLocal(JavaKind.Object, opcode - ASTORE_0); break;
+            case IASTORE        : genStoreIndexed(JavaKind.Int   ); break;
+            case LASTORE        : genStoreIndexed(JavaKind.Long  ); break;
+            case FASTORE        : genStoreIndexed(JavaKind.Float ); break;
+            case DASTORE        : genStoreIndexed(JavaKind.Double); break;
+            case AASTORE        : genStoreIndexed(JavaKind.Object); break;
+            case BASTORE        : genStoreIndexed(JavaKind.Byte  ); break;
+            case CASTORE        : genStoreIndexed(JavaKind.Char  ); break;
+            case SASTORE        : genStoreIndexed(JavaKind.Short ); break;
             case POP            : // fall through
             case POP2           : // fall through
             case DUP            : // fall through
@@ -3512,86 +3512,86 @@
             case SWAP           : frameState.stackOp(opcode); break;
             case IADD           : // fall through
             case ISUB           : // fall through
-            case IMUL           : genArithmeticOp(Kind.Int, opcode); break;
+            case IMUL           : genArithmeticOp(JavaKind.Int, opcode); break;
             case IDIV           : // fall through
-            case IREM           : genIntegerDivOp(Kind.Int, opcode); break;
+            case IREM           : genIntegerDivOp(JavaKind.Int, opcode); break;
             case LADD           : // fall through
             case LSUB           : // fall through
-            case LMUL           : genArithmeticOp(Kind.Long, opcode); break;
+            case LMUL           : genArithmeticOp(JavaKind.Long, opcode); break;
             case LDIV           : // fall through
-            case LREM           : genIntegerDivOp(Kind.Long, opcode); break;
+            case LREM           : genIntegerDivOp(JavaKind.Long, opcode); break;
             case FADD           : // fall through
             case FSUB           : // fall through
             case FMUL           : // fall through
             case FDIV           : // fall through
-            case FREM           : genArithmeticOp(Kind.Float, opcode); break;
+            case FREM           : genArithmeticOp(JavaKind.Float, opcode); break;
             case DADD           : // fall through
             case DSUB           : // fall through
             case DMUL           : // fall through
             case DDIV           : // fall through
-            case DREM           : genArithmeticOp(Kind.Double, opcode); break;
-            case INEG           : genNegateOp(Kind.Int); break;
-            case LNEG           : genNegateOp(Kind.Long); break;
-            case FNEG           : genNegateOp(Kind.Float); break;
-            case DNEG           : genNegateOp(Kind.Double); break;
+            case DREM           : genArithmeticOp(JavaKind.Double, opcode); break;
+            case INEG           : genNegateOp(JavaKind.Int); break;
+            case LNEG           : genNegateOp(JavaKind.Long); break;
+            case FNEG           : genNegateOp(JavaKind.Float); break;
+            case DNEG           : genNegateOp(JavaKind.Double); break;
             case ISHL           : // fall through
             case ISHR           : // fall through
-            case IUSHR          : genShiftOp(Kind.Int, opcode); break;
+            case IUSHR          : genShiftOp(JavaKind.Int, opcode); break;
             case IAND           : // fall through
             case IOR            : // fall through
-            case IXOR           : genLogicOp(Kind.Int, opcode); break;
+            case IXOR           : genLogicOp(JavaKind.Int, opcode); break;
             case LSHL           : // fall through
             case LSHR           : // fall through
-            case LUSHR          : genShiftOp(Kind.Long, opcode); break;
+            case LUSHR          : genShiftOp(JavaKind.Long, opcode); break;
             case LAND           : // fall through
             case LOR            : // fall through
-            case LXOR           : genLogicOp(Kind.Long, opcode); break;
+            case LXOR           : genLogicOp(JavaKind.Long, opcode); break;
             case IINC           : genIncrement(); break;
-            case I2F            : genFloatConvert(FloatConvert.I2F, Kind.Int, Kind.Float); break;
-            case I2D            : genFloatConvert(FloatConvert.I2D, Kind.Int, Kind.Double); break;
-            case L2F            : genFloatConvert(FloatConvert.L2F, Kind.Long, Kind.Float); break;
-            case L2D            : genFloatConvert(FloatConvert.L2D, Kind.Long, Kind.Double); break;
-            case F2I            : genFloatConvert(FloatConvert.F2I, Kind.Float, Kind.Int); break;
-            case F2L            : genFloatConvert(FloatConvert.F2L, Kind.Float, Kind.Long); break;
-            case F2D            : genFloatConvert(FloatConvert.F2D, Kind.Float, Kind.Double); break;
-            case D2I            : genFloatConvert(FloatConvert.D2I, Kind.Double, Kind.Int); break;
-            case D2L            : genFloatConvert(FloatConvert.D2L, Kind.Double, Kind.Long); break;
-            case D2F            : genFloatConvert(FloatConvert.D2F, Kind.Double, Kind.Float); break;
-            case L2I            : genNarrow(Kind.Long, Kind.Int); break;
-            case I2L            : genSignExtend(Kind.Int, Kind.Long); break;
-            case I2B            : genSignExtend(Kind.Byte, Kind.Int); break;
-            case I2S            : genSignExtend(Kind.Short, Kind.Int); break;
-            case I2C            : genZeroExtend(Kind.Char, Kind.Int); break;
-            case LCMP           : genCompareOp(Kind.Long, false); break;
-            case FCMPL          : genCompareOp(Kind.Float, true); break;
-            case FCMPG          : genCompareOp(Kind.Float, false); break;
-            case DCMPL          : genCompareOp(Kind.Double, true); break;
-            case DCMPG          : genCompareOp(Kind.Double, false); break;
+            case I2F            : genFloatConvert(FloatConvert.I2F, JavaKind.Int, JavaKind.Float); break;
+            case I2D            : genFloatConvert(FloatConvert.I2D, JavaKind.Int, JavaKind.Double); break;
+            case L2F            : genFloatConvert(FloatConvert.L2F, JavaKind.Long, JavaKind.Float); break;
+            case L2D            : genFloatConvert(FloatConvert.L2D, JavaKind.Long, JavaKind.Double); break;
+            case F2I            : genFloatConvert(FloatConvert.F2I, JavaKind.Float, JavaKind.Int); break;
+            case F2L            : genFloatConvert(FloatConvert.F2L, JavaKind.Float, JavaKind.Long); break;
+            case F2D            : genFloatConvert(FloatConvert.F2D, JavaKind.Float, JavaKind.Double); break;
+            case D2I            : genFloatConvert(FloatConvert.D2I, JavaKind.Double, JavaKind.Int); break;
+            case D2L            : genFloatConvert(FloatConvert.D2L, JavaKind.Double, JavaKind.Long); break;
+            case D2F            : genFloatConvert(FloatConvert.D2F, JavaKind.Double, JavaKind.Float); break;
+            case L2I            : genNarrow(JavaKind.Long, JavaKind.Int); break;
+            case I2L            : genSignExtend(JavaKind.Int, JavaKind.Long); break;
+            case I2B            : genSignExtend(JavaKind.Byte, JavaKind.Int); break;
+            case I2S            : genSignExtend(JavaKind.Short, JavaKind.Int); break;
+            case I2C            : genZeroExtend(JavaKind.Char, JavaKind.Int); break;
+            case LCMP           : genCompareOp(JavaKind.Long, false); break;
+            case FCMPL          : genCompareOp(JavaKind.Float, true); break;
+            case FCMPG          : genCompareOp(JavaKind.Float, false); break;
+            case DCMPL          : genCompareOp(JavaKind.Double, true); break;
+            case DCMPG          : genCompareOp(JavaKind.Double, false); break;
             case IFEQ           : genIfZero(Condition.EQ); break;
             case IFNE           : genIfZero(Condition.NE); break;
             case IFLT           : genIfZero(Condition.LT); break;
             case IFGE           : genIfZero(Condition.GE); break;
             case IFGT           : genIfZero(Condition.GT); break;
             case IFLE           : genIfZero(Condition.LE); break;
-            case IF_ICMPEQ      : genIfSame(Kind.Int, Condition.EQ); break;
-            case IF_ICMPNE      : genIfSame(Kind.Int, Condition.NE); break;
-            case IF_ICMPLT      : genIfSame(Kind.Int, Condition.LT); break;
-            case IF_ICMPGE      : genIfSame(Kind.Int, Condition.GE); break;
-            case IF_ICMPGT      : genIfSame(Kind.Int, Condition.GT); break;
-            case IF_ICMPLE      : genIfSame(Kind.Int, Condition.LE); break;
-            case IF_ACMPEQ      : genIfSame(Kind.Object, Condition.EQ); break;
-            case IF_ACMPNE      : genIfSame(Kind.Object, Condition.NE); break;
+            case IF_ICMPEQ      : genIfSame(JavaKind.Int, Condition.EQ); break;
+            case IF_ICMPNE      : genIfSame(JavaKind.Int, Condition.NE); break;
+            case IF_ICMPLT      : genIfSame(JavaKind.Int, Condition.LT); break;
+            case IF_ICMPGE      : genIfSame(JavaKind.Int, Condition.GE); break;
+            case IF_ICMPGT      : genIfSame(JavaKind.Int, Condition.GT); break;
+            case IF_ICMPLE      : genIfSame(JavaKind.Int, Condition.LE); break;
+            case IF_ACMPEQ      : genIfSame(JavaKind.Object, Condition.EQ); break;
+            case IF_ACMPNE      : genIfSame(JavaKind.Object, Condition.NE); break;
             case GOTO           : genGoto(); break;
             case JSR            : genJsr(stream.readBranchDest()); break;
             case RET            : genRet(stream.readLocalIndex()); break;
             case TABLESWITCH    : genSwitch(new BytecodeTableSwitch(getStream(), bci())); break;
             case LOOKUPSWITCH   : genSwitch(new BytecodeLookupSwitch(getStream(), bci())); break;
-            case IRETURN        : genReturn(frameState.pop(Kind.Int), Kind.Int); break;
-            case LRETURN        : genReturn(frameState.pop(Kind.Long), Kind.Long); break;
-            case FRETURN        : genReturn(frameState.pop(Kind.Float), Kind.Float); break;
-            case DRETURN        : genReturn(frameState.pop(Kind.Double), Kind.Double); break;
-            case ARETURN        : genReturn(frameState.pop(Kind.Object), Kind.Object); break;
-            case RETURN         : genReturn(null, Kind.Void); break;
+            case IRETURN        : genReturn(frameState.pop(JavaKind.Int), JavaKind.Int); break;
+            case LRETURN        : genReturn(frameState.pop(JavaKind.Long), JavaKind.Long); break;
+            case FRETURN        : genReturn(frameState.pop(JavaKind.Float), JavaKind.Float); break;
+            case DRETURN        : genReturn(frameState.pop(JavaKind.Double), JavaKind.Double); break;
+            case ARETURN        : genReturn(frameState.pop(JavaKind.Object), JavaKind.Object); break;
+            case RETURN         : genReturn(null, JavaKind.Void); break;
             case GETSTATIC      : cpi = stream.readCPI(); genGetStatic(lookupField(cpi, opcode)); break;
             case PUTSTATIC      : cpi = stream.readCPI(); genPutStatic(lookupField(cpi, opcode)); break;
             case GETFIELD       : cpi = stream.readCPI(); genGetField(lookupField(cpi, opcode)); break;
@@ -3608,8 +3608,8 @@
             case ATHROW         : genThrow(); break;
             case CHECKCAST      : genCheckCast(); break;
             case INSTANCEOF     : genInstanceOf(); break;
-            case MONITORENTER   : genMonitorEnter(frameState.pop(Kind.Object), stream.nextBCI()); break;
-            case MONITOREXIT    : genMonitorExit(frameState.pop(Kind.Object), null, stream.nextBCI()); break;
+            case MONITORENTER   : genMonitorEnter(frameState.pop(JavaKind.Object), stream.nextBCI()); break;
+            case MONITOREXIT    : genMonitorExit(frameState.pop(JavaKind.Object), null, stream.nextBCI()); break;
             case MULTIANEWARRAY : genNewMultiArray(stream.readCPI()); break;
             case IFNULL         : genIfNull(Condition.EQ); break;
             case IFNONNULL      : genIfNull(Condition.NE); break;
@@ -3623,8 +3623,8 @@
     }
 
     private void genArrayLength() {
-        ValueNode array = emitExplicitExceptions(frameState.pop(Kind.Object), null);
-        frameState.push(Kind.Int, append(genArrayLength(array)));
+        ValueNode array = emitExplicitExceptions(frameState.pop(JavaKind.Object), null);
+        frameState.push(JavaKind.Int, append(genArrayLength(array)));
     }
 
     public ResolvedJavaMethod getMethod() {
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -110,7 +110,7 @@
         Signature sig = method.getSignature();
         int max = sig.getParameterCount(false);
         for (int i = 0; i < max; i++) {
-            Kind kind = sig.getParameterKind(i);
+            JavaKind kind = sig.getParameterKind(i);
             locals[javaIndex] = arguments[index];
             javaIndex++;
             if (kind.needsTwoSlots()) {
@@ -150,9 +150,9 @@
             if (eagerResolve) {
                 type = type.resolve(accessingClass);
             }
-            Kind kind = type.getKind();
+            JavaKind kind = type.getJavaKind();
             Stamp stamp;
-            if (kind == Kind.Object && type instanceof ResolvedJavaType) {
+            if (kind == JavaKind.Object && type instanceof ResolvedJavaType) {
                 stamp = StampFactory.declared((ResolvedJavaType) type);
             } else {
                 stamp = StampFactory.forKind(kind);
@@ -240,15 +240,15 @@
     }
 
     /**
-     * @param pushedValues if non-null, values to {@link #push(Kind, ValueNode)} to the stack before
-     *            creating the {@link FrameState}
+     * @param pushedValues if non-null, values to {@link #push(JavaKind, ValueNode)} to the stack
+     *            before creating the {@link FrameState}
      */
-    public FrameState create(int bci, BytecodeParser parent, boolean duringCall, Kind[] pushedSlotKinds, ValueNode[] pushedValues) {
+    public FrameState create(int bci, BytecodeParser parent, boolean duringCall, JavaKind[] pushedSlotKinds, ValueNode[] pushedValues) {
         if (outerFrameState == null && parent != null) {
             outerFrameState = parent.getFrameStateBuilder().create(parent.bci(), null);
         }
         if (bci == BytecodeFrame.AFTER_EXCEPTION_BCI && parent != null) {
-            FrameState newFrameState = outerFrameState.duplicateModified(outerFrameState.bci, true, Kind.Void, new Kind[]{Kind.Object}, new ValueNode[]{stack[0]});
+            FrameState newFrameState = outerFrameState.duplicateModified(outerFrameState.bci, true, JavaKind.Void, new JavaKind[]{JavaKind.Object}, new ValueNode[]{stack[0]});
             return newFrameState;
         }
         if (bci == BytecodeFrame.INVALID_FRAMESTATE_BCI) {
@@ -522,7 +522,7 @@
      * @param object the object whose monitor will be locked.
      */
     public void pushLock(ValueNode object, MonitorIdNode monitorId) {
-        assert object.isAlive() && object.getStackKind() == Kind.Object : "unexpected value: " + object;
+        assert object.isAlive() && object.getStackKind() == JavaKind.Object : "unexpected value: " + object;
         lockedObjects = Arrays.copyOf(lockedObjects, lockedObjects.length + 1);
         monitorIds = Arrays.copyOf(monitorIds, monitorIds.length + 1);
         lockedObjects[lockedObjects.length - 1] = object;
@@ -647,7 +647,7 @@
         return stackSize;
     }
 
-    private boolean verifyKind(Kind slotKind, ValueNode x) {
+    private boolean verifyKind(JavaKind slotKind, ValueNode x) {
         assert x != null;
         assert x != TWO_SLOT_MARKER;
         assert slotKind.getSlotCount() > 0;
@@ -666,7 +666,7 @@
      * @param slotKind the kind of the local variable from the point of view of the bytecodes
      * @return the instruction that produced the specified local
      */
-    public ValueNode loadLocal(int i, Kind slotKind) {
+    public ValueNode loadLocal(int i, JavaKind slotKind) {
         ValueNode x = locals[i];
         assert verifyKind(slotKind, x);
         assert slotKind.needsTwoSlots() ? locals[i + 1] == TWO_SLOT_MARKER : (i == locals.length - 1 || locals[i + 1] != TWO_SLOT_MARKER);
@@ -681,7 +681,7 @@
      * @param slotKind the kind of the local variable from the point of view of the bytecodes
      * @param x the instruction which produces the value for the local
      */
-    public void storeLocal(int i, Kind slotKind, ValueNode x) {
+    public void storeLocal(int i, JavaKind slotKind, ValueNode x) {
         assert verifyKind(slotKind, x);
 
         if (locals[i] == TWO_SLOT_MARKER) {
@@ -707,7 +707,7 @@
      * @param slotKind the kind of the stack element from the point of view of the bytecodes
      * @param x the instruction to push onto the stack
      */
-    public void push(Kind slotKind, ValueNode x) {
+    public void push(JavaKind slotKind, ValueNode x) {
         assert verifyKind(slotKind, x);
 
         xpush(x);
@@ -716,8 +716,8 @@
         }
     }
 
-    public void pushReturn(Kind slotKind, ValueNode x) {
-        if (slotKind != Kind.Void) {
+    public void pushReturn(JavaKind slotKind, ValueNode x) {
+        if (slotKind != JavaKind.Void) {
             push(slotKind, x);
         }
     }
@@ -728,7 +728,7 @@
      * @param slotKind the kind of the stack element from the point of view of the bytecodes
      * @return the instruction on the top of the stack
      */
-    public ValueNode pop(Kind slotKind) {
+    public ValueNode pop(JavaKind slotKind) {
         if (slotKind.needsTwoSlots()) {
             ValueNode s = xpop();
             assert s == TWO_SLOT_MARKER;
--- a/graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/JTTTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/JTTTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -68,7 +68,7 @@
             for (int i = 0; i < args.length; i++) {
                 ParameterNode param = graph.getParameter(i);
                 if (param != null) {
-                    JavaConstant c = getSnippetReflection().forBoxed(parameterTypes[i].getKind(), args[i]);
+                    JavaConstant c = getSnippetReflection().forBoxed(parameterTypes[i].getJavaKind(), args[i]);
                     ConstantNode replacement = ConstantNode.forConstant(c, getMetaAccess(), graph);
                     param.replaceAtUsages(replacement);
                 } else {
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Arithmetic.java	Tue Sep 08 19:57:39 2015 +0200
@@ -49,7 +49,7 @@
             super(TYPE);
             this.opcode = opcode;
             this.result = result;
-            this.raxTemp = AMD64.rax.asValue(LIRKind.value(Kind.Int));
+            this.raxTemp = AMD64.rax.asValue(LIRKind.value(JavaKind.Int));
             this.x = x;
             this.y = y;
         }
@@ -94,8 +94,8 @@
         @Override
         public void verify() {
             super.verify();
-            assert (opcode.name().startsWith("F") && result.getPlatformKind() == Kind.Float && x.getPlatformKind() == Kind.Float && y.getPlatformKind() == Kind.Float) ||
-                            (opcode.name().startsWith("D") && result.getPlatformKind() == Kind.Double && x.getPlatformKind() == Kind.Double && y.getPlatformKind() == Kind.Double);
+            assert (opcode.name().startsWith("F") && result.getPlatformKind() == JavaKind.Float && x.getPlatformKind() == JavaKind.Float && y.getPlatformKind() == JavaKind.Float) ||
+                            (opcode.name().startsWith("D") && result.getPlatformKind() == JavaKind.Double && x.getPlatformKind() == JavaKind.Double && y.getPlatformKind() == JavaKind.Double);
         }
     }
 }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ArrayEqualsOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ArrayEqualsOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -49,7 +49,7 @@
 public final class AMD64ArrayEqualsOp extends AMD64LIRInstruction {
     public static final LIRInstructionClass<AMD64ArrayEqualsOp> TYPE = LIRInstructionClass.create(AMD64ArrayEqualsOp.class);
 
-    private final Kind kind;
+    private final JavaKind kind;
     private final int arrayBaseOffset;
     private final int arrayIndexScale;
 
@@ -64,7 +64,7 @@
     @Temp({REG, ILLEGAL}) protected Value vectorTemp1;
     @Temp({REG, ILLEGAL}) protected Value vectorTemp2;
 
-    public AMD64ArrayEqualsOp(LIRGeneratorTool tool, Kind kind, Value result, Value array1, Value array2, Value length) {
+    public AMD64ArrayEqualsOp(LIRGeneratorTool tool, JavaKind kind, Value result, Value array1, Value array2, Value length) {
         super(TYPE);
         this.kind = kind;
 
@@ -85,8 +85,8 @@
 
         // We only need the vector temporaries if we generate SSE code.
         if (supportsSSE41(tool.target())) {
-            this.vectorTemp1 = tool.newVariable(LIRKind.value(Kind.Double));
-            this.vectorTemp2 = tool.newVariable(LIRKind.value(Kind.Double));
+            this.vectorTemp1 = tool.newVariable(LIRKind.value(JavaKind.Double));
+            this.vectorTemp2 = tool.newVariable(LIRKind.value(JavaKind.Double));
         } else {
             this.vectorTemp1 = Value.ILLEGAL;
             this.vectorTemp2 = Value.ILLEGAL;
@@ -154,8 +154,8 @@
     private void emitSSE41Compare(CompilationResultBuilder crb, AMD64MacroAssembler masm, Register result, Register array1, Register array2, Register length, Label trueLabel, Label falseLabel) {
         assert supportsSSE41(crb.target);
 
-        Register vector1 = asRegister(vectorTemp1, Kind.Double);
-        Register vector2 = asRegister(vectorTemp2, Kind.Double);
+        Register vector1 = asRegister(vectorTemp1, JavaKind.Double);
+        Register vector2 = asRegister(vectorTemp2, JavaKind.Double);
 
         Label loop = new Label();
         Label compareTail = new Label();
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Binary.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Binary.java	Tue Sep 08 19:57:39 2015 +0200
@@ -167,7 +167,7 @@
         private final int alignment;
 
         public DataOp(AMD64RMOp opcode, OperandSize size, AllocatableValue result, AllocatableValue x, JavaConstant y) {
-            this(opcode, size, result, x, y, y.getKind().getByteCount());
+            this(opcode, size, result, x, y, y.getJavaKind().getByteCount());
         }
 
         public DataOp(AMD64RMOp opcode, OperandSize size, AllocatableValue result, AllocatableValue x, JavaConstant y, int alignment) {
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ByteSwapOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ByteSwapOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -45,12 +45,12 @@
     @Override
     public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
         AMD64Move.move(crb, masm, result, input);
-        switch ((Kind) input.getPlatformKind()) {
+        switch ((JavaKind) input.getPlatformKind()) {
             case Int:
-                masm.bswapl(ValueUtil.asRegister(result, Kind.Int));
+                masm.bswapl(ValueUtil.asRegister(result, JavaKind.Int));
                 break;
             case Long:
-                masm.bswapq(ValueUtil.asRegister(result, Kind.Long));
+                masm.bswapq(ValueUtil.asRegister(result, JavaKind.Long));
         }
     }
 }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Call.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -159,7 +159,7 @@
              * The register allocator does not support virtual registers that are used at the call
              * site, so use a fixed register.
              */
-            callTemp = AMD64.rax.asValue(LIRKind.value(Kind.Long));
+            callTemp = AMD64.rax.asValue(LIRKind.value(JavaKind.Long));
             assert ValueUtil.differentRegisters(parameters, callTemp);
         }
 
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java	Tue Sep 08 19:57:39 2015 +0200
@@ -144,7 +144,7 @@
             this.scratch = scratch;
             assert keyConstants.length == keyTargets.length;
             assert keyConstants.length == strategy.keyProbabilities.length;
-            assert (scratch.getPlatformKind() == Kind.Illegal) == (key.getPlatformKind() == Kind.Int || key.getPlatformKind() == Kind.Long);
+            assert (scratch.getPlatformKind() == JavaKind.Illegal) == (key.getPlatformKind() == JavaKind.Int || key.getPlatformKind() == JavaKind.Long);
         }
 
         @Override
@@ -154,7 +154,7 @@
             BaseSwitchClosure closure = new BaseSwitchClosure(crb, masm, keyTargets, defaultTarget) {
                 @Override
                 protected void conditionalJump(int index, Condition condition, Label target) {
-                    switch (keyConstants[index].getKind()) {
+                    switch (keyConstants[index].getJavaKind()) {
                         case Int:
                             if (crb.codeCache.needsDataPatch(keyConstants[index])) {
                                 crb.recordInlineDataInCode(keyConstants[index]);
@@ -202,9 +202,9 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
-            Register indexReg = asRegister(index, Kind.Int);
-            Register idxScratchReg = asRegister(idxScratch, Kind.Int);
-            Register scratchReg = asRegister(scratch, Kind.Long);
+            Register indexReg = asRegister(index, JavaKind.Int);
+            Register idxScratchReg = asRegister(idxScratch, JavaKind.Int);
+            Register scratchReg = asRegister(scratch, JavaKind.Long);
 
             if (!indexReg.equals(idxScratchReg)) {
                 masm.movl(idxScratchReg, indexReg);
@@ -342,7 +342,7 @@
     private static void cmove(CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, ConditionFlag cond, Value other) {
         if (isRegister(other)) {
             assert !asRegister(other).equals(asRegister(result)) : "other already overwritten by previous move";
-            switch ((Kind) other.getPlatformKind()) {
+            switch ((JavaKind) other.getPlatformKind()) {
                 case Boolean:
                 case Byte:
                 case Short:
@@ -358,7 +358,7 @@
             }
         } else {
             AMD64Address addr = (AMD64Address) crb.asAddress(other);
-            switch ((Kind) other.getPlatformKind()) {
+            switch ((JavaKind) other.getPlatformKind()) {
                 case Boolean:
                 case Byte:
                 case Short:
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMap.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMap.java	Tue Sep 08 19:57:39 2015 +0200
@@ -118,19 +118,19 @@
      */
     StackSlot allocateRBPSpillSlot() {
         assert spillSize == initialSpillSize : "RBP spill slot must be the first allocated stack slots";
-        rbpSpillSlot = allocateSpillSlot(LIRKind.value(Kind.Long));
+        rbpSpillSlot = allocateSpillSlot(LIRKind.value(JavaKind.Long));
         assert asStackSlot(rbpSpillSlot).getRawOffset() == -16 : asStackSlot(rbpSpillSlot).getRawOffset();
         return rbpSpillSlot;
     }
 
     void freeRBPSpillSlot() {
-        int size = spillSlotSize(LIRKind.value(Kind.Long));
+        int size = spillSlotSize(LIRKind.value(JavaKind.Long));
         assert spillSize == NumUtil.roundUp(initialSpillSize + size, size) : "RBP spill slot can not be freed after allocation other stack slots";
         spillSize = initialSpillSize;
     }
 
     public StackSlot allocateDeoptimizationRescueSlot() {
-        assert spillSize == initialSpillSize || spillSize == initialSpillSize + spillSlotSize(LIRKind.value(Kind.Long)) : "Deoptimization rescue slot must be the first or second (if there is an RBP spill slot) stack slot";
-        return allocateSpillSlot(LIRKind.value(Kind.Long));
+        assert spillSize == initialSpillSize || spillSize == initialSpillSize + spillSlotSize(LIRKind.value(JavaKind.Long)) : "Deoptimization rescue slot must be the first or second (if there is an RBP spill slot) stack slot";
+        return allocateSpillSlot(LIRKind.value(JavaKind.Long));
     }
 }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64MathIntrinsicOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64MathIntrinsicOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -52,11 +52,11 @@
     @Override
     public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
         switch (opcode) {
-            case LOG:   masm.flog(asRegister(result, Kind.Double), asRegister(input, Kind.Double), false); break;
-            case LOG10: masm.flog(asRegister(result, Kind.Double), asRegister(input, Kind.Double), true); break;
-            case SIN:   masm.fsin(asRegister(result, Kind.Double), asRegister(input, Kind.Double)); break;
-            case COS:   masm.fcos(asRegister(result, Kind.Double), asRegister(input, Kind.Double)); break;
-            case TAN:   masm.ftan(asRegister(result, Kind.Double), asRegister(input, Kind.Double)); break;
+            case LOG:   masm.flog(asRegister(result, JavaKind.Double), asRegister(input, JavaKind.Double), false); break;
+            case LOG10: masm.flog(asRegister(result, JavaKind.Double), asRegister(input, JavaKind.Double), true); break;
+            case SIN:   masm.fsin(asRegister(result, JavaKind.Double), asRegister(input, JavaKind.Double)); break;
+            case COS:   masm.fcos(asRegister(result, JavaKind.Double), asRegister(input, JavaKind.Double)); break;
+            case TAN:   masm.ftan(asRegister(result, JavaKind.Double), asRegister(input, JavaKind.Double)); break;
             default:    throw JVMCIError.shouldNotReachHere();
         }
     }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java	Tue Sep 08 19:57:39 2015 +0200
@@ -48,13 +48,13 @@
     private abstract static class AbstractMoveOp extends AMD64LIRInstruction implements ValueMoveOp {
         public static final LIRInstructionClass<AbstractMoveOp> TYPE = LIRInstructionClass.create(AbstractMoveOp.class);
 
-        private Kind moveKind;
+        private JavaKind moveKind;
 
-        protected AbstractMoveOp(LIRInstructionClass<? extends AbstractMoveOp> c, Kind moveKind) {
+        protected AbstractMoveOp(LIRInstructionClass<? extends AbstractMoveOp> c, JavaKind moveKind) {
             super(c);
-            if (moveKind == Kind.Illegal) {
+            if (moveKind == JavaKind.Illegal) {
                 // unknown operand size, conservatively move the whole register
-                this.moveKind = Kind.Long;
+                this.moveKind = JavaKind.Long;
             } else {
                 this.moveKind = moveKind;
             }
@@ -73,7 +73,7 @@
         @Def({REG, HINT}) protected AllocatableValue result;
         @Use({REG, STACK}) protected AllocatableValue input;
 
-        public MoveToRegOp(Kind moveKind, AllocatableValue result, AllocatableValue input) {
+        public MoveToRegOp(JavaKind moveKind, AllocatableValue result, AllocatableValue input) {
             super(TYPE, moveKind);
             this.result = result;
             this.input = input;
@@ -97,7 +97,7 @@
         @Def({REG, STACK}) protected AllocatableValue result;
         @Use({REG, HINT}) protected AllocatableValue input;
 
-        public MoveFromRegOp(Kind moveKind, AllocatableValue result, AllocatableValue input) {
+        public MoveFromRegOp(JavaKind moveKind, AllocatableValue result, AllocatableValue input) {
             super(TYPE, moveKind);
             this.result = result;
             this.input = input;
@@ -185,12 +185,12 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
             // backup scratch register
-            move((Kind) backupSlot.getPlatformKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind()));
+            move((JavaKind) backupSlot.getPlatformKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind()));
             // move stack slot
-            move((Kind) getInput().getPlatformKind(), crb, masm, scratch.asValue(getInput().getLIRKind()), getInput());
-            move((Kind) getResult().getPlatformKind(), crb, masm, getResult(), scratch.asValue(getResult().getLIRKind()));
+            move((JavaKind) getInput().getPlatformKind(), crb, masm, scratch.asValue(getInput().getLIRKind()), getInput());
+            move((JavaKind) getResult().getPlatformKind(), crb, masm, getResult(), scratch.asValue(getResult().getLIRKind()));
             // restore scratch register
-            move((Kind) backupSlot.getPlatformKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot);
+            move((JavaKind) backupSlot.getPlatformKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot);
 
         }
     }
@@ -216,16 +216,16 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
             // backup scratch register
-            move((Kind) backupSlot.getPlatformKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind()));
+            move((JavaKind) backupSlot.getPlatformKind(), crb, masm, backupSlot, scratch.asValue(backupSlot.getLIRKind()));
             for (int i = 0; i < results.length; i++) {
                 Value input = inputs[i];
                 AllocatableValue result = results[i];
                 // move stack slot
-                move((Kind) input.getPlatformKind(), crb, masm, scratch.asValue(input.getLIRKind()), input);
-                move((Kind) result.getPlatformKind(), crb, masm, result, scratch.asValue(result.getLIRKind()));
+                move((JavaKind) input.getPlatformKind(), crb, masm, scratch.asValue(input.getLIRKind()), input);
+                move((JavaKind) result.getPlatformKind(), crb, masm, result, scratch.asValue(result.getLIRKind()));
             }
             // restore scratch register
-            move((Kind) backupSlot.getPlatformKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot);
+            move((JavaKind) backupSlot.getPlatformKind(), crb, masm, scratch.asValue(backupSlot.getLIRKind()), backupSlot);
 
         }
     }
@@ -276,7 +276,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
-            masm.leaq(asRegister(result, Kind.Long), address.toAddress());
+            masm.leaq(asRegister(result, JavaKind.Long), address.toAddress());
         }
     }
 
@@ -313,7 +313,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
-            masm.leaq(asRegister(result, Kind.Long), (AMD64Address) crb.asAddress(slot));
+            masm.leaq(asRegister(result, JavaKind.Long), (AMD64Address) crb.asAddress(slot));
         }
     }
 
@@ -364,14 +364,14 @@
     public static final class CompareAndSwapOp extends AMD64LIRInstruction {
         public static final LIRInstructionClass<CompareAndSwapOp> TYPE = LIRInstructionClass.create(CompareAndSwapOp.class);
 
-        private final Kind accessKind;
+        private final JavaKind accessKind;
 
         @Def protected AllocatableValue result;
         @Use({COMPOSITE}) protected AMD64AddressValue address;
         @Use protected AllocatableValue cmpValue;
         @Use protected AllocatableValue newValue;
 
-        public CompareAndSwapOp(Kind accessKind, AllocatableValue result, AMD64AddressValue address, AllocatableValue cmpValue, AllocatableValue newValue) {
+        public CompareAndSwapOp(JavaKind accessKind, AllocatableValue result, AMD64AddressValue address, AllocatableValue cmpValue, AllocatableValue newValue) {
             super(TYPE);
             this.accessKind = accessKind;
             this.result = result;
@@ -405,13 +405,13 @@
     public static final class AtomicReadAndAddOp extends AMD64LIRInstruction {
         public static final LIRInstructionClass<AtomicReadAndAddOp> TYPE = LIRInstructionClass.create(AtomicReadAndAddOp.class);
 
-        private final Kind accessKind;
+        private final JavaKind accessKind;
 
         @Def protected AllocatableValue result;
         @Alive({COMPOSITE}) protected AMD64AddressValue address;
         @Use protected AllocatableValue delta;
 
-        public AtomicReadAndAddOp(Kind accessKind, AllocatableValue result, AMD64AddressValue address, AllocatableValue delta) {
+        public AtomicReadAndAddOp(JavaKind accessKind, AllocatableValue result, AMD64AddressValue address, AllocatableValue delta) {
             super(TYPE);
             this.accessKind = accessKind;
             this.result = result;
@@ -442,13 +442,13 @@
     public static final class AtomicReadAndWriteOp extends AMD64LIRInstruction {
         public static final LIRInstructionClass<AtomicReadAndWriteOp> TYPE = LIRInstructionClass.create(AtomicReadAndWriteOp.class);
 
-        private final Kind accessKind;
+        private final JavaKind accessKind;
 
         @Def protected AllocatableValue result;
         @Alive({COMPOSITE}) protected AMD64AddressValue address;
         @Use protected AllocatableValue newValue;
 
-        public AtomicReadAndWriteOp(Kind accessKind, AllocatableValue result, AMD64AddressValue address, AllocatableValue newValue) {
+        public AtomicReadAndWriteOp(JavaKind accessKind, AllocatableValue result, AMD64AddressValue address, AllocatableValue newValue) {
             super(TYPE);
             this.accessKind = accessKind;
             this.result = result;
@@ -474,10 +474,10 @@
     }
 
     public static void move(CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) {
-        move((Kind) result.getPlatformKind(), crb, masm, result, input);
+        move((JavaKind) result.getPlatformKind(), crb, masm, result, input);
     }
 
-    public static void move(Kind moveKind, CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) {
+    public static void move(JavaKind moveKind, CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) {
         if (isRegister(input)) {
             if (isRegister(result)) {
                 reg2reg(moveKind, masm, result, input);
@@ -505,7 +505,7 @@
         }
     }
 
-    private static void reg2reg(Kind kind, AMD64MacroAssembler masm, Value result, Value input) {
+    private static void reg2reg(JavaKind kind, AMD64MacroAssembler masm, Value result, Value input) {
         if (asRegister(input).equals(asRegister(result))) {
             return;
         }
@@ -517,10 +517,10 @@
                 masm.movq(asRegister(result), asRegister(input));
                 break;
             case Float:
-                masm.movflt(asRegister(result, Kind.Float), asRegister(input, Kind.Float));
+                masm.movflt(asRegister(result, JavaKind.Float), asRegister(input, JavaKind.Float));
                 break;
             case Double:
-                masm.movdbl(asRegister(result, Kind.Double), asRegister(input, Kind.Double));
+                masm.movdbl(asRegister(result, JavaKind.Double), asRegister(input, JavaKind.Double));
                 break;
             case Object:
                 masm.movq(asRegister(result), asRegister(input));
@@ -530,7 +530,7 @@
         }
     }
 
-    private static void reg2stack(Kind kind, CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) {
+    private static void reg2stack(JavaKind kind, CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) {
         AMD64Address dest = (AMD64Address) crb.asAddress(result);
         switch (kind) {
             case Boolean:
@@ -548,10 +548,10 @@
                 masm.movq(dest, asRegister(input));
                 break;
             case Float:
-                masm.movflt(dest, asRegister(input, Kind.Float));
+                masm.movflt(dest, asRegister(input, JavaKind.Float));
                 break;
             case Double:
-                masm.movsd(dest, asRegister(input, Kind.Double));
+                masm.movsd(dest, asRegister(input, JavaKind.Double));
                 break;
             case Object:
                 masm.movq(dest, asRegister(input));
@@ -561,7 +561,7 @@
         }
     }
 
-    private static void stack2reg(Kind kind, CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) {
+    private static void stack2reg(JavaKind kind, CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) {
         AMD64Address src = (AMD64Address) crb.asAddress(input);
         switch (kind) {
             case Boolean:
@@ -583,10 +583,10 @@
                 masm.movq(asRegister(result), src);
                 break;
             case Float:
-                masm.movflt(asRegister(result, Kind.Float), src);
+                masm.movflt(asRegister(result, JavaKind.Float), src);
                 break;
             case Double:
-                masm.movdbl(asRegister(result, Kind.Double), src);
+                masm.movdbl(asRegister(result, JavaKind.Double), src);
                 break;
             case Object:
                 masm.movq(asRegister(result), src);
@@ -603,7 +603,7 @@
          * long register when unsafe casts occurred (e.g., for a write barrier where arithmetic
          * operations are then performed on the pointer).
          */
-        switch (input.getKind().getStackKind()) {
+        switch (input.getJavaKind().getStackKind()) {
             case Int:
                 if (crb.codeCache.needsDataPatch(input)) {
                     crb.recordInlineDataInCode(input);
@@ -641,18 +641,18 @@
                 // This is *not* the same as 'constant == 0.0f' in the case where constant is -0.0f
                 if (Float.floatToRawIntBits(input.asFloat()) == Float.floatToRawIntBits(0.0f)) {
                     assert !crb.codeCache.needsDataPatch(input);
-                    masm.xorps(asRegister(result, Kind.Float), asRegister(result, Kind.Float));
+                    masm.xorps(asRegister(result, JavaKind.Float), asRegister(result, JavaKind.Float));
                 } else {
-                    masm.movflt(asRegister(result, Kind.Float), (AMD64Address) crb.asFloatConstRef(input));
+                    masm.movflt(asRegister(result, JavaKind.Float), (AMD64Address) crb.asFloatConstRef(input));
                 }
                 break;
             case Double:
                 // This is *not* the same as 'constant == 0.0d' in the case where constant is -0.0d
                 if (Double.doubleToRawLongBits(input.asDouble()) == Double.doubleToRawLongBits(0.0d)) {
                     assert !crb.codeCache.needsDataPatch(input);
-                    masm.xorpd(asRegister(result, Kind.Double), asRegister(result, Kind.Double));
+                    masm.xorpd(asRegister(result, JavaKind.Double), asRegister(result, JavaKind.Double));
                 } else {
-                    masm.movdbl(asRegister(result, Kind.Double), (AMD64Address) crb.asDoubleConstRef(input));
+                    masm.movdbl(asRegister(result, JavaKind.Double), (AMD64Address) crb.asDoubleConstRef(input));
                 }
                 break;
             case Object:
@@ -677,7 +677,7 @@
         assert !crb.codeCache.needsDataPatch(input);
         AMD64Address dest = (AMD64Address) crb.asAddress(result);
         final long imm;
-        switch (input.getKind().getStackKind()) {
+        switch (input.getJavaKind().getStackKind()) {
             case Int:
                 imm = input.asInt();
                 break;
@@ -700,7 +700,7 @@
             default:
                 throw JVMCIError.shouldNotReachHere();
         }
-        switch ((Kind) result.getPlatformKind()) {
+        switch ((JavaKind) result.getPlatformKind()) {
             case Byte:
                 assert NumUtil.isByte(imm) : "Is not in byte range: " + imm;
                 AMD64MIOp.MOVB.emit(masm, OperandSize.BYTE, dest, (int) imm);
--- a/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/ConstantStackCastTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/ConstantStackCastTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -66,7 +66,7 @@
 
         private static ConstantValue getConstant(LIRKind srcKind, JavaConstant c) {
 
-            switch ((Kind) srcKind.getPlatformKind()) {
+            switch ((JavaKind) srcKind.getPlatformKind()) {
                 case Byte:
                     JavaConstant byteConst = JavaConstant.forByte((byte) c.asInt());
                     return new ConstantValue(srcKind, byteConst);
@@ -76,7 +76,7 @@
         }
     }
 
-    private static final LoadConstantStackSpec stackCopyByte = new LoadConstantStackSpec(LIRKind.value(Kind.Int), LIRKind.value(Kind.Byte));
+    private static final LoadConstantStackSpec stackCopyByte = new LoadConstantStackSpec(LIRKind.value(JavaKind.Int), LIRKind.value(JavaKind.Byte));
 
     @LIRIntrinsic
     public static byte testCopyByte(@SuppressWarnings("unused") LoadConstantStackSpec spec, byte value) {
--- a/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/LIRTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/LIRTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -55,7 +55,7 @@
         @Input protected NodeInputList<ValueNode> values;
         public final SnippetReflectionProvider snippetReflection;
 
-        public LIRTestNode(SnippetReflectionProvider snippetReflection, Kind kind, ValueNode opsNode, ValueNode[] values) {
+        public LIRTestNode(SnippetReflectionProvider snippetReflection, JavaKind kind, ValueNode opsNode, ValueNode[] values) {
             super(TYPE, StampFactory.forKind(kind));
             this.opsNode = opsNode;
             this.values = new NodeInputList<>(this, values);
@@ -94,7 +94,7 @@
         @Input protected ValueNode name;
         public final SnippetReflectionProvider snippetReflection;
 
-        public LIRValueNode(SnippetReflectionProvider snippetReflection, Kind kind, ValueNode opsNode, ValueNode name) {
+        public LIRValueNode(SnippetReflectionProvider snippetReflection, JavaKind kind, ValueNode opsNode, ValueNode name) {
             super(TYPE, StampFactory.forKind(kind));
             this.opsNode = opsNode;
             this.name = name;
@@ -126,31 +126,31 @@
 
     private InvocationPlugin lirTestPlugin = new InvocationPlugin() {
         public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode spec) {
-            Kind returnKind = targetMethod.getSignature().getReturnKind();
+            JavaKind returnKind = targetMethod.getSignature().getReturnKind();
             b.addPush(returnKind, new LIRTestNode(getSnippetReflection(), returnKind, spec, new ValueNode[]{}));
             return true;
         }
 
         public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode spec, ValueNode arg0) {
-            Kind returnKind = targetMethod.getSignature().getReturnKind();
+            JavaKind returnKind = targetMethod.getSignature().getReturnKind();
             b.addPush(returnKind, new LIRTestNode(getSnippetReflection(), returnKind, spec, new ValueNode[]{arg0}));
             return true;
         }
 
         public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode spec, ValueNode arg0, ValueNode arg1) {
-            Kind returnKind = targetMethod.getSignature().getReturnKind();
+            JavaKind returnKind = targetMethod.getSignature().getReturnKind();
             b.addPush(returnKind, new LIRTestNode(getSnippetReflection(), returnKind, spec, new ValueNode[]{arg0, arg1}));
             return true;
         }
 
         public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode spec, ValueNode arg0, ValueNode arg1, ValueNode arg2) {
-            Kind returnKind = targetMethod.getSignature().getReturnKind();
+            JavaKind returnKind = targetMethod.getSignature().getReturnKind();
             b.addPush(returnKind, new LIRTestNode(getSnippetReflection(), returnKind, spec, new ValueNode[]{arg0, arg1, arg2}));
             return true;
         }
 
         public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode spec, ValueNode arg0, ValueNode arg1, ValueNode arg2, ValueNode arg3) {
-            Kind returnKind = targetMethod.getSignature().getReturnKind();
+            JavaKind returnKind = targetMethod.getSignature().getReturnKind();
             b.addPush(returnKind, new LIRTestNode(getSnippetReflection(), returnKind, spec, new ValueNode[]{arg0, arg1, arg2, arg3}));
             return true;
         }
@@ -174,7 +174,7 @@
         }
         InvocationPlugin outputPlugin = new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode spec, ValueNode name, ValueNode expected) {
-                Kind returnKind = targetMethod.getSignature().getReturnKind();
+                JavaKind returnKind = targetMethod.getSignature().getReturnKind();
                 b.addPush(returnKind, new LIRValueNode(getSnippetReflection(), returnKind, spec, name));
                 return true;
             }
--- a/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/StackMoveTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.jtt/src/com/oracle/graal/lir/jtt/StackMoveTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -182,7 +182,7 @@
     private static final LIRTestSpecification shortStackCopy = new StackCopySpec() {
         @Override
         protected LIRKind getLIRKind(Value value) {
-            return LIRKind.value(Kind.Short);
+            return LIRKind.value(JavaKind.Short);
         }
     };
 
@@ -216,7 +216,7 @@
     private static final LIRTestSpecification byteStackCopy = new StackCopySpec() {
         @Override
         protected LIRKind getLIRKind(Value value) {
-            return LIRKind.value(Kind.Byte);
+            return LIRKind.value(JavaKind.Byte);
         }
     };
 
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java	Tue Sep 08 19:57:39 2015 +0200
@@ -186,7 +186,7 @@
         @Override
         public void verify() {
             super.verify();
-            verifyKind(opcode, result.getPlatformKind(), x.getPlatformKind(), y.getKind());
+            verifyKind(opcode, result.getPlatformKind(), x.getPlatformKind(), y.getJavaKind());
         }
     }
 
@@ -253,21 +253,21 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
             Label noOverflow = new Label();
-            masm.mulx(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(result, Kind.Long));
+            masm.mulx(asRegister(x, JavaKind.Long), asRegister(y, JavaKind.Long), asRegister(result, JavaKind.Long));
 
             // Calculate the upper 64 bit signed := (umulxhi product - (x{63}&y + y{63}&x))
-            masm.umulxhi(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(scratch1, Kind.Long));
-            masm.srax(asRegister(x, Kind.Long), 63, asRegister(scratch2, Kind.Long));
-            masm.and(asRegister(scratch2, Kind.Long), asRegister(y, Kind.Long), asRegister(scratch2, Kind.Long));
-            masm.sub(asRegister(scratch1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(scratch1, Kind.Long));
+            masm.umulxhi(asRegister(x, JavaKind.Long), asRegister(y, JavaKind.Long), asRegister(scratch1, JavaKind.Long));
+            masm.srax(asRegister(x, JavaKind.Long), 63, asRegister(scratch2, JavaKind.Long));
+            masm.and(asRegister(scratch2, JavaKind.Long), asRegister(y, JavaKind.Long), asRegister(scratch2, JavaKind.Long));
+            masm.sub(asRegister(scratch1, JavaKind.Long), asRegister(scratch2, JavaKind.Long), asRegister(scratch1, JavaKind.Long));
 
-            masm.srax(asRegister(y, Kind.Long), 63, asRegister(scratch2, Kind.Long));
-            masm.and(asRegister(scratch2, Kind.Long), asRegister(x, Kind.Long), asRegister(scratch2, Kind.Long));
-            masm.sub(asRegister(scratch1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(scratch1, Kind.Long));
+            masm.srax(asRegister(y, JavaKind.Long), 63, asRegister(scratch2, JavaKind.Long));
+            masm.and(asRegister(scratch2, JavaKind.Long), asRegister(x, JavaKind.Long), asRegister(scratch2, JavaKind.Long));
+            masm.sub(asRegister(scratch1, JavaKind.Long), asRegister(scratch2, JavaKind.Long), asRegister(scratch1, JavaKind.Long));
 
             // Now construct the lower half and compare
-            masm.srax(asRegister(result, Kind.Long), 63, asRegister(scratch2, Kind.Long));
-            masm.cmp(asRegister(scratch1, Kind.Long), asRegister(scratch2, Kind.Long));
+            masm.srax(asRegister(result, JavaKind.Long), 63, asRegister(scratch2, JavaKind.Long));
+            masm.cmp(asRegister(scratch1, JavaKind.Long), asRegister(scratch2, JavaKind.Long));
             masm.bpcc(Equal, NOT_ANNUL, noOverflow, Xcc, PREDICT_TAKEN);
             masm.nop();
             masm.wrccr(g0, 1 << (CCR_XCC_SHIFT + CCR_V_SHIFT));
@@ -283,88 +283,88 @@
         delaySlotLir.emitControlTransfer(crb, masm);
         switch (opcode) {
             case IADD:
-                masm.add(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.add(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IADDCC:
-                masm.addcc(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.addcc(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case ISUB:
-                masm.sub(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.sub(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case ISUBCC:
-                masm.subcc(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.subcc(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IMUL:
-                masm.mulx(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.mulx(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IMULCC:
                 throw JVMCIError.unimplemented();
             case IDIV:
                 masm.sra(asRegister(src1), 0, asRegister(src1));
-                masm.sdivx(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.sdivx(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IUDIV:
                 masm.srl(asRegister(src1), 0, asRegister(src1));
-                masm.udivx(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.udivx(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IAND:
-                masm.and(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.and(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case ISHL:
-                masm.sll(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.sll(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case ISHR:
-                masm.sra(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.sra(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IUSHR:
-                masm.srl(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.srl(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IOR:
-                masm.or(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.or(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case IXOR:
-                masm.xor(asRegister(src1, Kind.Int), constant, asRegister(dst, Kind.Int));
+                masm.xor(asRegister(src1, JavaKind.Int), constant, asRegister(dst, JavaKind.Int));
                 break;
             case LADD:
-                masm.add(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.add(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LADDCC:
-                masm.addcc(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.addcc(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LSUB:
-                masm.sub(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.sub(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LSUBCC:
-                masm.subcc(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.subcc(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LMUL:
-                masm.mulx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.mulx(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LDIV:
                 exceptionOffset = masm.position();
-                masm.sdivx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.sdivx(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LUDIV:
                 exceptionOffset = masm.position();
-                masm.udivx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.udivx(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LAND:
-                masm.and(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.and(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LOR:
-                masm.or(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.or(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LXOR:
-                masm.xor(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.xor(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LSHL:
-                masm.sllx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.sllx(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LSHR:
-                masm.srax(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.srax(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case LUSHR:
-                masm.srlx(asRegister(src1, Kind.Long), constant, asRegister(dst, Kind.Long));
+                masm.srlx(asRegister(src1, JavaKind.Long), constant, asRegister(dst, JavaKind.Long));
                 break;
             case DAND: // Has no constant implementation in SPARC
             case FADD:
@@ -390,30 +390,30 @@
         switch (opcode) {
             case IADD:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.add(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.add(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IADDCC:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.addcc(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.addcc(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case ISUB:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sub(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.sub(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case ISUBCC:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.subcc(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.subcc(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IMUL:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.mulx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.mulx(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IMULCC:
                 try (ScratchRegister tmpScratch = masm.getScratchRegister()) {
                     Register tmp = tmpScratch.getRegister();
-                    masm.mulx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                    masm.mulx(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                     Label noOverflow = new Label();
-                    masm.sra(asRegister(dst, Kind.Int), 0, tmp);
+                    masm.sra(asRegister(dst, JavaKind.Int), 0, tmp);
                     masm.xorcc(SPARC.g0, SPARC.g0, SPARC.g0);
                     masm.compareBranch(tmp, asRegister(dst), Equal, Xcc, noOverflow, PREDICT_TAKEN, null);
                     masm.wrccr(SPARC.g0, 1 << (SPARCAssembler.CCR_ICC_SHIFT + SPARCAssembler.CCR_V_SHIFT));
@@ -421,146 +421,146 @@
                 }
                 break;
             case IDIV:
-                masm.signx(asRegister(src1, Kind.Int), asRegister(src1, Kind.Int));
-                masm.signx(asRegister(src2, Kind.Int), asRegister(src2, Kind.Int));
+                masm.signx(asRegister(src1, JavaKind.Int), asRegister(src1, JavaKind.Int));
+                masm.signx(asRegister(src2, JavaKind.Int), asRegister(src2, JavaKind.Int));
                 delaySlotLir.emitControlTransfer(crb, masm);
                 exceptionOffset = masm.position();
-                masm.sdivx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.sdivx(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IUDIV:
-                masm.srl(asRegister(src1, Kind.Int), 0, asRegister(src1, Kind.Int));
-                masm.srl(asRegister(src2, Kind.Int), 0, asRegister(src2, Kind.Int));
+                masm.srl(asRegister(src1, JavaKind.Int), 0, asRegister(src1, JavaKind.Int));
+                masm.srl(asRegister(src2, JavaKind.Int), 0, asRegister(src2, JavaKind.Int));
                 delaySlotLir.emitControlTransfer(crb, masm);
                 exceptionOffset = masm.position();
-                masm.udivx(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.udivx(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IAND:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.and(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.and(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IOR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.or(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.or(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IXOR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.xor(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.xor(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case ISHL:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sll(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.sll(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case ISHR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sra(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.sra(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IUSHR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.srl(asRegister(src1, Kind.Int), asRegister(src2, Kind.Int), asRegister(dst, Kind.Int));
+                masm.srl(asRegister(src1, JavaKind.Int), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case IREM:
                 throw JVMCIError.unimplemented();
             case LADD:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.add(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.add(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LADDCC:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.addcc(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.addcc(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LSUB:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sub(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.sub(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LSUBCC:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.subcc(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.subcc(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LMUL:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.mulx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.mulx(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LMULCC:
                 throw JVMCIError.unimplemented();
             case LDIV:
                 delaySlotLir.emitControlTransfer(crb, masm);
                 exceptionOffset = masm.position();
-                masm.sdivx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.sdivx(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LUDIV:
                 delaySlotLir.emitControlTransfer(crb, masm);
                 exceptionOffset = masm.position();
-                masm.udivx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.udivx(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LAND:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.and(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.and(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LOR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.or(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.or(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LXOR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.xor(asRegister(src1, Kind.Long), asRegister(src2, Kind.Long), asRegister(dst, Kind.Long));
+                masm.xor(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case LSHL:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sllx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Int), asRegister(dst, Kind.Long));
+                masm.sllx(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Long));
                 break;
             case LSHR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.srax(asRegister(src1, Kind.Long), asRegister(src2, Kind.Int), asRegister(dst, Kind.Long));
+                masm.srax(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Long));
                 break;
             case LUSHR:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.srlx(asRegister(src1, Kind.Long), asRegister(src2, Kind.Int), asRegister(dst, Kind.Long));
+                masm.srlx(asRegister(src1, JavaKind.Long), asRegister(src2, JavaKind.Int), asRegister(dst, JavaKind.Long));
                 break;
             case FADD:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fadds(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float));
+                masm.fadds(asRegister(src1, JavaKind.Float), asRegister(src2, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 break;
             case FSUB:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fsubs(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float));
+                masm.fsubs(asRegister(src1, JavaKind.Float), asRegister(src2, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 break;
             case FMUL:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                if (dst.getPlatformKind() == Kind.Double) {
-                    masm.fsmuld(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Double));
-                } else if (dst.getPlatformKind() == Kind.Float) {
-                    masm.fmuls(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float));
+                if (dst.getPlatformKind() == JavaKind.Double) {
+                    masm.fsmuld(asRegister(src1, JavaKind.Float), asRegister(src2, JavaKind.Float), asRegister(dst, JavaKind.Double));
+                } else if (dst.getPlatformKind() == JavaKind.Float) {
+                    masm.fmuls(asRegister(src1, JavaKind.Float), asRegister(src2, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 }
                 break;
             case FDIV:
                 delaySlotLir.emitControlTransfer(crb, masm);
                 exceptionOffset = masm.position();
-                masm.fdivs(asRegister(src1, Kind.Float), asRegister(src2, Kind.Float), asRegister(dst, Kind.Float));
+                masm.fdivs(asRegister(src1, JavaKind.Float), asRegister(src2, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 break;
             case FREM:
                 throw JVMCIError.unimplemented();
             case DADD:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.faddd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double));
+                masm.faddd(asRegister(src1, JavaKind.Double), asRegister(src2, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 break;
             case DSUB:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fsubd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fsubd(asRegister(src1, JavaKind.Double), asRegister(src2, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 break;
             case DMUL:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fmuld(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fmuld(asRegister(src1, JavaKind.Double), asRegister(src2, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 break;
             case DDIV:
                 delaySlotLir.emitControlTransfer(crb, masm);
                 exceptionOffset = masm.position();
-                masm.fdivd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fdivd(asRegister(src1, JavaKind.Double), asRegister(src2, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 break;
             case DREM:
                 throw JVMCIError.unimplemented();
             case DAND:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fandd(asRegister(src1, Kind.Double), asRegister(src2, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fandd(asRegister(src1, JavaKind.Double), asRegister(src2, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 break;
             default:
                 throw JVMCIError.shouldNotReachHere();
@@ -581,26 +581,26 @@
             assert !src2.equals(scratch1);
             switch (opcode) {
                 case IREM:
-                    masm.sra(asRegister(src1, Kind.Int), 0, asRegister(dst, Kind.Int));
+                    masm.sra(asRegister(src1, JavaKind.Int), 0, asRegister(dst, JavaKind.Int));
                     exceptionOffset = masm.position();
-                    masm.sdivx(asRegister(dst, Kind.Int), crb.asIntConst(src2), asRegister(scratch1, Kind.Int));
-                    masm.mulx(asRegister(scratch1, Kind.Int), crb.asIntConst(src2), asRegister(scratch2, Kind.Int));
+                    masm.sdivx(asRegister(dst, JavaKind.Int), crb.asIntConst(src2), asRegister(scratch1, JavaKind.Int));
+                    masm.mulx(asRegister(scratch1, JavaKind.Int), crb.asIntConst(src2), asRegister(scratch2, JavaKind.Int));
                     delaySlotLir.emitControlTransfer(crb, masm);
-                    masm.sub(asRegister(dst, Kind.Int), asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int));
+                    masm.sub(asRegister(dst, JavaKind.Int), asRegister(scratch2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                     break;
                 case LREM:
                     exceptionOffset = masm.position();
-                    masm.sdivx(asRegister(src1, Kind.Long), crb.asIntConst(src2), asRegister(scratch1, Kind.Long));
-                    masm.mulx(asRegister(scratch1, Kind.Long), crb.asIntConst(src2), asRegister(scratch2, Kind.Long));
+                    masm.sdivx(asRegister(src1, JavaKind.Long), crb.asIntConst(src2), asRegister(scratch1, JavaKind.Long));
+                    masm.mulx(asRegister(scratch1, JavaKind.Long), crb.asIntConst(src2), asRegister(scratch2, JavaKind.Long));
                     delaySlotLir.emitControlTransfer(crb, masm);
-                    masm.sub(asRegister(src1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(dst, Kind.Long));
+                    masm.sub(asRegister(src1, JavaKind.Long), asRegister(scratch2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                     break;
                 case LUREM:
                     exceptionOffset = masm.position();
-                    masm.udivx(asRegister(src1, Kind.Long), crb.asIntConst(src2), asRegister(scratch1, Kind.Long));
-                    masm.mulx(asRegister(scratch1, Kind.Long), crb.asIntConst(src2), asRegister(scratch2, Kind.Long));
+                    masm.udivx(asRegister(src1, JavaKind.Long), crb.asIntConst(src2), asRegister(scratch1, JavaKind.Long));
+                    masm.mulx(asRegister(scratch1, JavaKind.Long), crb.asIntConst(src2), asRegister(scratch2, JavaKind.Long));
                     delaySlotLir.emitControlTransfer(crb, masm);
-                    masm.sub(asRegister(src1, Kind.Long), asRegister(scratch2, Kind.Long), asRegister(dst, Kind.Long));
+                    masm.sub(asRegister(src1, JavaKind.Long), asRegister(scratch2, JavaKind.Long), asRegister(dst, JavaKind.Long));
                     break;
                 case IUREM:
                     JVMCIError.unimplemented();
@@ -613,56 +613,56 @@
             switch (opcode) {
                 case LREM:
                     if (isJavaConstant(src1)) {
-                        new Setx(crb.asLongConst(src1), asRegister(scratch2, Kind.Long), false).emit(masm);
+                        new Setx(crb.asLongConst(src1), asRegister(scratch2, JavaKind.Long), false).emit(masm);
                         srcLeft = scratch2;
                     }
-                    assert !asRegister(srcLeft, Kind.Long).equals(asRegister(scratch1, Kind.Long));
-                    assert !asRegister(src2, Kind.Long).equals(asRegister(scratch1, Kind.Long));
+                    assert !asRegister(srcLeft, JavaKind.Long).equals(asRegister(scratch1, JavaKind.Long));
+                    assert !asRegister(src2, JavaKind.Long).equals(asRegister(scratch1, JavaKind.Long));
                     // But src2 can be scratch2
                     exceptionOffset = masm.position();
-                    masm.sdivx(asRegister(srcLeft, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long));
-                    masm.mulx(asRegister(scratch1, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long));
+                    masm.sdivx(asRegister(srcLeft, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(scratch1, JavaKind.Long));
+                    masm.mulx(asRegister(scratch1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(scratch1, JavaKind.Long));
                     delaySlotLir.emitControlTransfer(crb, masm);
-                    masm.sub(asRegister(srcLeft, Kind.Long), asRegister(scratch1, Kind.Long), asRegister(dst, Kind.Long));
+                    masm.sub(asRegister(srcLeft, JavaKind.Long), asRegister(scratch1, JavaKind.Long), asRegister(dst, JavaKind.Long));
                     break;
                 case LUREM:
                     if (isJavaConstant(src1)) {
-                        new Setx(crb.asLongConst(src1), asRegister(scratch2, Kind.Long), false).emit(masm);
+                        new Setx(crb.asLongConst(src1), asRegister(scratch2, JavaKind.Long), false).emit(masm);
                         srcLeft = scratch2;
                     }
-                    assert !asRegister(srcLeft, Kind.Long).equals(asRegister(scratch1, Kind.Long));
-                    assert !asRegister(src2, Kind.Long).equals(asRegister(scratch1, Kind.Long));
+                    assert !asRegister(srcLeft, JavaKind.Long).equals(asRegister(scratch1, JavaKind.Long));
+                    assert !asRegister(src2, JavaKind.Long).equals(asRegister(scratch1, JavaKind.Long));
                     exceptionOffset = masm.position();
-                    masm.udivx(asRegister(srcLeft, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long));
-                    masm.mulx(asRegister(scratch1, Kind.Long), asRegister(src2, Kind.Long), asRegister(scratch1, Kind.Long));
+                    masm.udivx(asRegister(srcLeft, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(scratch1, JavaKind.Long));
+                    masm.mulx(asRegister(scratch1, JavaKind.Long), asRegister(src2, JavaKind.Long), asRegister(scratch1, JavaKind.Long));
                     delaySlotLir.emitControlTransfer(crb, masm);
-                    masm.sub(asRegister(srcLeft, Kind.Long), asRegister(scratch1, Kind.Long), asRegister(dst, Kind.Long));
+                    masm.sub(asRegister(srcLeft, JavaKind.Long), asRegister(scratch1, JavaKind.Long), asRegister(dst, JavaKind.Long));
                     break;
                 case IREM:
                     if (isJavaConstant(src1)) {
-                        new Setx(crb.asIntConst(src1), asRegister(scratch2, Kind.Int), false).emit(masm);
+                        new Setx(crb.asIntConst(src1), asRegister(scratch2, JavaKind.Int), false).emit(masm);
                         srcLeft = scratch2;
                     }
-                    assert !asRegister(srcLeft, Kind.Int).equals(asRegister(scratch1, Kind.Int));
-                    assert !asRegister(src2, Kind.Int).equals(asRegister(scratch1, Kind.Int));
-                    masm.sra(asRegister(src1, Kind.Int), 0, asRegister(scratch1, Kind.Int));
-                    masm.sra(asRegister(src2, Kind.Int), 0, asRegister(scratch2, Kind.Int));
+                    assert !asRegister(srcLeft, JavaKind.Int).equals(asRegister(scratch1, JavaKind.Int));
+                    assert !asRegister(src2, JavaKind.Int).equals(asRegister(scratch1, JavaKind.Int));
+                    masm.sra(asRegister(src1, JavaKind.Int), 0, asRegister(scratch1, JavaKind.Int));
+                    masm.sra(asRegister(src2, JavaKind.Int), 0, asRegister(scratch2, JavaKind.Int));
                     exceptionOffset = masm.position();
-                    masm.sdivx(asRegister(scratch1, Kind.Int), asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int));
-                    masm.mulx(asRegister(dst, Kind.Int), asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int));
+                    masm.sdivx(asRegister(scratch1, JavaKind.Int), asRegister(scratch2, JavaKind.Int), asRegister(dst, JavaKind.Int));
+                    masm.mulx(asRegister(dst, JavaKind.Int), asRegister(scratch2, JavaKind.Int), asRegister(dst, JavaKind.Int));
                     delaySlotLir.emitControlTransfer(crb, masm);
-                    masm.sub(asRegister(scratch1, Kind.Int), asRegister(dst, Kind.Int), asRegister(dst, Kind.Int));
+                    masm.sub(asRegister(scratch1, JavaKind.Int), asRegister(dst, JavaKind.Int), asRegister(dst, JavaKind.Int));
                     break;
                 case IUREM:
-                    assert !asRegister(dst, Kind.Int).equals(asRegister(scratch1, Kind.Int));
-                    assert !asRegister(dst, Kind.Int).equals(asRegister(scratch2, Kind.Int));
-                    masm.srl(asRegister(src1, Kind.Int), 0, asRegister(scratch1, Kind.Int));
-                    masm.srl(asRegister(src2, Kind.Int), 0, asRegister(dst, Kind.Int));
+                    assert !asRegister(dst, JavaKind.Int).equals(asRegister(scratch1, JavaKind.Int));
+                    assert !asRegister(dst, JavaKind.Int).equals(asRegister(scratch2, JavaKind.Int));
+                    masm.srl(asRegister(src1, JavaKind.Int), 0, asRegister(scratch1, JavaKind.Int));
+                    masm.srl(asRegister(src2, JavaKind.Int), 0, asRegister(dst, JavaKind.Int));
                     exceptionOffset = masm.position();
-                    masm.udivx(asRegister(scratch1, Kind.Int), asRegister(dst, Kind.Int), asRegister(scratch2, Kind.Int));
-                    masm.mulx(asRegister(scratch2, Kind.Int), asRegister(dst, Kind.Int), asRegister(dst, Kind.Int));
+                    masm.udivx(asRegister(scratch1, JavaKind.Int), asRegister(dst, JavaKind.Int), asRegister(scratch2, JavaKind.Int));
+                    masm.mulx(asRegister(scratch2, JavaKind.Int), asRegister(dst, JavaKind.Int), asRegister(dst, JavaKind.Int));
                     delaySlotLir.emitControlTransfer(crb, masm);
-                    masm.sub(asRegister(scratch1, Kind.Int), asRegister(dst, Kind.Int), asRegister(dst, Kind.Int));
+                    masm.sub(asRegister(scratch1, JavaKind.Int), asRegister(dst, JavaKind.Int), asRegister(dst, JavaKind.Int));
                     break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
@@ -682,111 +682,111 @@
         switch (opcode) {
             case INEG:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.neg(asRegister(src, Kind.Int), asRegister(dst, Kind.Int));
+                masm.neg(asRegister(src, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case LNEG:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.neg(asRegister(src, Kind.Long), asRegister(dst, Kind.Long));
+                masm.neg(asRegister(src, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case INOT:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.not(asRegister(src, Kind.Int), asRegister(dst, Kind.Int));
+                masm.not(asRegister(src, JavaKind.Int), asRegister(dst, JavaKind.Int));
                 break;
             case LNOT:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.not(asRegister(src, Kind.Long), asRegister(dst, Kind.Long));
+                masm.not(asRegister(src, JavaKind.Long), asRegister(dst, JavaKind.Long));
                 break;
             case D2F:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fdtos(asRegister(src, Kind.Double), asRegister(dst, Kind.Float));
+                masm.fdtos(asRegister(src, JavaKind.Double), asRegister(dst, JavaKind.Float));
                 break;
             case L2D:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fxtod(asRegister(src, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fxtod(asRegister(src, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 break;
             case L2F:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fxtos(asRegister(src, Kind.Double), asRegister(dst, Kind.Float));
+                masm.fxtos(asRegister(src, JavaKind.Double), asRegister(dst, JavaKind.Float));
                 break;
             case I2D:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fitod(asRegister(src, Kind.Float), asRegister(dst, Kind.Double));
+                masm.fitod(asRegister(src, JavaKind.Float), asRegister(dst, JavaKind.Double));
                 break;
             case I2L:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.signx(asRegister(src, Kind.Int), asRegister(dst, Kind.Long));
+                masm.signx(asRegister(src, JavaKind.Int), asRegister(dst, JavaKind.Long));
                 break;
             case L2I:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.signx(asRegister(src, Kind.Long), asRegister(dst, Kind.Int));
+                masm.signx(asRegister(src, JavaKind.Long), asRegister(dst, JavaKind.Int));
                 break;
             case B2L:
-                masm.sll(asRegister(src, Kind.Int), 24, asRegister(dst, Kind.Long));
+                masm.sll(asRegister(src, JavaKind.Int), 24, asRegister(dst, JavaKind.Long));
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sra(asRegister(dst, Kind.Long), 24, asRegister(dst, Kind.Long));
+                masm.sra(asRegister(dst, JavaKind.Long), 24, asRegister(dst, JavaKind.Long));
                 break;
             case B2I:
-                masm.sll(asRegister(src, Kind.Int), 24, asRegister(dst, Kind.Int));
+                masm.sll(asRegister(src, JavaKind.Int), 24, asRegister(dst, JavaKind.Int));
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sra(asRegister(dst, Kind.Int), 24, asRegister(dst, Kind.Int));
+                masm.sra(asRegister(dst, JavaKind.Int), 24, asRegister(dst, JavaKind.Int));
                 break;
             case S2L:
-                masm.sll(asRegister(src, Kind.Int), 16, asRegister(dst, Kind.Long));
+                masm.sll(asRegister(src, JavaKind.Int), 16, asRegister(dst, JavaKind.Long));
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sra(asRegister(dst, Kind.Long), 16, asRegister(dst, Kind.Long));
+                masm.sra(asRegister(dst, JavaKind.Long), 16, asRegister(dst, JavaKind.Long));
                 break;
             case S2I:
-                masm.sll(asRegister(src, Kind.Int), 16, asRegister(dst, Kind.Int));
+                masm.sll(asRegister(src, JavaKind.Int), 16, asRegister(dst, JavaKind.Int));
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.sra(asRegister(dst, Kind.Int), 16, asRegister(dst, Kind.Int));
+                masm.sra(asRegister(dst, JavaKind.Int), 16, asRegister(dst, JavaKind.Int));
                 break;
             case I2F:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fitos(asRegister(src, Kind.Float), asRegister(dst, Kind.Float));
+                masm.fitos(asRegister(src, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 break;
             case F2D:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fstod(asRegister(src, Kind.Float), asRegister(dst, Kind.Double));
+                masm.fstod(asRegister(src, JavaKind.Float), asRegister(dst, JavaKind.Double));
                 break;
             case F2L:
-                masm.fcmp(Fcc0, Fcmps, asRegister(src, Kind.Float), asRegister(src, Kind.Float));
+                masm.fcmp(Fcc0, Fcmps, asRegister(src, JavaKind.Float), asRegister(src, JavaKind.Float));
                 masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN);
-                masm.fstox(asRegister(src, Kind.Float), asRegister(dst, Kind.Double));
+                masm.fstox(asRegister(src, JavaKind.Float), asRegister(dst, JavaKind.Double));
                 masm.fxtod(asRegister(dst), asRegister(dst));
-                masm.fsubd(asRegister(dst, Kind.Double), asRegister(dst, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fsubd(asRegister(dst, JavaKind.Double), asRegister(dst, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 masm.bind(notOrdered);
                 break;
             case F2I:
-                masm.fcmp(Fcc0, Fcmps, asRegister(src, Kind.Float), asRegister(src, Kind.Float));
+                masm.fcmp(Fcc0, Fcmps, asRegister(src, JavaKind.Float), asRegister(src, JavaKind.Float));
                 masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN);
-                masm.fstoi(asRegister(src, Kind.Float), asRegister(dst, Kind.Float));
-                masm.fitos(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float));
-                masm.fsubs(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float), asRegister(dst, Kind.Float));
+                masm.fstoi(asRegister(src, JavaKind.Float), asRegister(dst, JavaKind.Float));
+                masm.fitos(asRegister(dst, JavaKind.Float), asRegister(dst, JavaKind.Float));
+                masm.fsubs(asRegister(dst, JavaKind.Float), asRegister(dst, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 masm.bind(notOrdered);
                 break;
             case D2L:
-                masm.fcmp(Fcc0, Fcmpd, asRegister(src, Kind.Double), asRegister(src, Kind.Double));
+                masm.fcmp(Fcc0, Fcmpd, asRegister(src, JavaKind.Double), asRegister(src, JavaKind.Double));
                 masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN);
-                masm.fdtox(asRegister(src, Kind.Double), asRegister(dst, Kind.Double));
-                masm.fxtod(asRegister(dst, Kind.Double), asRegister(dst, Kind.Double));
-                masm.fsubd(asRegister(dst, Kind.Double), asRegister(dst, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fdtox(asRegister(src, JavaKind.Double), asRegister(dst, JavaKind.Double));
+                masm.fxtod(asRegister(dst, JavaKind.Double), asRegister(dst, JavaKind.Double));
+                masm.fsubd(asRegister(dst, JavaKind.Double), asRegister(dst, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 masm.bind(notOrdered);
                 break;
             case D2I:
-                masm.fcmp(Fcc0, Fcmpd, asRegister(src, Kind.Double), asRegister(src, Kind.Double));
+                masm.fcmp(Fcc0, Fcmpd, asRegister(src, JavaKind.Double), asRegister(src, JavaKind.Double));
                 masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN);
-                masm.fdtoi(asRegister(src, Kind.Double), asRegister(dst, Kind.Float));
-                masm.fitos(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float));
-                masm.fsubs(asRegister(dst, Kind.Float), asRegister(dst, Kind.Float), asRegister(dst, Kind.Float));
+                masm.fdtoi(asRegister(src, JavaKind.Double), asRegister(dst, JavaKind.Float));
+                masm.fitos(asRegister(dst, JavaKind.Float), asRegister(dst, JavaKind.Float));
+                masm.fsubs(asRegister(dst, JavaKind.Float), asRegister(dst, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 masm.bind(notOrdered);
                 break;
             case FNEG:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fnegs(asRegister(src, Kind.Float), asRegister(dst, Kind.Float));
+                masm.fnegs(asRegister(src, JavaKind.Float), asRegister(dst, JavaKind.Float));
                 break;
             case DNEG:
                 delaySlotLir.emitControlTransfer(crb, masm);
-                masm.fnegd(asRegister(src, Kind.Double), asRegister(dst, Kind.Double));
+                masm.fnegd(asRegister(src, JavaKind.Double), asRegister(dst, JavaKind.Double));
                 break;
             default:
                 throw JVMCIError.shouldNotReachHere("missing: " + opcode);
@@ -798,11 +798,11 @@
     }
 
     private static void verifyKind(SPARCArithmetic opcode, PlatformKind result, PlatformKind x, PlatformKind y) {
-        Kind rk;
-        Kind xk;
-        Kind yk;
-        Kind xsk;
-        Kind ysk;
+        JavaKind rk;
+        JavaKind xk;
+        JavaKind yk;
+        JavaKind xsk;
+        JavaKind ysk;
 
         switch (opcode) {
             case IADD:
@@ -821,11 +821,11 @@
             case IUSHR:
             case IUDIV:
             case IUREM:
-                rk = ((Kind) result).getStackKind();
-                xsk = ((Kind) x).getStackKind();
-                ysk = ((Kind) y).getStackKind();
+                rk = ((JavaKind) result).getStackKind();
+                xsk = ((JavaKind) x).getStackKind();
+                ysk = ((JavaKind) y).getStackKind();
                 boolean valid = false;
-                for (Kind k : new Kind[]{Kind.Int, Kind.Short, Kind.Byte, Kind.Char}) {
+                for (JavaKind k : new JavaKind[]{JavaKind.Int, JavaKind.Short, JavaKind.Byte, JavaKind.Char}) {
                     valid |= rk == k && xsk == k && ysk == k;
                 }
                 assert valid : "rk: " + rk + " xsk: " + xsk + " ysk: " + ysk;
@@ -843,28 +843,28 @@
             case LXOR:
             case LUDIV:
             case LUREM:
-                rk = (Kind) result;
-                xk = (Kind) x;
-                yk = (Kind) y;
-                assert rk == Kind.Long && xk == Kind.Long && yk == Kind.Long;
+                rk = (JavaKind) result;
+                xk = (JavaKind) x;
+                yk = (JavaKind) y;
+                assert rk == JavaKind.Long && xk == JavaKind.Long && yk == JavaKind.Long;
                 break;
             case LSHL:
             case LSHR:
             case LUSHR:
-                rk = (Kind) result;
-                xk = (Kind) x;
-                yk = (Kind) y;
-                assert rk == Kind.Long && xk == Kind.Long && (yk == Kind.Int || yk == Kind.Long);
+                rk = (JavaKind) result;
+                xk = (JavaKind) x;
+                yk = (JavaKind) y;
+                assert rk == JavaKind.Long && xk == JavaKind.Long && (yk == JavaKind.Int || yk == JavaKind.Long);
                 break;
             case FADD:
             case FSUB:
             case FMUL:
             case FDIV:
             case FREM:
-                rk = (Kind) result;
-                xk = (Kind) x;
-                yk = (Kind) y;
-                assert (rk == Kind.Float || rk == Kind.Double) && xk == Kind.Float && yk == Kind.Float;
+                rk = (JavaKind) result;
+                xk = (JavaKind) x;
+                yk = (JavaKind) y;
+                assert (rk == JavaKind.Float || rk == JavaKind.Double) && xk == JavaKind.Float && yk == JavaKind.Float;
                 break;
             case DAND:
             case DADD:
@@ -872,10 +872,10 @@
             case DMUL:
             case DDIV:
             case DREM:
-                rk = (Kind) result;
-                xk = (Kind) x;
-                yk = (Kind) y;
-                assert rk == Kind.Double && xk == Kind.Double && yk == Kind.Double : "opcode=" + opcode + ", result kind=" + rk + ", x kind=" + xk + ", y kind=" + yk;
+                rk = (JavaKind) result;
+                xk = (JavaKind) x;
+                yk = (JavaKind) y;
+                assert rk == JavaKind.Double && xk == JavaKind.Double && yk == JavaKind.Double : "opcode=" + opcode + ", result kind=" + rk + ", x kind=" + xk + ", y kind=" + yk;
                 break;
             default:
                 throw JVMCIError.shouldNotReachHere("missing: " + opcode);
@@ -908,30 +908,30 @@
                 case IMUL:
                     masm.sra(asRegister(x), 0, asRegister(x));
                     masm.sra(asRegister(y), 0, asRegister(y));
-                    masm.mulx(asRegister(x, Kind.Int), asRegister(y, Kind.Int), asRegister(result, Kind.Int));
-                    masm.srax(asRegister(result, Kind.Int), 32, asRegister(result, Kind.Int));
+                    masm.mulx(asRegister(x, JavaKind.Int), asRegister(y, JavaKind.Int), asRegister(result, JavaKind.Int));
+                    masm.srax(asRegister(result, JavaKind.Int), 32, asRegister(result, JavaKind.Int));
                     break;
                 case IUMUL:
-                    assert !asRegister(scratch, Kind.Int).equals(asRegister(result, Kind.Int));
-                    masm.srl(asRegister(x, Kind.Int), 0, asRegister(scratch, Kind.Int));
-                    masm.srl(asRegister(y, Kind.Int), 0, asRegister(result, Kind.Int));
-                    masm.mulx(asRegister(result, Kind.Int), asRegister(scratch, Kind.Int), asRegister(result, Kind.Int));
-                    masm.srlx(asRegister(result, Kind.Int), 32, asRegister(result, Kind.Int));
+                    assert !asRegister(scratch, JavaKind.Int).equals(asRegister(result, JavaKind.Int));
+                    masm.srl(asRegister(x, JavaKind.Int), 0, asRegister(scratch, JavaKind.Int));
+                    masm.srl(asRegister(y, JavaKind.Int), 0, asRegister(result, JavaKind.Int));
+                    masm.mulx(asRegister(result, JavaKind.Int), asRegister(scratch, JavaKind.Int), asRegister(result, JavaKind.Int));
+                    masm.srlx(asRegister(result, JavaKind.Int), 32, asRegister(result, JavaKind.Int));
                     break;
                 case LMUL:
-                    assert !asRegister(scratch, Kind.Long).equals(asRegister(result, Kind.Long));
-                    masm.umulxhi(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(result, Kind.Long));
+                    assert !asRegister(scratch, JavaKind.Long).equals(asRegister(result, JavaKind.Long));
+                    masm.umulxhi(asRegister(x, JavaKind.Long), asRegister(y, JavaKind.Long), asRegister(result, JavaKind.Long));
 
-                    masm.srlx(asRegister(x, Kind.Long), 63, asRegister(scratch, Kind.Long));
-                    masm.mulx(asRegister(scratch, Kind.Long), asRegister(y, Kind.Long), asRegister(scratch, Kind.Long));
-                    masm.sub(asRegister(result, Kind.Long), asRegister(scratch, Kind.Long), asRegister(result, Kind.Long));
+                    masm.srlx(asRegister(x, JavaKind.Long), 63, asRegister(scratch, JavaKind.Long));
+                    masm.mulx(asRegister(scratch, JavaKind.Long), asRegister(y, JavaKind.Long), asRegister(scratch, JavaKind.Long));
+                    masm.sub(asRegister(result, JavaKind.Long), asRegister(scratch, JavaKind.Long), asRegister(result, JavaKind.Long));
 
-                    masm.srlx(asRegister(y, Kind.Long), 63, asRegister(scratch, Kind.Long));
-                    masm.mulx(asRegister(scratch, Kind.Long), asRegister(x, Kind.Long), asRegister(scratch, Kind.Long));
-                    masm.sub(asRegister(result, Kind.Long), asRegister(scratch, Kind.Long), asRegister(result, Kind.Long));
+                    masm.srlx(asRegister(y, JavaKind.Long), 63, asRegister(scratch, JavaKind.Long));
+                    masm.mulx(asRegister(scratch, JavaKind.Long), asRegister(x, JavaKind.Long), asRegister(scratch, JavaKind.Long));
+                    masm.sub(asRegister(result, JavaKind.Long), asRegister(scratch, JavaKind.Long), asRegister(result, JavaKind.Long));
                     break;
                 case LUMUL:
-                    masm.umulxhi(asRegister(x, Kind.Long), asRegister(y, Kind.Long), asRegister(result, Kind.Long));
+                    masm.umulxhi(asRegister(x, JavaKind.Long), asRegister(y, JavaKind.Long), asRegister(result, JavaKind.Long));
                     break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArrayEqualsOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -52,7 +52,7 @@
     public static final LIRInstructionClass<SPARCArrayEqualsOp> TYPE = LIRInstructionClass.create(SPARCArrayEqualsOp.class);
     public static final SizeEstimate SIZE = SizeEstimate.create(32);
 
-    private final Kind kind;
+    private final JavaKind kind;
     private final int arrayBaseOffset;
     private final int arrayIndexScale;
 
@@ -66,7 +66,7 @@
     @Temp({REG}) protected Value temp4;
     @Temp({REG}) protected Value temp5;
 
-    public SPARCArrayEqualsOp(LIRGeneratorTool tool, Kind kind, Value result, Value array1, Value array2, Value length) {
+    public SPARCArrayEqualsOp(LIRGeneratorTool tool, JavaKind kind, Value result, Value array1, Value array2, Value length) {
         super(TYPE, SIZE);
         this.kind = kind;
 
@@ -103,7 +103,7 @@
         masm.add(asRegister(array2Value), arrayBaseOffset, array2);
 
         // Get array length in bytes.
-        masm.mulx(asRegister(lengthValue, Kind.Int), arrayIndexScale, length);
+        masm.mulx(asRegister(lengthValue, JavaKind.Int), arrayIndexScale, length);
         masm.mov(length, result); // copy
 
         emit8ByteCompare(masm, result, array1, array2, length, trueLabel, falseLabel);
@@ -132,7 +132,7 @@
      * Emits code that uses 8-byte vector compares.
      */
     private void emit8ByteCompare(SPARCMacroAssembler masm, Register result, Register array1, Register array2, Register length, Label trueLabel, Label falseLabel) {
-        assert lengthValue.getPlatformKind().equals(Kind.Int);
+        assert lengthValue.getPlatformKind().equals(JavaKind.Int);
         Label loop = new Label();
         Label compareTail = new Label();
         Label compareTailCorrectVectorEnd = new Label();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCBitManipulationOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -68,7 +68,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        Register dst = asRegister(result, Kind.Int);
+        Register dst = asRegister(result, JavaKind.Int);
         if (isRegister(input)) {
             Register src = asRegister(input);
             switch (opcode) {
@@ -82,12 +82,12 @@
                     break;
                 case BSF:
                     PlatformKind tkind = input.getPlatformKind();
-                    if (tkind == Kind.Int) {
+                    if (tkind == JavaKind.Int) {
                         masm.sub(src, 1, dst);
                         masm.andn(dst, src, dst);
                         masm.srl(dst, g0, dst);
                         masm.popc(dst, dst);
-                    } else if (tkind == Kind.Long) {
+                    } else if (tkind == JavaKind.Long) {
                         masm.sub(src, 1, dst);
                         masm.andn(dst, src, dst);
                         masm.popc(dst, dst);
@@ -97,7 +97,7 @@
                     break;
                 case IBSR: {
                     PlatformKind ikind = input.getPlatformKind();
-                    assert ikind == Kind.Int;
+                    assert ikind == JavaKind.Int;
                     Register tmp = asRegister(scratch);
                     assert !tmp.equals(dst);
                     masm.srl(src, 1, tmp);
@@ -117,7 +117,7 @@
                 }
                 case LBSR: {
                     PlatformKind lkind = input.getPlatformKind();
-                    assert lkind == Kind.Long;
+                    assert lkind == JavaKind.Long;
                     Register tmp = asRegister(scratch);
                     assert !tmp.equals(dst);
                     masm.srlx(src, 1, tmp);
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCByteSwapOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -47,8 +47,8 @@
         super(TYPE, SIZE);
         this.result = result;
         this.input = input;
-        this.tmpSlot = tool.getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(Kind.Long));
-        this.tempIndex = tool.newVariable(LIRKind.value(Kind.Long));
+        this.tmpSlot = tool.getResult().getFrameMapBuilder().allocateSpillSlot(LIRKind.value(JavaKind.Long));
+        this.tempIndex = tool.newVariable(LIRKind.value(JavaKind.Long));
     }
 
     @Override
@@ -56,17 +56,17 @@
         SPARCAddress addr = (SPARCAddress) crb.asAddress(tmpSlot);
         SPARCMove.emitStore(input, addr, result.getPlatformKind(), SPARCDelayedControlTransfer.DUMMY, null, crb, masm);
         if (addr.getIndex().equals(Register.None)) {
-            Register tempReg = ValueUtil.asRegister(tempIndex, Kind.Long);
+            Register tempReg = ValueUtil.asRegister(tempIndex, JavaKind.Long);
             new SPARCMacroAssembler.Setx(addr.getDisplacement(), tempReg, false).emit(masm);
             addr = new SPARCAddress(addr.getBase(), tempReg);
         }
         getDelayedControlTransfer().emitControlTransfer(crb, masm);
-        switch ((Kind) input.getPlatformKind()) {
+        switch ((JavaKind) input.getPlatformKind()) {
             case Int:
-                masm.lduwa(addr.getBase(), addr.getIndex(), asRegister(result, Kind.Int), Asi.ASI_PRIMARY_LITTLE);
+                masm.lduwa(addr.getBase(), addr.getIndex(), asRegister(result, JavaKind.Int), Asi.ASI_PRIMARY_LITTLE);
                 break;
             case Long:
-                masm.ldxa(addr.getBase(), addr.getIndex(), asRegister(result, Kind.Long), Asi.ASI_PRIMARY_LITTLE);
+                masm.ldxa(addr.getBase(), addr.getIndex(), asRegister(result, JavaKind.Long), Asi.ASI_PRIMARY_LITTLE);
                 break;
             default:
                 throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java	Tue Sep 08 19:57:39 2015 +0200
@@ -70,11 +70,11 @@
             assert x.getPlatformKind().equals(y.getPlatformKind()) : x + " " + y;
             // @formatter:off
             assert
-                    (name().startsWith("I") && x.getPlatformKind() == Kind.Int && ((Kind) y.getPlatformKind()).getStackKind() == Kind.Int) ||
-                    (name().startsWith("L") && x.getPlatformKind() == Kind.Long && y.getPlatformKind() == Kind.Long) ||
-                    (name().startsWith("A") && x.getPlatformKind() == Kind.Object && y.getPlatformKind() == Kind.Object) ||
-                    (name().startsWith("F") && x.getPlatformKind() == Kind.Float && y.getPlatformKind() == Kind.Float) ||
-                    (name().startsWith("D") && x.getPlatformKind() == Kind.Double && y.getPlatformKind() == Kind.Double)
+                    (name().startsWith("I") && x.getPlatformKind() == JavaKind.Int && ((JavaKind) y.getPlatformKind()).getStackKind() == JavaKind.Int) ||
+                    (name().startsWith("L") && x.getPlatformKind() == JavaKind.Long && y.getPlatformKind() == JavaKind.Long) ||
+                    (name().startsWith("A") && x.getPlatformKind() == JavaKind.Object && y.getPlatformKind() == JavaKind.Object) ||
+                    (name().startsWith("F") && x.getPlatformKind() == JavaKind.Float && y.getPlatformKind() == JavaKind.Float) ||
+                    (name().startsWith("D") && x.getPlatformKind() == JavaKind.Double && y.getPlatformKind() == JavaKind.Double)
                     : "Name; " + name() + " x: " + x + " y: " + y;
             // @formatter:on
         }
@@ -84,19 +84,19 @@
         if (isRegister(y)) {
             switch (opcode) {
                 case ICMP:
-                    masm.cmp(asRegister(x, Kind.Int), asRegister(y, Kind.Int));
+                    masm.cmp(asRegister(x, JavaKind.Int), asRegister(y, JavaKind.Int));
                     break;
                 case LCMP:
-                    masm.cmp(asRegister(x, Kind.Long), asRegister(y, Kind.Long));
+                    masm.cmp(asRegister(x, JavaKind.Long), asRegister(y, JavaKind.Long));
                     break;
                 case ACMP:
                     masm.cmp(asRegister(x), asRegister(y));
                     break;
                 case FCMP:
-                    masm.fcmp(Fcc0, Fcmps, asRegister(x, Kind.Float), asRegister(y, Kind.Float));
+                    masm.fcmp(Fcc0, Fcmps, asRegister(x, JavaKind.Float), asRegister(y, JavaKind.Float));
                     break;
                 case DCMP:
-                    masm.fcmp(Fcc0, Fcmpd, asRegister(x, Kind.Double), asRegister(y, Kind.Double));
+                    masm.fcmp(Fcc0, Fcmpd, asRegister(x, JavaKind.Double), asRegister(y, JavaKind.Double));
                     break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
@@ -106,11 +106,11 @@
             switch (opcode) {
                 case LCMP:
                     assert isSimm13(crb.asLongConst(y));
-                    masm.cmp(asRegister(x, Kind.Long), (int) crb.asLongConst(y));
+                    masm.cmp(asRegister(x, JavaKind.Long), (int) crb.asLongConst(y));
                     break;
                 case ICMP:
                     assert isSimm13(crb.asIntConst(y));
-                    masm.cmp(asRegister(x, Kind.Int), crb.asIntConst(y));
+                    masm.cmp(asRegister(x, JavaKind.Int), crb.asIntConst(y));
                     break;
                 case ACMP:
                     if (asJavaConstant(y).isNull()) {
@@ -120,10 +120,10 @@
                         throw JVMCIError.shouldNotReachHere("Only null object constants are allowed in comparisons");
                     }
                 case FCMP:
-                    masm.fcmp(Fcc0, Fcmps, asRegister(x, Kind.Float), asRegister(y, Kind.Float));
+                    masm.fcmp(Fcc0, Fcmps, asRegister(x, JavaKind.Float), asRegister(y, JavaKind.Float));
                     break;
                 case DCMP:
-                    masm.fcmp(Fcc0, Fcmpd, asRegister(x, Kind.Double), asRegister(y, Kind.Double));
+                    masm.fcmp(Fcc0, Fcmpd, asRegister(x, JavaKind.Double), asRegister(y, JavaKind.Double));
                     break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java	Tue Sep 08 19:57:39 2015 +0200
@@ -85,7 +85,7 @@
     public static final class CompareBranchOp extends SPARCBlockEndOp implements SPARCDelayedControlTransfer {
         public static final LIRInstructionClass<CompareBranchOp> TYPE = LIRInstructionClass.create(CompareBranchOp.class);
         public static final SizeEstimate SIZE = SizeEstimate.create(3);
-        static final EnumSet<Kind> SUPPORTED_KINDS = EnumSet.of(Kind.Long, Kind.Int, Kind.Object, Kind.Float, Kind.Double);
+        static final EnumSet<JavaKind> SUPPORTED_KINDS = EnumSet.of(JavaKind.Long, JavaKind.Int, JavaKind.Object, JavaKind.Float, JavaKind.Double);
 
         private final SPARCCompare opcode;
         @Use({REG}) protected Value x;
@@ -95,13 +95,13 @@
         protected LabelHint trueDestinationHint;
         protected final LabelRef falseDestination;
         protected LabelHint falseDestinationHint;
-        protected final Kind kind;
+        protected final JavaKind kind;
         protected final boolean unorderedIsTrue;
         private boolean emitted = false;
         private int delaySlotPosition = -1;
         private double trueDestinationProbability;
 
-        public CompareBranchOp(SPARCCompare opcode, Value x, Value y, Condition condition, LabelRef trueDestination, LabelRef falseDestination, Kind kind, boolean unorderedIsTrue,
+        public CompareBranchOp(SPARCCompare opcode, Value x, Value y, Condition condition, LabelRef trueDestination, LabelRef falseDestination, JavaKind kind, boolean unorderedIsTrue,
                         double trueDestinationProbability) {
             super(TYPE, SIZE);
             this.opcode = opcode;
@@ -235,21 +235,21 @@
         }
 
         private static void emitCBCond(SPARCMacroAssembler masm, Value actualX, Value actualY, Label actualTrueTarget, ConditionFlag conditionFlag) {
-            switch ((Kind) actualX.getLIRKind().getPlatformKind()) {
+            switch ((JavaKind) actualX.getLIRKind().getPlatformKind()) {
                 case Int:
                     if (isJavaConstant(actualY)) {
                         int constantY = asJavaConstant(actualY).asInt();
-                        CBCOND.emit(masm, conditionFlag, false, asRegister(actualX, Kind.Int), constantY, actualTrueTarget);
+                        CBCOND.emit(masm, conditionFlag, false, asRegister(actualX, JavaKind.Int), constantY, actualTrueTarget);
                     } else {
-                        CBCOND.emit(masm, conditionFlag, false, asRegister(actualX, Kind.Int), asRegister(actualY, Kind.Int), actualTrueTarget);
+                        CBCOND.emit(masm, conditionFlag, false, asRegister(actualX, JavaKind.Int), asRegister(actualY, JavaKind.Int), actualTrueTarget);
                     }
                     break;
                 case Long:
                     if (isJavaConstant(actualY)) {
                         int constantY = (int) asJavaConstant(actualY).asLong();
-                        CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, Kind.Long), constantY, actualTrueTarget);
+                        CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, JavaKind.Long), constantY, actualTrueTarget);
                     } else {
-                        CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, Kind.Long), asRegister(actualY, Kind.Long), actualTrueTarget);
+                        CBCOND.emit(masm, conditionFlag, true, asRegister(actualX, JavaKind.Long), asRegister(actualY, JavaKind.Long), actualTrueTarget);
                     }
                     break;
                 case Object:
@@ -270,7 +270,7 @@
             if (!asm.hasFeature(CPUFeature.CBCOND)) {
                 return false;
             }
-            switch ((Kind) x.getPlatformKind()) {
+            switch ((JavaKind) x.getPlatformKind()) {
                 case Int:
                 case Long:
                 case Object:
@@ -336,10 +336,10 @@
         protected final ConditionFlag conditionFlag;
         protected final LabelRef trueDestination;
         protected final LabelRef falseDestination;
-        protected final Kind kind;
+        protected final JavaKind kind;
         protected final double trueDestinationProbability;
 
-        public BranchOp(ConditionFlag conditionFlag, LabelRef trueDestination, LabelRef falseDestination, Kind kind, double trueDestinationProbability) {
+        public BranchOp(ConditionFlag conditionFlag, LabelRef trueDestination, LabelRef falseDestination, JavaKind kind, double trueDestinationProbability) {
             super(TYPE, SIZE);
             this.trueDestination = trueDestination;
             this.falseDestination = falseDestination;
@@ -359,7 +359,7 @@
         }
     }
 
-    private static boolean emitBranch(CompilationResultBuilder crb, SPARCMacroAssembler masm, Kind kind, ConditionFlag conditionFlag, LabelRef trueDestination, LabelRef falseDestination,
+    private static boolean emitBranch(CompilationResultBuilder crb, SPARCMacroAssembler masm, JavaKind kind, ConditionFlag conditionFlag, LabelRef trueDestination, LabelRef falseDestination,
                     boolean withDelayedNop, double trueDestinationProbability) {
         Label actualTarget;
         ConditionFlag actualConditionFlag;
@@ -380,10 +380,10 @@
             // We cannot make use of the delay slot when we jump in true-case and false-case
             return false;
         }
-        if (kind == Kind.Double || kind == Kind.Float) {
+        if (kind == JavaKind.Double || kind == JavaKind.Float) {
             masm.fbpcc(actualConditionFlag, NOT_ANNUL, actualTarget, CC.Fcc0, predictTaken);
         } else {
-            CC cc = kind == Kind.Int ? CC.Icc : CC.Xcc;
+            CC cc = kind == JavaKind.Int ? CC.Icc : CC.Xcc;
             masm.bpcc(actualConditionFlag, NOT_ANNUL, actualTarget, cc, predictTaken);
         }
         if (withDelayedNop) {
@@ -454,7 +454,7 @@
                     JavaConstant constant = keyConstants[index];
                     CC conditionCode;
                     Long bits;
-                    switch (constant.getKind()) {
+                    switch (constant.getJavaKind()) {
                         case Char:
                         case Byte:
                         case Short:
@@ -468,7 +468,7 @@
                             break;
                         }
                         case Object: {
-                            conditionCode = crb.codeCache.getTarget().wordKind == Kind.Long ? CC.Xcc : CC.Icc;
+                            conditionCode = crb.codeCache.getTarget().wordKind == JavaKind.Long ? CC.Xcc : CC.Icc;
                             bits = constant.isDefaultForKind() ? 0L : null;
                             break;
                         }
@@ -521,7 +521,7 @@
             int constantBytes = 0;
             for (JavaConstant v : keyConstants) {
                 if (!SPARCAssembler.isSimm13(v)) {
-                    constantBytes += v.getKind().getByteCount();
+                    constantBytes += v.getJavaKind().getByteCount();
                 }
             }
             return new SizeEstimate(4 * keyTargets.length, constantBytes);
@@ -548,8 +548,8 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-            Register value = asRegister(index, Kind.Int);
-            Register scratchReg = asRegister(scratch, Kind.Long);
+            Register value = asRegister(index, JavaKind.Int);
+            Register scratchReg = asRegister(scratch, JavaKind.Long);
 
             // Compare index against jump table bounds
             int highKey = lowKey + targets.length - 1;
@@ -659,7 +659,7 @@
     }
 
     private static void cmove(SPARCMacroAssembler masm, CC cc, Value result, ConditionFlag cond, Value other) {
-        switch ((Kind) other.getPlatformKind()) {
+        switch ((JavaKind) other.getPlatformKind()) {
             case Boolean:
             case Byte:
             case Short:
@@ -692,10 +692,10 @@
                 }
                 break;
             case Float:
-                masm.fmovscc(cond, cc, asRegister(other, Kind.Float), asRegister(result, Kind.Float));
+                masm.fmovscc(cond, cc, asRegister(other, JavaKind.Float), asRegister(result, JavaKind.Float));
                 break;
             case Double:
-                masm.fmovdcc(cond, cc, asRegister(other, Kind.Double), asRegister(result, Kind.Double));
+                masm.fmovdcc(cond, cc, asRegister(other, JavaKind.Double), asRegister(result, JavaKind.Double));
                 break;
             default:
                 throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCFrameMap.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCFrameMap.java	Tue Sep 08 19:57:39 2015 +0200
@@ -128,6 +128,6 @@
 
     public StackSlot allocateDeoptimizationRescueSlot() {
         assert spillSize == initialSpillSize : "Deoptimization rescue slot must be the first stack slot";
-        return allocateSpillSlot(LIRKind.value(Kind.Long));
+        return allocateSpillSlot(LIRKind.value(JavaKind.Long));
     }
 }
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -52,16 +52,16 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        Kind inputKind = (Kind) input.getLIRKind().getPlatformKind();
+        JavaKind inputKind = (JavaKind) input.getLIRKind().getPlatformKind();
         getDelayedControlTransfer().emitControlTransfer(crb, masm);
         switch (opcode) {
             case SQRT:
                 switch (inputKind) {
                     case Float:
-                        masm.fsqrts(asRegister(input, Kind.Float), asRegister(result, Kind.Float));
+                        masm.fsqrts(asRegister(input, JavaKind.Float), asRegister(result, JavaKind.Float));
                         break;
                     case Double:
-                        masm.fsqrtd(asRegister(input, Kind.Double), asRegister(result, Kind.Double));
+                        masm.fsqrtd(asRegister(input, JavaKind.Double), asRegister(result, JavaKind.Double));
                         break;
                     default:
                         JVMCIError.shouldNotReachHere();
@@ -70,10 +70,10 @@
             case ABS:
                 switch (inputKind) {
                     case Float:
-                        masm.fabss(asRegister(input, Kind.Float), asRegister(result, Kind.Float));
+                        masm.fabss(asRegister(input, JavaKind.Float), asRegister(result, JavaKind.Float));
                         break;
                     case Double:
-                        masm.fabsd(asRegister(input, Kind.Double), asRegister(result, Kind.Double));
+                        masm.fabsd(asRegister(input, JavaKind.Double), asRegister(result, JavaKind.Double));
                         break;
                     default:
                         JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Tue Sep 08 19:57:39 2015 +0200
@@ -27,7 +27,7 @@
 import static com.oracle.graal.lir.LIRValueUtil.*;
 import static jdk.internal.jvmci.code.MemoryBarriers.*;
 import static jdk.internal.jvmci.code.ValueUtil.*;
-import static jdk.internal.jvmci.meta.Kind.*;
+import static jdk.internal.jvmci.meta.JavaKind.*;
 import static jdk.internal.jvmci.sparc.SPARC.*;
 
 import java.util.*;
@@ -176,8 +176,8 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-            Kind inputKind = (Kind) input.getPlatformKind();
-            Kind resultKind = (Kind) result.getPlatformKind();
+            JavaKind inputKind = (JavaKind) input.getPlatformKind();
+            JavaKind resultKind = (JavaKind) result.getPlatformKind();
             if (AllocatableValue.ILLEGAL.equals(temp)) {
                 moveDirect(crb, masm, inputKind, resultKind);
             } else {
@@ -185,36 +185,36 @@
             }
         }
 
-        private void moveDirect(CompilationResultBuilder crb, SPARCMacroAssembler masm, Kind inputKind, Kind resultKind) {
+        private void moveDirect(CompilationResultBuilder crb, SPARCMacroAssembler masm, JavaKind inputKind, JavaKind resultKind) {
             getDelayedControlTransfer().emitControlTransfer(crb, masm);
             if (resultKind == Float) {
                 if (inputKind == Int || inputKind == Short || inputKind == Char || inputKind == Byte) {
-                    masm.movwtos(asRegister(input, Kind.Int), asRegister(result, Kind.Float));
+                    masm.movwtos(asRegister(input, JavaKind.Int), asRegister(result, JavaKind.Float));
                 } else {
                     throw JVMCIError.shouldNotReachHere();
                 }
             } else if (resultKind == Double) {
                 if (inputKind == Int || inputKind == Short || inputKind == Char || inputKind == Byte) {
-                    masm.movxtod(asRegister(input, Kind.Int), asRegister(result, Kind.Double));
+                    masm.movxtod(asRegister(input, JavaKind.Int), asRegister(result, JavaKind.Double));
                 } else {
-                    masm.movxtod(asRegister(input, Kind.Long), asRegister(result, Kind.Double));
+                    masm.movxtod(asRegister(input, JavaKind.Long), asRegister(result, JavaKind.Double));
                 }
             } else if (inputKind == Float) {
                 if (resultKind == Int || resultKind == Short || resultKind == Byte) {
-                    masm.movstosw(asRegister(input, Kind.Float), asRegister(result, Kind.Int));
+                    masm.movstosw(asRegister(input, JavaKind.Float), asRegister(result, JavaKind.Int));
                 } else {
-                    masm.movstouw(asRegister(input, Kind.Float), asRegister(result, Kind.Int));
+                    masm.movstouw(asRegister(input, JavaKind.Float), asRegister(result, JavaKind.Int));
                 }
             } else if (inputKind == Double) {
                 if (resultKind == Long) {
-                    masm.movdtox(asRegister(input, Kind.Double), asRegister(result, Kind.Long));
+                    masm.movdtox(asRegister(input, JavaKind.Double), asRegister(result, JavaKind.Long));
                 } else {
                     throw JVMCIError.shouldNotReachHere();
                 }
             }
         }
 
-        private void moveViaStack(CompilationResultBuilder crb, SPARCMacroAssembler masm, Kind inputKind, Kind resultKind) {
+        private void moveViaStack(CompilationResultBuilder crb, SPARCMacroAssembler masm, JavaKind inputKind, JavaKind resultKind) {
             int inputKindSize = crb.target.getSizeInBytes(inputKind);
             int resultKindSize = crb.target.getSizeInBytes(resultKind);
             assert inputKindSize == resultKindSize;
@@ -297,7 +297,7 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
             SPARCAddress address = addressValue.toAddress();
-            loadEffectiveAddress(crb, masm, address, asRegister(result, Kind.Long), getDelayedControlTransfer());
+            loadEffectiveAddress(crb, masm, address, asRegister(result, JavaKind.Long), getDelayedControlTransfer());
         }
     }
 
@@ -424,7 +424,7 @@
         @Override
         public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
             SPARCAddress address = (SPARCAddress) crb.asAddress(slot);
-            loadEffectiveAddress(crb, masm, address, asRegister(result, Kind.Long), getDelayedControlTransfer());
+            loadEffectiveAddress(crb, masm, address, asRegister(result, JavaKind.Long), getDelayedControlTransfer());
         }
     }
 
@@ -609,7 +609,7 @@
             Register resultRegister = asRegister(result);
             int byteCount = crb.target.getSizeInBytes(result.getPlatformKind());
             Runnable recordReference = () -> crb.recordDataReferenceInCode(input, byteCount);
-            switch (input.getKind().getStackKind()) {
+            switch (input.getJavaKind().getStackKind()) {
                 case Int:
                     if (input.isDefaultForKind()) {
                         delaySlotLir.emitControlTransfer(crb, masm);
@@ -680,7 +680,7 @@
                     }
                     break;
                 default:
-                    throw JVMCIError.shouldNotReachHere("missing: " + input.getKind());
+                    throw JVMCIError.shouldNotReachHere("missing: " + input.getJavaKind());
             }
         }
     }
@@ -688,7 +688,7 @@
     protected static void compareAndSwap(CompilationResultBuilder crb, SPARCMacroAssembler masm, AllocatableValue address, AllocatableValue cmpValue, AllocatableValue newValue,
                     SPARCDelayedControlTransfer delay) {
         delay.emitControlTransfer(crb, masm);
-        switch ((Kind) cmpValue.getPlatformKind()) {
+        switch ((JavaKind) cmpValue.getPlatformKind()) {
             case Int:
                 masm.cas(asRegister(address), asRegister(cmpValue), asRegister(newValue));
                 break;
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTestOp.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTestOp.java	Tue Sep 08 19:57:39 2015 +0200
@@ -49,31 +49,31 @@
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
         if (isRegister(y)) {
-            switch ((Kind) x.getPlatformKind()) {
+            switch ((JavaKind) x.getPlatformKind()) {
                 case Short:
                 case Byte:
                 case Char:
                 case Boolean:
                 case Int:
-                    masm.andcc(asRegister(x, Kind.Int), asRegister(y, Kind.Int), g0);
+                    masm.andcc(asRegister(x, JavaKind.Int), asRegister(y, JavaKind.Int), g0);
                     break;
                 case Long:
-                    masm.andcc(asRegister(x, Kind.Long), asRegister(y, Kind.Long), g0);
+                    masm.andcc(asRegister(x, JavaKind.Long), asRegister(y, JavaKind.Long), g0);
                     break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
             }
         } else if (isJavaConstant(y)) {
-            switch ((Kind) x.getPlatformKind()) {
+            switch ((JavaKind) x.getPlatformKind()) {
                 case Short:
                 case Byte:
                 case Char:
                 case Boolean:
                 case Int:
-                    masm.andcc(asRegister(x, Kind.Int), crb.asIntConst(y), g0);
+                    masm.andcc(asRegister(x, JavaKind.Int), crb.asIntConst(y), g0);
                     break;
                 case Long:
-                    masm.andcc(asRegister(x, Kind.Long), crb.asIntConst(y), g0);
+                    masm.andcc(asRegister(x, JavaKind.Long), crb.asIntConst(y), g0);
                     break;
                 default:
                     throw JVMCIError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/GenericValueMapTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/GenericValueMapTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -39,7 +39,7 @@
         RegisterCategory cat = new RegisterCategory("regs");
 
         RegisterValue reg = new Register(0, 0, "reg0", cat).asValue();
-        Variable var = new Variable(LIRKind.value(Kind.Long), 0);
+        Variable var = new Variable(LIRKind.value(JavaKind.Long), 0);
         Object obj0 = new Object();
         Object obj1 = new Object();
 
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -216,7 +216,7 @@
      * including long constants that fit into the 32-bit range.
      */
     public int asIntConst(Value value) {
-        assert isJavaConstant(value) && asJavaConstant(value).getKind().isNumericInteger();
+        assert isJavaConstant(value) && asJavaConstant(value).getJavaKind().isNumericInteger();
         JavaConstant constant = asJavaConstant(value);
         assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch";
         long c = constant.asLong();
@@ -230,7 +230,7 @@
      * Returns the float value of any constant that can be represented by a 32-bit float value.
      */
     public float asFloatConst(Value value) {
-        assert isJavaConstant(value) && asJavaConstant(value).getKind() == Kind.Float;
+        assert isJavaConstant(value) && asJavaConstant(value).getJavaKind() == JavaKind.Float;
         JavaConstant constant = asJavaConstant(value);
         assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch";
         return constant.asFloat();
@@ -240,7 +240,7 @@
      * Returns the long value of any constant that can be represented by a 64-bit long value.
      */
     public long asLongConst(Value value) {
-        assert isJavaConstant(value) && asJavaConstant(value).getKind() == Kind.Long;
+        assert isJavaConstant(value) && asJavaConstant(value).getJavaKind() == JavaKind.Long;
         JavaConstant constant = asJavaConstant(value);
         assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch";
         return constant.asLong();
@@ -250,7 +250,7 @@
      * Returns the double value of any constant that can be represented by a 64-bit float value.
      */
     public double asDoubleConst(Value value) {
-        assert isJavaConstant(value) && asJavaConstant(value).getKind() == Kind.Double;
+        assert isJavaConstant(value) && asJavaConstant(value).getJavaKind() == JavaKind.Double;
         JavaConstant constant = asJavaConstant(value);
         assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch";
         return constant.asDouble();
@@ -264,7 +264,7 @@
     }
 
     public AbstractAddress asFloatConstRef(JavaConstant value, int alignment) {
-        assert value.getKind() == Kind.Float;
+        assert value.getJavaKind() == JavaKind.Float;
         return recordDataReferenceInCode(value, alignment);
     }
 
@@ -276,7 +276,7 @@
     }
 
     public AbstractAddress asDoubleConstRef(JavaConstant value, int alignment) {
-        assert value.getKind() == Kind.Double;
+        assert value.getJavaKind() == JavaKind.Double;
         return recordDataReferenceInCode(value, alignment);
     }
 
@@ -284,7 +284,7 @@
      * Returns the address of a long constant that is embedded as a data reference into the code.
      */
     public AbstractAddress asLongConstRef(JavaConstant value) {
-        assert value.getKind() == Kind.Long;
+        assert value.getJavaKind() == JavaKind.Long;
         return recordDataReferenceInCode(value, 8);
     }
 
@@ -292,37 +292,37 @@
      * Returns the address of an object constant that is embedded as a data reference into the code.
      */
     public AbstractAddress asObjectConstRef(JavaConstant value) {
-        assert value.getKind() == Kind.Object;
+        assert value.getJavaKind() == JavaKind.Object;
         return recordDataReferenceInCode(value, 8);
     }
 
     public AbstractAddress asByteAddr(Value value) {
-        assert value.getPlatformKind().getSizeInBytes() >= Kind.Byte.getByteCount();
+        assert value.getPlatformKind().getSizeInBytes() >= JavaKind.Byte.getByteCount();
         return asAddress(value);
     }
 
     public AbstractAddress asShortAddr(Value value) {
-        assert value.getPlatformKind().getSizeInBytes() >= Kind.Short.getByteCount();
+        assert value.getPlatformKind().getSizeInBytes() >= JavaKind.Short.getByteCount();
         return asAddress(value);
     }
 
     public AbstractAddress asIntAddr(Value value) {
-        assert value.getPlatformKind().getSizeInBytes() >= Kind.Int.getByteCount();
+        assert value.getPlatformKind().getSizeInBytes() >= JavaKind.Int.getByteCount();
         return asAddress(value);
     }
 
     public AbstractAddress asLongAddr(Value value) {
-        assert value.getPlatformKind().getSizeInBytes() >= Kind.Long.getByteCount();
+        assert value.getPlatformKind().getSizeInBytes() >= JavaKind.Long.getByteCount();
         return asAddress(value);
     }
 
     public AbstractAddress asFloatAddr(Value value) {
-        assert value.getPlatformKind().getSizeInBytes() >= Kind.Float.getByteCount();
+        assert value.getPlatformKind().getSizeInBytes() >= JavaKind.Float.getByteCount();
         return asAddress(value);
     }
 
     public AbstractAddress asDoubleAddr(Value value) {
-        assert value.getPlatformKind().getSizeInBytes() >= Kind.Double.getByteCount();
+        assert value.getPlatformKind().getSizeInBytes() >= JavaKind.Double.getByteCount();
         return asAddress(value);
     }
 
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/LocationMarker.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/LocationMarker.java	Tue Sep 08 19:57:39 2015 +0200
@@ -167,7 +167,7 @@
                 }
                 currentSet.remove(operand);
             } else {
-                assert isIllegal(operand) || operand.getPlatformKind() != Kind.Illegal || mode == OperandMode.TEMP : String.format("Illegal PlatformKind is only allowed for TEMP mode: %s, %s",
+                assert isIllegal(operand) || operand.getPlatformKind() != JavaKind.Illegal || mode == OperandMode.TEMP : String.format("Illegal PlatformKind is only allowed for TEMP mode: %s, %s",
                                 operand, mode);
             }
         }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/LocationMarkerPhase.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/dfa/LocationMarkerPhase.java	Tue Sep 08 19:57:39 2015 +0200
@@ -65,7 +65,7 @@
 
         @Override
         protected boolean shouldProcessValue(Value operand) {
-            return (isRegister(operand) && attributes(asRegister(operand)).isAllocatable() || isStackSlot(operand)) && operand.getPlatformKind() != Kind.Illegal;
+            return (isRegister(operand) && attributes(asRegister(operand)).isAllocatable() || isStackSlot(operand)) && operand.getPlatformKind() != JavaKind.Illegal;
         }
 
         /**
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMap.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMap.java	Tue Sep 08 19:57:39 2015 +0200
@@ -291,7 +291,7 @@
             for (int slotIndex = 0; slotIndex < slots; slotIndex++) {
                 StackSlot objectSlot = null;
                 if (objects.get(slotIndex)) {
-                    objectSlot = allocateNewSpillSlot(LIRKind.reference(Kind.Object), slotIndex * getTarget().wordSize);
+                    objectSlot = allocateNewSpillSlot(LIRKind.reference(JavaKind.Object), slotIndex * getTarget().wordSize);
                     addObjectStackSlot(objectSlot);
                 }
                 if (slotIndex == 0) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java	Tue Sep 08 19:57:39 2015 +0200
@@ -74,7 +74,7 @@
         if (outObjectStackSlots != null) {
             throw JVMCIError.unimplemented();
         }
-        VirtualStackSlotRange slot = new VirtualStackSlotRange(numStackSlots++, slots, objects, frameMap.getTarget().getLIRKind(Kind.Object));
+        VirtualStackSlotRange slot = new VirtualStackSlotRange(numStackSlots++, slots, objects, frameMap.getTarget().getLIRKind(JavaKind.Object));
         stackSlots.add(slot);
         return slot;
     }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/DefaultLIRKindTool.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/DefaultLIRKindTool.java	Tue Sep 08 19:57:39 2015 +0200
@@ -41,23 +41,23 @@
 
     public LIRKind getIntegerKind(int bits) {
         if (bits <= 8) {
-            return LIRKind.value(Kind.Byte);
+            return LIRKind.value(JavaKind.Byte);
         } else if (bits <= 16) {
-            return LIRKind.value(Kind.Short);
+            return LIRKind.value(JavaKind.Short);
         } else if (bits <= 32) {
-            return LIRKind.value(Kind.Int);
+            return LIRKind.value(JavaKind.Int);
         } else {
             assert bits <= 64;
-            return LIRKind.value(Kind.Long);
+            return LIRKind.value(JavaKind.Long);
         }
     }
 
     public LIRKind getFloatingKind(int bits) {
         switch (bits) {
             case 32:
-                return LIRKind.value(Kind.Float);
+                return LIRKind.value(JavaKind.Float);
             case 64:
-                return LIRKind.value(Kind.Double);
+                return LIRKind.value(JavaKind.Double);
             default:
                 throw JVMCIError.shouldNotReachHere();
         }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java	Tue Sep 08 19:57:39 2015 +0200
@@ -129,7 +129,7 @@
 
     @Override
     public Value emitJavaConstant(JavaConstant constant) {
-        return emitConstant(target().getLIRKind(constant.getKind()), constant);
+        return emitConstant(target().getLIRKind(constant.getJavaKind()), constant);
     }
 
     @Override
@@ -188,7 +188,7 @@
      *         {@code kind}
      */
     public AllocatableValue resultOperandFor(LIRKind kind) {
-        return res.getFrameMapBuilder().getRegisterConfig().getReturnRegister((Kind) kind.getPlatformKind()).asValue(kind);
+        return res.getFrameMapBuilder().getRegisterConfig().getReturnRegister((JavaKind) kind.getPlatformKind()).asValue(kind);
     }
 
     public <I extends LIRInstruction> I append(I op) {
@@ -360,7 +360,7 @@
      */
     protected JavaConstant zapValueForKind(PlatformKind kind) {
         long dead = 0xDEADDEADDEADDEADL;
-        switch ((Kind) kind) {
+        switch ((JavaKind) kind) {
             case Boolean:
                 return JavaConstant.FALSE;
             case Byte:
@@ -421,7 +421,7 @@
     // automatic derived reference handling
 
     protected boolean isNumericInteger(PlatformKind kind) {
-        return ((Kind) kind).isNumericInteger();
+        return ((JavaKind) kind).isNumericInteger();
     }
 
     protected abstract Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java	Tue Sep 08 19:57:39 2015 +0200
@@ -209,7 +209,7 @@
 
     Variable emitByteSwap(Value operand);
 
-    Variable emitArrayEquals(Kind kind, Value array1, Value array2, Value length);
+    Variable emitArrayEquals(JavaKind kind, Value array1, Value array2, Value length);
 
     void emitBlackhole(Value operand);
 
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/profiling/MoveProfiling.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/profiling/MoveProfiling.java	Tue Sep 08 19:57:39 2015 +0200
@@ -141,7 +141,7 @@
                 int i = cnt[type.ordinal()];
                 if (i > 0) {
                     names.add(type.toString());
-                    increments.add(new ConstantValue(target.getLIRKind(Kind.Int), JavaConstant.forInt(i)));
+                    increments.add(new ConstantValue(target.getLIRKind(JavaKind.Int), JavaConstant.forInt(i)));
                 }
             }
             String[] groups = new String[names.size()];
--- a/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/IntegerStampTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/IntegerStampTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -101,36 +101,36 @@
 
     @Test
     public void testPositiveRanges() {
-        assertEquals(new IntegerStamp(32, 0, 0, 0, 0), StampFactory.forInteger(Kind.Int, 0, 0));
-        assertEquals(new IntegerStamp(32, 0, 1, 0, 1), StampFactory.forInteger(Kind.Int, 0, 1));
-        assertEquals(new IntegerStamp(32, 0, 0x123, 0, 0x1ff), StampFactory.forInteger(Kind.Int, 0, 0x123));
-        assertEquals(new IntegerStamp(32, 0x120, 0x123, 0x120, 0x123), StampFactory.forInteger(Kind.Int, 0x120, 0x123));
-        assertEquals(new IntegerStamp(32, 10000, 15000, 0x2000, 0x3fff), StampFactory.forInteger(Kind.Int, 10000, 15000));
-        assertEquals(new IntegerStamp(64, 0, 1, 0, 1), StampFactory.forInteger(Kind.Long, 0, 1));
-        assertEquals(new IntegerStamp(64, 10000, 15000, 0x2000, 0x3fff), StampFactory.forInteger(Kind.Long, 10000, 15000));
-        assertEquals(new IntegerStamp(64, 140000000000L, 150000000000L, 0x2000000000L, 0x23ffffffffL), StampFactory.forInteger(Kind.Long, 140000000000L, 150000000000L));
+        assertEquals(new IntegerStamp(32, 0, 0, 0, 0), StampFactory.forInteger(JavaKind.Int, 0, 0));
+        assertEquals(new IntegerStamp(32, 0, 1, 0, 1), StampFactory.forInteger(JavaKind.Int, 0, 1));
+        assertEquals(new IntegerStamp(32, 0, 0x123, 0, 0x1ff), StampFactory.forInteger(JavaKind.Int, 0, 0x123));
+        assertEquals(new IntegerStamp(32, 0x120, 0x123, 0x120, 0x123), StampFactory.forInteger(JavaKind.Int, 0x120, 0x123));
+        assertEquals(new IntegerStamp(32, 10000, 15000, 0x2000, 0x3fff), StampFactory.forInteger(JavaKind.Int, 10000, 15000));
+        assertEquals(new IntegerStamp(64, 0, 1, 0, 1), StampFactory.forInteger(JavaKind.Long, 0, 1));
+        assertEquals(new IntegerStamp(64, 10000, 15000, 0x2000, 0x3fff), StampFactory.forInteger(JavaKind.Long, 10000, 15000));
+        assertEquals(new IntegerStamp(64, 140000000000L, 150000000000L, 0x2000000000L, 0x23ffffffffL), StampFactory.forInteger(JavaKind.Long, 140000000000L, 150000000000L));
     }
 
     @Test
     public void testNegativeRanges() {
-        assertEquals(new IntegerStamp(32, -2, -1, 0xfffffffeL, 0xffffffffL), StampFactory.forInteger(Kind.Int, -2, -1));
-        assertEquals(new IntegerStamp(32, -20, -10, 0xffffffe0L, 0xffffffffL), StampFactory.forInteger(Kind.Int, -20, -10));
-        assertEquals(new IntegerStamp(32, -10000, 0, 0, 0xffffffffL), StampFactory.forInteger(Kind.Int, -10000, 0));
-        assertEquals(new IntegerStamp(32, -10000, -1, 0xffffc000L, 0xffffffffL), StampFactory.forInteger(Kind.Int, -10000, -1));
-        assertEquals(new IntegerStamp(32, -10010, -10000, 0xffffd8e0L, 0xffffd8ffL), StampFactory.forInteger(Kind.Int, -10010, -10000));
-        assertEquals(new IntegerStamp(64, -2, -1, 0xfffffffffffffffeL, 0xffffffffffffffffL), StampFactory.forInteger(Kind.Long, -2, -1));
-        assertEquals(new IntegerStamp(64, -10010, -10000, 0xffffffffffffd8e0L, 0xffffffffffffd8ffL), StampFactory.forInteger(Kind.Long, -10010, -10000));
-        assertEquals(new IntegerStamp(64, -150000000000L, -140000000000L, 0xffffffdc00000000L, 0xffffffdfffffffffL), StampFactory.forInteger(Kind.Long, -150000000000L, -140000000000L));
+        assertEquals(new IntegerStamp(32, -2, -1, 0xfffffffeL, 0xffffffffL), StampFactory.forInteger(JavaKind.Int, -2, -1));
+        assertEquals(new IntegerStamp(32, -20, -10, 0xffffffe0L, 0xffffffffL), StampFactory.forInteger(JavaKind.Int, -20, -10));
+        assertEquals(new IntegerStamp(32, -10000, 0, 0, 0xffffffffL), StampFactory.forInteger(JavaKind.Int, -10000, 0));
+        assertEquals(new IntegerStamp(32, -10000, -1, 0xffffc000L, 0xffffffffL), StampFactory.forInteger(JavaKind.Int, -10000, -1));
+        assertEquals(new IntegerStamp(32, -10010, -10000, 0xffffd8e0L, 0xffffd8ffL), StampFactory.forInteger(JavaKind.Int, -10010, -10000));
+        assertEquals(new IntegerStamp(64, -2, -1, 0xfffffffffffffffeL, 0xffffffffffffffffL), StampFactory.forInteger(JavaKind.Long, -2, -1));
+        assertEquals(new IntegerStamp(64, -10010, -10000, 0xffffffffffffd8e0L, 0xffffffffffffd8ffL), StampFactory.forInteger(JavaKind.Long, -10010, -10000));
+        assertEquals(new IntegerStamp(64, -150000000000L, -140000000000L, 0xffffffdc00000000L, 0xffffffdfffffffffL), StampFactory.forInteger(JavaKind.Long, -150000000000L, -140000000000L));
     }
 
     @Test
     public void testMixedRanges() {
-        assertEquals(new IntegerStamp(32, -1, 0, 0, 0xffffffffL), StampFactory.forInteger(Kind.Int, -1, 0));
-        assertEquals(new IntegerStamp(32, -10000, 1000, 0, 0xffffffffL), StampFactory.forInteger(Kind.Int, -10000, 1000));
-        assertEquals(new IntegerStamp(64, -10000, 1000, 0, 0xffffffffffffffffL), StampFactory.forInteger(Kind.Long, -10000, 1000));
+        assertEquals(new IntegerStamp(32, -1, 0, 0, 0xffffffffL), StampFactory.forInteger(JavaKind.Int, -1, 0));
+        assertEquals(new IntegerStamp(32, -10000, 1000, 0, 0xffffffffL), StampFactory.forInteger(JavaKind.Int, -10000, 1000));
+        assertEquals(new IntegerStamp(64, -10000, 1000, 0, 0xffffffffffffffffL), StampFactory.forInteger(JavaKind.Long, -10000, 1000));
     }
 
-    private static Stamp narrowingKindConversion(IntegerStamp stamp, Kind kind) {
+    private static Stamp narrowingKindConversion(IntegerStamp stamp, JavaKind kind) {
         Stamp narrow = IntegerStamp.OPS.getNarrow().foldStamp(stamp.getBits(), kind.getBitCount(), stamp);
         IntegerConvertOp<?> implicitExtend = kind.isUnsigned() ? IntegerStamp.OPS.getZeroExtend() : IntegerStamp.OPS.getSignExtend();
         return implicitExtend.foldStamp(kind.getBitCount(), 32, narrow);
@@ -139,32 +139,35 @@
     @Test
     public void testNarrowingConversions() {
         // byte cases
-        assertEquals(StampFactory.forInteger(Kind.Int, 0, 0), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 0, 0), Kind.Byte));
-        assertEquals(StampFactory.forInteger(Kind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 0, 10), Kind.Byte));
-        assertEquals(StampFactory.forInteger(Kind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 10, 20), Kind.Byte));
-        assertEquals(StampFactory.forInteger(Kind.Int, -10, 0), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -10, 0), Kind.Byte));
-        assertEquals(StampFactory.forInteger(Kind.Int, -20, -10), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -20, -10), Kind.Byte));
-        assertEquals(StampFactory.forInteger(Kind.Int, Byte.MIN_VALUE, Byte.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 100, 200), Kind.Byte));
-        assertEquals(StampFactory.forInteger(Kind.Int, Byte.MIN_VALUE, Byte.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -100, 200), Kind.Byte));
-        assertEquals(StampFactory.forInteger(Kind.Int, Byte.MIN_VALUE, Byte.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -200, -100), Kind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 0), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 0, 0), JavaKind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 0, 10), JavaKind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 10, 20), JavaKind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, -10, 0), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -10, 0), JavaKind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, -20, -10), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -20, -10), JavaKind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Byte.MIN_VALUE, Byte.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 100, 200), JavaKind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Byte.MIN_VALUE, Byte.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -100, 200), JavaKind.Byte));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Byte.MIN_VALUE, Byte.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -200, -100), JavaKind.Byte));
         // char cases
-        assertEquals(StampFactory.forInteger(Kind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 0, 10), Kind.Char));
-        assertEquals(StampFactory.forInteger(Kind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 10, 20), Kind.Char));
-        assertEquals(StampFactory.forInteger(Kind.Int, Character.MIN_VALUE, Character.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 20000, 80000), Kind.Char));
-        assertEquals(StampFactory.forInteger(Kind.Int, Character.MIN_VALUE, Character.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -10000, 40000), Kind.Char));
-        assertEquals(StampFactory.forInteger(Kind.Int, Character.MIN_VALUE, Character.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -40000, -10000), Kind.Char));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 0, 10), JavaKind.Char));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 10, 20), JavaKind.Char));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Character.MIN_VALUE, Character.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 20000, 80000), JavaKind.Char));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Character.MIN_VALUE, Character.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -10000, 40000), JavaKind.Char));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Character.MIN_VALUE, Character.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -40000, -10000), JavaKind.Char));
         // short cases
-        assertEquals(StampFactory.forInteger(Kind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 0, 10), Kind.Short));
-        assertEquals(StampFactory.forInteger(Kind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 10, 20), Kind.Short));
-        assertEquals(StampFactory.forInteger(Kind.Int, Short.MIN_VALUE, Short.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, 20000, 40000), Kind.Short));
-        assertEquals(StampFactory.forInteger(Kind.Int, Short.MIN_VALUE, Short.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -10000, 40000), Kind.Short));
-        assertEquals(StampFactory.forInteger(Kind.Int, Short.MIN_VALUE, Short.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Int, -40000, -10000), Kind.Short));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 0, 10), JavaKind.Short));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 10, 20), JavaKind.Short));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Short.MIN_VALUE, Short.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, 20000, 40000), JavaKind.Short));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Short.MIN_VALUE, Short.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -10000, 40000), JavaKind.Short));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Short.MIN_VALUE, Short.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(JavaKind.Int, -40000, -10000), JavaKind.Short));
         // int cases
-        assertEquals(StampFactory.forInteger(Kind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(Kind.Long, 0, 10), Kind.Int));
-        assertEquals(StampFactory.forInteger(Kind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(Kind.Long, 10, 20), Kind.Int));
-        assertEquals(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Long, 20000000000L, 40000000000L), Kind.Int));
-        assertEquals(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Long, -10000000000L, 40000000000L), Kind.Int));
-        assertEquals(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE), narrowingKindConversion(StampFactory.forInteger(Kind.Long, -40000000000L, -10000000000L), Kind.Int));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 10), narrowingKindConversion(StampFactory.forInteger(JavaKind.Long, 0, 10), JavaKind.Int));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 10, 20), narrowingKindConversion(StampFactory.forInteger(JavaKind.Long, 10, 20), JavaKind.Int));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE),
+                        narrowingKindConversion(StampFactory.forInteger(JavaKind.Long, 20000000000L, 40000000000L), JavaKind.Int));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE),
+                        narrowingKindConversion(StampFactory.forInteger(JavaKind.Long, -10000000000L, 40000000000L), JavaKind.Int));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE),
+                        narrowingKindConversion(StampFactory.forInteger(JavaKind.Long, -40000000000L, -10000000000L), JavaKind.Int));
     }
 
     @Test
@@ -182,94 +185,94 @@
 
     @Test
     public void testAddIntSimple() {
-        assertEquals(StampFactory.forInteger(Kind.Int, 0, 30, 0, 31), addIntStamp(StampFactory.forInteger(Kind.Int, 0, 10), StampFactory.forInteger(Kind.Int, 0, 20)));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 30, 0, 31), addIntStamp(StampFactory.forInteger(JavaKind.Int, 0, 10), StampFactory.forInteger(JavaKind.Int, 0, 20)));
     }
 
     @Test
     public void testAddNegativeOverFlowInt1() {
-        assertEquals(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE, 0, 0xffff_ffffL),
-                        addIntStamp(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, 0), StampFactory.forInteger(Kind.Int, -1, 0)));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE, 0, 0xffff_ffffL),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, 0), StampFactory.forInteger(JavaKind.Int, -1, 0)));
     }
 
     @Test
     public void testAddNegativeOverFlowInt2() {
-        assertEquals(StampFactory.forInteger(Kind.Int, Integer.MAX_VALUE - 2, Integer.MAX_VALUE, 0x7fff_fffcL, 0x7fff_ffffL),
-                        addIntStamp(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, Integer.MIN_VALUE + 1), StampFactory.forInteger(Kind.Int, -3, -2)));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Integer.MAX_VALUE - 2, Integer.MAX_VALUE, 0x7fff_fffcL, 0x7fff_ffffL),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, Integer.MIN_VALUE + 1), StampFactory.forInteger(JavaKind.Int, -3, -2)));
     }
 
     @Test
     public void testAddPositiveOverFlowInt1() {
-        assertEquals(StampFactory.forKind(Kind.Int), addIntStamp(StampFactory.forInteger(Kind.Int, 0, 1), StampFactory.forInteger(Kind.Int, 0, Integer.MAX_VALUE)));
+        assertEquals(StampFactory.forKind(JavaKind.Int), addIntStamp(StampFactory.forInteger(JavaKind.Int, 0, 1), StampFactory.forInteger(JavaKind.Int, 0, Integer.MAX_VALUE)));
     }
 
     @Test
     public void testAddPositiveOverFlowInt2() {
-        assertEquals(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, Integer.MIN_VALUE + 2),
-                        addIntStamp(StampFactory.forInteger(Kind.Int, Integer.MAX_VALUE - 1, Integer.MAX_VALUE), StampFactory.forInteger(Kind.Int, 2, 3)));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, Integer.MIN_VALUE + 2),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Int, Integer.MAX_VALUE - 1, Integer.MAX_VALUE), StampFactory.forInteger(JavaKind.Int, 2, 3)));
     }
 
     @Test
     public void testAddOverFlowsInt() {
-        assertEquals(StampFactory.forKind(Kind.Int), addIntStamp(StampFactory.forInteger(Kind.Int, -1, 1), StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE)));
+        assertEquals(StampFactory.forKind(JavaKind.Int), addIntStamp(StampFactory.forInteger(JavaKind.Int, -1, 1), StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE, Integer.MAX_VALUE)));
     }
 
     @Test
     public void testAddLongSimple() {
-        assertEquals(StampFactory.forInteger(Kind.Long, 0, 30, 0, 31), addIntStamp(StampFactory.forInteger(Kind.Long, 0, 10), StampFactory.forInteger(Kind.Long, 0, 20)));
+        assertEquals(StampFactory.forInteger(JavaKind.Long, 0, 30, 0, 31), addIntStamp(StampFactory.forInteger(JavaKind.Long, 0, 10), StampFactory.forInteger(JavaKind.Long, 0, 20)));
     }
 
     @Test
     public void testAddNegativOverFlowLong1() {
-        assertEquals(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MAX_VALUE, 0, 0xffff_ffff_ffff_ffffL),
-                        addIntStamp(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 1), StampFactory.forInteger(Kind.Long, Integer.MIN_VALUE, Integer.MAX_VALUE)));
+        assertEquals(StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MAX_VALUE, 0, 0xffff_ffff_ffff_ffffL),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 1), StampFactory.forInteger(JavaKind.Long, Integer.MIN_VALUE, Integer.MAX_VALUE)));
     }
 
     @Test
     public void testAddNegativeOverFlowLong2() {
-        assertEquals(StampFactory.forInteger(Kind.Long, Long.MAX_VALUE - 2, Long.MAX_VALUE),
-                        addIntStamp(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 1), StampFactory.forInteger(Kind.Long, -3, -2)));
+        assertEquals(StampFactory.forInteger(JavaKind.Long, Long.MAX_VALUE - 2, Long.MAX_VALUE),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 1), StampFactory.forInteger(JavaKind.Long, -3, -2)));
     }
 
     @Test
     public void testAddPositiveOverFlowLong1() {
-        assertEquals(StampFactory.forKind(Kind.Long), addIntStamp(StampFactory.forInteger(Kind.Long, 0, 1), StampFactory.forInteger(Kind.Long, 0, Long.MAX_VALUE)));
+        assertEquals(StampFactory.forKind(JavaKind.Long), addIntStamp(StampFactory.forInteger(JavaKind.Long, 0, 1), StampFactory.forInteger(JavaKind.Long, 0, Long.MAX_VALUE)));
     }
 
     @Test
     public void testAddPositiveOverFlowLong2() {
-        assertEquals(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 2),
-                        addIntStamp(StampFactory.forInteger(Kind.Long, Long.MAX_VALUE - 1, Long.MAX_VALUE), StampFactory.forInteger(Kind.Long, 2, 3)));
+        assertEquals(StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 2),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Long, Long.MAX_VALUE - 1, Long.MAX_VALUE), StampFactory.forInteger(JavaKind.Long, 2, 3)));
     }
 
     @Test
     public void testAddOverFlowsLong() {
-        assertEquals(StampFactory.forKind(Kind.Long), addIntStamp(StampFactory.forInteger(Kind.Long, -1, 1), StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MAX_VALUE)));
+        assertEquals(StampFactory.forKind(JavaKind.Long), addIntStamp(StampFactory.forInteger(JavaKind.Long, -1, 1), StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MAX_VALUE)));
     }
 
     @Test
     public void testAdd1() {
-        assertEquals(StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE + 1, 31 + (Integer.MIN_VALUE + 1)),
-                        addIntStamp(StampFactory.forInteger(Kind.Int, 0, 31), StampFactory.forInteger(Kind.Int, Integer.MIN_VALUE + 1, Integer.MIN_VALUE + 1)));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE + 1, 31 + (Integer.MIN_VALUE + 1)),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Int, 0, 31), StampFactory.forInteger(JavaKind.Int, Integer.MIN_VALUE + 1, Integer.MIN_VALUE + 1)));
     }
 
     @Test
     public void testAdd2() {
-        assertEquals(StampFactory.forInteger(Kind.Int, 0x8000_007e, 0x8000_007f, 0x8000_007eL, 0x8000_007fL),
-                        addIntStamp(StampFactory.forInteger(Kind.Int, 0x7fff_fffe, 0x7fff_ffff, 0x7fff_fffeL, 0x7ffff_fffL), StampFactory.forInteger(Kind.Int, 128, 128)));
+        assertEquals(StampFactory.forInteger(JavaKind.Int, 0x8000_007e, 0x8000_007f, 0x8000_007eL, 0x8000_007fL),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Int, 0x7fff_fffe, 0x7fff_ffff, 0x7fff_fffeL, 0x7ffff_fffL), StampFactory.forInteger(JavaKind.Int, 128, 128)));
     }
 
     @Test
     public void testAdd3() {
-        assertEquals(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MAX_VALUE - 1, 0, 0xffff_ffff_ffff_fffeL),
-                        addIntStamp(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MAX_VALUE - 1, 0, 0xffff_ffff_ffff_fffeL),
-                                        StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MAX_VALUE - 1, 0, 0xffff_ffff_ffff_fffeL)));
+        assertEquals(StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MAX_VALUE - 1, 0, 0xffff_ffff_ffff_fffeL),
+                        addIntStamp(StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MAX_VALUE - 1, 0, 0xffff_ffff_ffff_fffeL),
+                                        StampFactory.forInteger(JavaKind.Long, Long.MIN_VALUE, Long.MAX_VALUE - 1, 0, 0xffff_ffff_ffff_fffeL)));
 
     }
 
     @Test
     public void testAnd() {
         assertEquals(new IntegerStamp(32, Integer.MIN_VALUE, 0x40000000L, 0, 0xc0000000L),
-                        IntegerStamp.OPS.getAnd().foldStamp(StampFactory.forKind(Kind.Int), StampFactory.forConstant(JavaConstant.forInt(0xc0000000))));
+                        IntegerStamp.OPS.getAnd().foldStamp(StampFactory.forKind(JavaKind.Int), StampFactory.forConstant(JavaConstant.forInt(0xc0000000))));
     }
 
     private static void testSignExtendShort(long lower, long upper) {
--- a/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -57,7 +57,7 @@
     public void testJoin2() {
         Stamp aExact = StampFactory.exactNonNull(getType(A.class));
         Stamp b = StampFactory.declared(getType(B.class));
-        Assert.assertEquals(StampFactory.empty(Kind.Object), join(aExact, b));
+        Assert.assertEquals(StampFactory.empty(JavaKind.Object), join(aExact, b));
     }
 
     @Test
@@ -71,7 +71,7 @@
     public void testJoin4() {
         Stamp dExactNonNull = StampFactory.exactNonNull(getType(D.class));
         Stamp c = StampFactory.declared(getType(C.class));
-        Assert.assertEquals(StampFactory.empty(Kind.Object), join(c, dExactNonNull));
+        Assert.assertEquals(StampFactory.empty(JavaKind.Object), join(c, dExactNonNull));
     }
 
     @Test
@@ -149,7 +149,7 @@
     private void testJoinInterface0(Class<?> typeA, Class<?> typeI) {
         Stamp a = StampFactory.declared(getType(typeA));
         Stamp i = StampFactory.declaredTrusted(getType(typeI));
-        Assert.assertNotSame(StampFactory.empty(Kind.Object), join(a, i));
+        Assert.assertNotSame(StampFactory.empty(JavaKind.Object), join(a, i));
     }
 
     private void testJoinInterface1(Class<?> typeA, Class<?> typeI) {
@@ -164,7 +164,7 @@
         Stamp bExact = StampFactory.exactNonNull(getType(typeB));
         Stamp i = StampFactory.declaredTrusted(getType(typeI));
         Stamp join = join(i, bExact);
-        Assert.assertEquals(StampFactory.empty(Kind.Object), join);
+        Assert.assertEquals(StampFactory.empty(JavaKind.Object), join);
     }
 
     private void testJoinInterface3(Class<?> typeB, Class<?> typeI) {
--- a/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampMeetTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampMeetTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -115,7 +115,7 @@
             ResolvedJavaType type = getType(clazz);
             for (Stamp test : new Stamp[]{StampFactory.declared(type), StampFactory.declaredNonNull(type), StampFactory.exact(type), StampFactory.exactNonNull(type)}) {
                 if (type.isConcrete() || !((ObjectStamp) test).isExactType()) {
-                    Assert.assertEquals("meeting empty and " + test, test, meet(StampFactory.empty(Kind.Object), test));
+                    Assert.assertEquals("meeting empty and " + test, test, meet(StampFactory.empty(JavaKind.Object), test));
                 }
             }
         }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -47,7 +47,7 @@
     protected final Constant value;
 
     private static ConstantNode createPrimitive(JavaConstant value) {
-        assert value.getKind() != Kind.Object;
+        assert value.getJavaKind() != JavaKind.Object;
         return new ConstantNode(value, StampFactory.forConstant(value));
     }
 
@@ -66,7 +66,7 @@
         if (value instanceof VMConstant) {
             assert stamp instanceof AbstractPointerStamp;
         } else if (value instanceof PrimitiveConstant) {
-            if (((PrimitiveConstant) value).getKind() == Kind.Illegal) {
+            if (((PrimitiveConstant) value).getJavaKind() == JavaKind.Illegal) {
                 assert stamp instanceof IllegalStamp;
             } else {
                 assert stamp instanceof PrimitiveStamp;
@@ -120,10 +120,10 @@
     }
 
     public static ConstantNode forConstant(JavaConstant constant, MetaAccessProvider metaAccess, StructuredGraph graph) {
-        if (constant.getKind().getStackKind() == Kind.Int && constant.getKind() != Kind.Int) {
+        if (constant.getJavaKind().getStackKind() == JavaKind.Int && constant.getJavaKind() != JavaKind.Int) {
             return forInt(constant.asInt(), graph);
         }
-        if (constant.getKind() == Kind.Object) {
+        if (constant.getJavaKind() == JavaKind.Object) {
             return unique(graph, new ConstantNode(constant, StampFactory.forConstant(constant, metaAccess)));
         } else {
             return unique(graph, createPrimitive(constant));
@@ -131,10 +131,10 @@
     }
 
     public static ConstantNode forConstant(JavaConstant constant, MetaAccessProvider metaAccess) {
-        if (constant.getKind().getStackKind() == Kind.Int && constant.getKind() != Kind.Int) {
+        if (constant.getJavaKind().getStackKind() == JavaKind.Int && constant.getJavaKind() != JavaKind.Int) {
             return forInt(constant.asInt());
         }
-        if (constant.getKind() == Kind.Object) {
+        if (constant.getJavaKind() == JavaKind.Object) {
             return new ConstantNode(constant, StampFactory.forConstant(constant, metaAccess));
         } else {
             return createPrimitive(constant);
@@ -153,7 +153,7 @@
      * Returns a node for a Java primitive.
      */
     public static ConstantNode forPrimitive(JavaConstant constant, StructuredGraph graph) {
-        assert constant.getKind() != Kind.Object;
+        assert constant.getJavaKind() != JavaKind.Object;
         return forConstant(constant, null, graph);
     }
 
@@ -161,7 +161,7 @@
      * Returns a node for a Java primitive.
      */
     public static ConstantNode forPrimitive(JavaConstant constant) {
-        assert constant.getKind() != Kind.Object;
+        assert constant.getJavaKind() != JavaKind.Object;
         return forConstant(constant, null);
     }
 
@@ -170,11 +170,11 @@
      */
     public static ConstantNode forPrimitive(Stamp stamp, JavaConstant constant, StructuredGraph graph) {
         if (stamp instanceof IntegerStamp) {
-            assert constant.getKind().isNumericInteger() && stamp.getStackKind() == constant.getKind().getStackKind();
+            assert constant.getJavaKind().isNumericInteger() && stamp.getStackKind() == constant.getJavaKind().getStackKind();
             IntegerStamp istamp = (IntegerStamp) stamp;
             return forIntegerBits(istamp.getBits(), constant, graph);
         } else {
-            assert constant.getKind().isNumericFloat() && stamp.getStackKind() == constant.getKind();
+            assert constant.getJavaKind().isNumericFloat() && stamp.getStackKind() == constant.getJavaKind();
             return forPrimitive(constant, graph);
         }
     }
@@ -185,12 +185,12 @@
     public static ConstantNode forPrimitive(Stamp stamp, Constant constant) {
         if (stamp instanceof IntegerStamp) {
             PrimitiveConstant primitive = (PrimitiveConstant) constant;
-            assert primitive.getKind().isNumericInteger() && stamp.getStackKind() == primitive.getKind().getStackKind();
+            assert primitive.getJavaKind().isNumericInteger() && stamp.getStackKind() == primitive.getJavaKind().getStackKind();
             IntegerStamp istamp = (IntegerStamp) stamp;
             return forIntegerBits(istamp.getBits(), primitive);
         } else if (stamp instanceof FloatStamp) {
             PrimitiveConstant primitive = (PrimitiveConstant) constant;
-            assert primitive.getKind().isNumericFloat() && stamp.getStackKind() == primitive.getKind();
+            assert primitive.getJavaKind().isNumericFloat() && stamp.getStackKind() == primitive.getJavaKind();
             return forConstant(primitive, null);
         } else {
             assert !(stamp instanceof AbstractObjectStamp);
@@ -384,7 +384,7 @@
         }
     }
 
-    public static ConstantNode forIntegerKind(Kind kind, long value, StructuredGraph graph) {
+    public static ConstantNode forIntegerKind(JavaKind kind, long value, StructuredGraph graph) {
         switch (kind) {
             case Byte:
             case Short:
@@ -397,7 +397,7 @@
         }
     }
 
-    public static ConstantNode forIntegerKind(Kind kind, long value) {
+    public static ConstantNode forIntegerKind(JavaKind kind, long value) {
         switch (kind) {
             case Byte:
             case Short:
@@ -410,7 +410,7 @@
         }
     }
 
-    public static ConstantNode forFloatingKind(Kind kind, double value, StructuredGraph graph) {
+    public static ConstantNode forFloatingKind(JavaKind kind, double value, StructuredGraph graph) {
         switch (kind) {
             case Float:
                 return ConstantNode.forFloat((float) value, graph);
@@ -421,7 +421,7 @@
         }
     }
 
-    public static ConstantNode forFloatingKind(Kind kind, double value) {
+    public static ConstantNode forFloatingKind(JavaKind kind, double value) {
         switch (kind) {
             case Float:
                 return ConstantNode.forFloat((float) value);
@@ -446,7 +446,7 @@
         return forFloatingKind(stamp.getStackKind(), value);
     }
 
-    public static ConstantNode defaultForKind(Kind kind, StructuredGraph graph) {
+    public static ConstantNode defaultForKind(JavaKind kind, StructuredGraph graph) {
         switch (kind) {
             case Boolean:
             case Byte:
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -52,7 +52,7 @@
         super(TYPE, stateBefore);
         assert action != null;
         assert reason != null;
-        assert speculation.getKind() == Kind.Object;
+        assert speculation.getJavaKind() == JavaKind.Object;
         this.action = action;
         this.reason = reason;
         this.debugId = debugId;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -62,7 +62,7 @@
         public static final NodeClass<TwoSlotMarker> TYPE = NodeClass.create(TwoSlotMarker.class);
 
         protected TwoSlotMarker() {
-            super(TYPE, StampFactory.forKind(Kind.Illegal));
+            super(TYPE, StampFactory.forKind(JavaKind.Illegal));
         }
     }
 
@@ -280,11 +280,11 @@
      * Creates a copy of this frame state with one stack element of type {@code popKind} popped from
      * the stack.
      */
-    public FrameState duplicateModifiedDuringCall(int newBci, Kind popKind) {
+    public FrameState duplicateModifiedDuringCall(int newBci, JavaKind popKind) {
         return duplicateModified(graph(), newBci, rethrowException, true, popKind, null, null);
     }
 
-    public FrameState duplicateModifiedBeforeCall(int newBci, Kind popKind, Kind[] pushedSlotKinds, ValueNode[] pushedValues) {
+    public FrameState duplicateModifiedBeforeCall(int newBci, JavaKind popKind, JavaKind[] pushedSlotKinds, ValueNode[] pushedValues) {
         return duplicateModified(graph(), newBci, rethrowException, false, popKind, pushedSlotKinds, pushedValues);
     }
 
@@ -294,7 +294,7 @@
      * {@code pushedValues} will be formatted correctly in slot encoding: a long or double will be
      * followed by a null slot.
      */
-    public FrameState duplicateModified(int newBci, boolean newRethrowException, Kind popKind, Kind[] pushedSlotKinds, ValueNode[] pushedValues) {
+    public FrameState duplicateModified(int newBci, boolean newRethrowException, JavaKind popKind, JavaKind[] pushedSlotKinds, ValueNode[] pushedValues) {
         return duplicateModified(graph(), newBci, newRethrowException, duringCall, popKind, pushedSlotKinds, pushedValues);
     }
 
@@ -302,9 +302,9 @@
      * Creates a copy of this frame state with the top of stack replaced with with
      * {@code pushedValue} which must be of type {@code popKind}.
      */
-    public FrameState duplicateModified(Kind popKind, Kind pushedSlotKind, ValueNode pushedValue) {
+    public FrameState duplicateModified(JavaKind popKind, JavaKind pushedSlotKind, ValueNode pushedValue) {
         assert pushedValue != null && pushedValue.getStackKind() == popKind;
-        return duplicateModified(graph(), bci, rethrowException, duringCall, popKind, new Kind[]{pushedSlotKind}, new ValueNode[]{pushedValue});
+        return duplicateModified(graph(), bci, rethrowException, duringCall, popKind, new JavaKind[]{pushedSlotKind}, new ValueNode[]{pushedValue});
     }
 
     /**
@@ -313,14 +313,14 @@
      * correctly in slot encoding: a long or double will be followed by a null slot. The bci will be
      * changed to newBci.
      */
-    public FrameState duplicateModified(StructuredGraph graph, int newBci, boolean newRethrowException, boolean newDuringCall, Kind popKind, Kind[] pushedSlotKinds, ValueNode[] pushedValues) {
+    public FrameState duplicateModified(StructuredGraph graph, int newBci, boolean newRethrowException, boolean newDuringCall, JavaKind popKind, JavaKind[] pushedSlotKinds, ValueNode[] pushedValues) {
         ArrayList<ValueNode> copy;
-        if (newRethrowException && !rethrowException && popKind == Kind.Void) {
-            assert popKind == Kind.Void;
+        if (newRethrowException && !rethrowException && popKind == JavaKind.Void) {
+            assert popKind == JavaKind.Void;
             copy = new ArrayList<>(values.subList(0, localsSize));
         } else {
             copy = new ArrayList<>(values.subList(0, localsSize + stackSize));
-            if (popKind != Kind.Void) {
+            if (popKind != JavaKind.Void) {
                 if (stackAt(stackSize() - 1) == null) {
                     copy.remove(copy.size() - 1);
                 }
@@ -531,7 +531,7 @@
         assertTrue(locksSize() == monitorIdCount(), "mismatch in number of locks");
         for (ValueNode value : values) {
             assertTrue(value == null || !value.isDeleted(), "frame state must not contain deleted nodes");
-            assertTrue(value == null || value instanceof VirtualObjectNode || (value.getStackKind() != Kind.Void), "unexpected value: %s", value);
+            assertTrue(value == null || value instanceof VirtualObjectNode || (value.getStackKind() != JavaKind.Void), "unexpected value: %s", value);
         }
         return super.verify();
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -61,7 +61,7 @@
 
     @Override
     public void generate(NodeLIRBuilderTool generator) {
-        if (object.getStackKind() != Kind.Void && object.getStackKind() != Kind.Illegal) {
+        if (object.getStackKind() != JavaKind.Void && object.getStackKind() != JavaKind.Illegal) {
             generator.setResult(this, generator.operand(object));
         }
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -306,7 +306,7 @@
                          * appear to be interesting.
                          */
                         JavaConstant positive = lessThan2.getX().asJavaConstant();
-                        if (positive != null && positive.asLong() > 0 && positive.asLong() < positive.getKind().getMaxValue()) {
+                        if (positive != null && positive.asLong() > 0 && positive.asLong() < positive.getJavaKind().getMaxValue()) {
                             ConstantNode newLimit = ConstantNode.forIntegerStamp(lessThan2.getX().stamp(), positive.asLong() + 1, graph());
                             below = graph().unique(new IntegerBelowNode(lessThan.getX(), newLimit));
                         }
@@ -661,7 +661,7 @@
         if (trueValue.getStackKind() != falseValue.getStackKind()) {
             return null;
         }
-        if (trueValue.getStackKind() != Kind.Int && trueValue.getStackKind() != Kind.Long) {
+        if (trueValue.getStackKind() != JavaKind.Int && trueValue.getStackKind() != JavaKind.Long) {
             return null;
         }
         if (trueValue.isConstant() && falseValue.isConstant()) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -93,7 +93,7 @@
     @Override
     public boolean isAllowedUsageType(InputType type) {
         if (!super.isAllowedUsageType(type)) {
-            if (getStackKind() != Kind.Void) {
+            if (getStackKind() != JavaKind.Void) {
                 if (callTarget instanceof MethodCallTargetNode && ((MethodCallTargetNode) callTarget).targetMethod().getAnnotation(NodeIntrinsic.class) != null) {
                     return true;
                 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -181,7 +181,7 @@
 
     @Override
     public void intrinsify(Node node) {
-        assert !(node instanceof ValueNode) || (((ValueNode) node).getStackKind() == Kind.Void) == (getStackKind() == Kind.Void);
+        assert !(node instanceof ValueNode) || (((ValueNode) node).getStackKind() == JavaKind.Void) == (getStackKind() == JavaKind.Void);
         CallTargetNode call = callTarget;
         FrameState state = stateAfter();
         killExceptionEdge();
@@ -194,7 +194,7 @@
             foreign.setBci(bci());
         }
         if (node == null) {
-            assert getStackKind() == Kind.Void && hasNoUsages();
+            assert getStackKind() == JavaKind.Void && hasNoUsages();
             graph().removeSplit(this, next());
         } else if (node instanceof ControlSinkNode) {
             this.replaceAtPredecessor(node);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/NamedLocationIdentity.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/NamedLocationIdentity.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -25,7 +25,7 @@
 import java.util.*;
 
 import jdk.internal.jvmci.meta.*;
-import jdk.internal.jvmci.meta.Kind.FormatWithToString;
+import jdk.internal.jvmci.meta.JavaKind.FormatWithToString;
 
 /**
  * A {@link LocationIdentity} with a name.
@@ -115,15 +115,15 @@
      * the same kind must have the same location identity unless an alias analysis guarantees that
      * two distinct arrays are accessed.
      */
-    public static LocationIdentity getArrayLocation(Kind elementKind) {
+    public static LocationIdentity getArrayLocation(JavaKind elementKind) {
         return ARRAY_LOCATIONS.get(elementKind);
     }
 
-    private static final EnumMap<Kind, LocationIdentity> ARRAY_LOCATIONS = initArrayLocations();
+    private static final EnumMap<JavaKind, LocationIdentity> ARRAY_LOCATIONS = initArrayLocations();
 
-    private static EnumMap<Kind, LocationIdentity> initArrayLocations() {
-        EnumMap<Kind, LocationIdentity> result = new EnumMap<>(Kind.class);
-        for (Kind kind : Kind.values()) {
+    private static EnumMap<JavaKind, LocationIdentity> initArrayLocations() {
+        EnumMap<JavaKind, LocationIdentity> result = new EnumMap<>(JavaKind.class);
+        for (JavaKind kind : JavaKind.values()) {
             result.put(kind, NamedLocationIdentity.mutable("Array: " + kind.getJavaName()));
         }
         return result;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -135,7 +135,7 @@
 
     public void addInput(ValueNode x) {
         assert !(x instanceof ValuePhiNode) || ((ValuePhiNode) x).merge() instanceof LoopBeginNode || ((ValuePhiNode) x).merge() != this.merge();
-        assert !(this instanceof ValuePhiNode) || x.stamp().isCompatible(stamp()) || (stamp().getStackKind() == Kind.Int && x.stamp().getStackKind().getBitCount() >= Kind.Int.getBitCount());
+        assert !(this instanceof ValuePhiNode) || x.stamp().isCompatible(stamp()) || (stamp().getStackKind() == JavaKind.Int && x.stamp().getStackKind().getBitCount() >= JavaKind.Int.getBitCount());
         values().add(x);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -76,7 +76,7 @@
 
     @Override
     public void generate(NodeLIRBuilderTool generator) {
-        if (object.getStackKind() != Kind.Void && object.getStackKind() != Kind.Illegal) {
+        if (object.getStackKind() != JavaKind.Void && object.getStackKind() != JavaKind.Illegal) {
             generator.setResult(this, generator.operand(object));
         }
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,7 +44,7 @@
 
     public UnwindNode(ValueNode exception) {
         super(TYPE, StampFactory.forVoid());
-        assert exception.getStackKind() == Kind.Object;
+        assert exception.getStackKind() == JavaKind.Object;
         this.exception = exception;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -38,8 +38,8 @@
 
     public static final NodeClass<ValueNode> TYPE = NodeClass.create(ValueNode.class);
     /**
-     * The kind of this value. This is {@link Kind#Void} for instructions that produce no value.
-     * This kind is guaranteed to be a {@linkplain Kind#getStackKind() stack kind}.
+     * The kind of this value. This is {@link JavaKind#Void} for instructions that produce no value.
+     * This kind is guaranteed to be a {@linkplain JavaKind#getStackKind() stack kind}.
      */
     protected Stamp stamp;
 
@@ -89,7 +89,7 @@
         return false;
     }
 
-    public final Kind getStackKind() {
+    public final JavaKind getStackKind() {
         return stamp().getStackKind();
     }
 
@@ -151,7 +151,7 @@
 
     @Override
     public boolean isAllowedUsageType(InputType type) {
-        if (getStackKind() != Kind.Void && type == InputType.Value) {
+        if (getStackKind() != JavaKind.Void && type == InputType.Value) {
             return true;
         } else {
             return super.isAllowedUsageType(type);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNodeUtil.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNodeUtil.java	Tue Sep 08 19:57:39 2015 +0200
@@ -32,7 +32,7 @@
 
 public class ValueNodeUtil {
 
-    public static ValueNode assertKind(Kind kind, ValueNode x) {
+    public static ValueNode assertKind(JavaKind kind, ValueNode x) {
         assert x != null && x.getStackKind() == kind : "kind=" + kind + ", value=" + x + ((x == null) ? "" : ", value.kind=" + x.getStackKind());
         return x;
     }
@@ -46,27 +46,27 @@
     }
 
     public static ValueNode assertLong(ValueNode x) {
-        assert x != null && (x.getStackKind() == Kind.Long);
+        assert x != null && (x.getStackKind() == JavaKind.Long);
         return x;
     }
 
     public static ValueNode assertInt(ValueNode x) {
-        assert x != null && (x.getStackKind() == Kind.Int);
+        assert x != null && (x.getStackKind() == JavaKind.Int);
         return x;
     }
 
     public static ValueNode assertFloat(ValueNode x) {
-        assert x != null && (x.getStackKind() == Kind.Float);
+        assert x != null && (x.getStackKind() == JavaKind.Float);
         return x;
     }
 
     public static ValueNode assertObject(ValueNode x) {
-        assert x != null && (x.getStackKind() == Kind.Object);
+        assert x != null && (x.getStackKind() == JavaKind.Object);
         return x;
     }
 
     public static ValueNode assertDouble(ValueNode x) {
-        assert x != null && (x.getStackKind() == Kind.Double);
+        assert x != null && (x.getStackKind() == JavaKind.Double);
         return x;
     }
 
@@ -87,8 +87,9 @@
 
     /**
      * Converts a given instruction to a value string. The representation of an node as a value is
-     * formed by concatenating the {@linkplain jdk.internal.jvmci.meta.Kind#getTypeChar character}
-     * denoting its {@linkplain ValueNode#getStackKind kind} and its id. For example, {@code "i13"}.
+     * formed by concatenating the {@linkplain jdk.internal.jvmci.meta.JavaKind#getTypeChar
+     * character} denoting its {@linkplain ValueNode#getStackKind kind} and its id. For example,
+     * {@code "i13"}.
      *
      * @param value the instruction to convert to a value string. If {@code value == null}, then "-"
      *            is returned.
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -76,7 +76,7 @@
                 return forX;
             }
 
-            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getKind().isNumericInteger()) {
+            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getJavaKind().isNumericInteger()) {
                 long rawY = ((PrimitiveConstant) c).asLong();
                 long mask = CodeUtil.mask(PrimitiveStamp.getBits(stamp()));
                 if ((rawY & mask) == 0) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -67,7 +67,7 @@
             if (getOp(forX, forY).isNeutral(c)) {
                 return forX;
             }
-            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getKind().isNumericInteger()) {
+            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getJavaKind().isNumericInteger()) {
                 long i = ((PrimitiveConstant) c).asLong();
                 boolean signFlip = false;
                 if (i < 0) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -40,8 +40,8 @@
 
     public IntegerEqualsNode(ValueNode x, ValueNode y) {
         super(TYPE, Condition.EQ, false, x, y);
-        assert !x.getStackKind().isNumericFloat() && x.getStackKind() != Kind.Object;
-        assert !y.getStackKind().isNumericFloat() && y.getStackKind() != Kind.Object;
+        assert !x.getStackKind().isNumericFloat() && x.getStackKind() != JavaKind.Object;
+        assert !y.getStackKind().isNumericFloat() && y.getStackKind() != JavaKind.Object;
     }
 
     public static LogicNode create(ValueNode x, ValueNode y, ConstantReflectionProvider constantReflection) {
@@ -74,11 +74,11 @@
     @Override
     protected ValueNode optimizeNormalizeCmp(Constant constant, NormalizeCompareNode normalizeNode, boolean mirrored) {
         PrimitiveConstant primitive = (PrimitiveConstant) constant;
-        if (primitive.getKind() == Kind.Int && primitive.asInt() == 0) {
+        if (primitive.getJavaKind() == JavaKind.Int && primitive.asInt() == 0) {
             ValueNode a = mirrored ? normalizeNode.getY() : normalizeNode.getX();
             ValueNode b = mirrored ? normalizeNode.getX() : normalizeNode.getY();
 
-            if (normalizeNode.getX().getStackKind() == Kind.Double || normalizeNode.getX().getStackKind() == Kind.Float) {
+            if (normalizeNode.getX().getStackKind() == JavaKind.Double || normalizeNode.getX().getStackKind() == JavaKind.Float) {
                 return new FloatEqualsNode(a, b);
             } else {
                 return new IntegerEqualsNode(a, b);
@@ -121,10 +121,10 @@
                     if (shift.getY().isConstant()) {
                         int mask = shift.getShiftAmountMask();
                         int amount = shift.getY().asJavaConstant().asInt() & mask;
-                        if (shift.getX().getStackKind() == Kind.Int) {
+                        if (shift.getX().getStackKind() == JavaKind.Int) {
                             return new IntegerTestNode(shift.getX(), ConstantNode.forInt(-1 >>> amount));
                         } else {
-                            assert shift.getX().getStackKind() == Kind.Long;
+                            assert shift.getX().getStackKind() == JavaKind.Long;
                             return new IntegerTestNode(shift.getX(), ConstantNode.forLong(-1L >>> amount));
                         }
                     }
@@ -133,10 +133,10 @@
                     if (shift.getY().isConstant() && ((IntegerStamp) shift.getX().stamp()).isPositive()) {
                         int mask = shift.getShiftAmountMask();
                         int amount = shift.getY().asJavaConstant().asInt() & mask;
-                        if (shift.getX().getStackKind() == Kind.Int) {
+                        if (shift.getX().getStackKind() == JavaKind.Int) {
                             return new IntegerTestNode(shift.getX(), ConstantNode.forInt(-1 << amount));
                         } else {
-                            assert shift.getX().getStackKind() == Kind.Long;
+                            assert shift.getX().getStackKind() == JavaKind.Long;
                             return new IntegerTestNode(shift.getX(), ConstantNode.forLong(-1L << amount));
                         }
                     }
@@ -145,10 +145,10 @@
                     if (shift.getY().isConstant()) {
                         int mask = shift.getShiftAmountMask();
                         int amount = shift.getY().asJavaConstant().asInt() & mask;
-                        if (shift.getX().getStackKind() == Kind.Int) {
+                        if (shift.getX().getStackKind() == JavaKind.Int) {
                             return new IntegerTestNode(shift.getX(), ConstantNode.forInt(-1 << amount));
                         } else {
-                            assert shift.getX().getStackKind() == Kind.Long;
+                            assert shift.getX().getStackKind() == JavaKind.Long;
                             return new IntegerTestNode(shift.getX(), ConstantNode.forLong(-1L << amount));
                         }
                     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -40,8 +40,8 @@
 
     public IntegerLessThanNode(ValueNode x, ValueNode y) {
         super(TYPE, Condition.LT, false, x, y);
-        assert !x.getStackKind().isNumericFloat() && x.getStackKind() != Kind.Object;
-        assert !y.getStackKind().isNumericFloat() && y.getStackKind() != Kind.Object;
+        assert !x.getStackKind().isNumericFloat() && x.getStackKind() != JavaKind.Object;
+        assert !y.getStackKind().isNumericFloat() && y.getStackKind() != JavaKind.Object;
     }
 
     public static LogicNode create(ValueNode x, ValueNode y, ConstantReflectionProvider constantReflection) {
@@ -61,11 +61,11 @@
     protected ValueNode optimizeNormalizeCmp(Constant constant, NormalizeCompareNode normalizeNode, boolean mirrored) {
         PrimitiveConstant primitive = (PrimitiveConstant) constant;
         assert condition() == Condition.LT;
-        if (primitive.getKind() == Kind.Int && primitive.asInt() == 0) {
+        if (primitive.getJavaKind() == JavaKind.Int && primitive.asInt() == 0) {
             ValueNode a = mirrored ? normalizeNode.getY() : normalizeNode.getX();
             ValueNode b = mirrored ? normalizeNode.getX() : normalizeNode.getY();
 
-            if (normalizeNode.getX().getStackKind() == Kind.Double || normalizeNode.getX().getStackKind() == Kind.Float) {
+            if (normalizeNode.getX().getStackKind() == JavaKind.Double || normalizeNode.getX().getStackKind() == JavaKind.Float) {
                 return new FloatLessThanNode(a, b, mirrored ^ normalizeNode.isUnorderedLess);
             } else {
                 return new IntegerLessThanNode(a, b);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -68,10 +68,10 @@
                         }
                         return new LeftShiftNode(other.getX(), ConstantNode.forInt(total));
                     } else if ((other instanceof RightShiftNode || other instanceof UnsignedRightShiftNode) && otherAmount == amount) {
-                        if (getStackKind() == Kind.Long) {
+                        if (getStackKind() == JavaKind.Long) {
                             return new AndNode(other.getX(), ConstantNode.forLong(-1L << amount));
                         } else {
-                            assert getStackKind() == Kind.Int;
+                            assert getStackKind() == JavaKind.Int;
                             return new AndNode(other.getX(), ConstantNode.forInt(-1 << amount));
                         }
                     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -77,7 +77,7 @@
                 return forX;
             }
 
-            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getKind().isNumericInteger()) {
+            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getJavaKind().isNumericInteger()) {
                 long i = ((PrimitiveConstant) c).asLong();
                 if (i > 0 && CodeUtil.isPowerOf2(i)) {
                     return new LeftShiftNode(forX, ConstantNode.forInt(CodeUtil.log2(i)));
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -44,7 +44,7 @@
     protected final boolean isUnorderedLess;
 
     public NormalizeCompareNode(ValueNode x, ValueNode y, boolean isUnorderedLess) {
-        super(TYPE, StampFactory.forKind(Kind.Int), x, y);
+        super(TYPE, StampFactory.forKind(JavaKind.Int), x, y);
         this.isUnorderedLess = isUnorderedLess;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -73,10 +73,10 @@
     }
 
     private void virtualizeNonVirtualComparison(VirtualObjectNode virtual, ValueNode other, VirtualizerTool tool) {
-        if (!virtual.hasIdentity() && virtual.entryKind(0) == Kind.Boolean) {
+        if (!virtual.hasIdentity() && virtual.entryKind(0) == JavaKind.Boolean) {
             if (other.isConstant()) {
                 JavaConstant otherUnboxed = tool.getConstantReflectionProvider().unboxPrimitive(other.asJavaConstant());
-                if (otherUnboxed != null && otherUnboxed.getKind() == Kind.Boolean) {
+                if (otherUnboxed != null && otherUnboxed.getJavaKind() == JavaKind.Boolean) {
                     int expectedValue = otherUnboxed.asBoolean() ? 1 : 0;
                     IntegerEqualsNode equals = new IntegerEqualsNode(tool.getEntry(virtual, 0), ConstantNode.forInt(expectedValue, graph()));
                     tool.addNode(equals);
@@ -120,7 +120,7 @@
                     if (type.equals(metaAccess.lookupJavaType(Integer.class)) || type.equals(metaAccess.lookupJavaType(Long.class))) {
                         // both are virtual without identity: check contents
                         assert xVirtual.entryCount() == 1 && yVirtual.entryCount() == 1;
-                        assert xVirtual.entryKind(0).getStackKind() == Kind.Int || xVirtual.entryKind(0) == Kind.Long;
+                        assert xVirtual.entryKind(0).getStackKind() == JavaKind.Int || xVirtual.entryKind(0) == JavaKind.Long;
                         IntegerEqualsNode equals = new IntegerEqualsNode(tool.getEntry(xVirtual, 0), tool.getEntry(yVirtual, 0));
                         tool.addNode(equals);
                         tool.replaceWithValue(equals);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -76,7 +76,7 @@
                 return forX;
             }
 
-            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getKind().isNumericInteger()) {
+            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getJavaKind().isNumericInteger()) {
                 long rawY = ((PrimitiveConstant) c).asLong();
                 long mask = CodeUtil.mask(PrimitiveStamp.getBits(stamp()));
                 if ((rawY & mask) == mask) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,7 +44,7 @@
 
     public static final NodeClass<ReinterpretNode> TYPE = NodeClass.create(ReinterpretNode.class);
 
-    public ReinterpretNode(Kind to, ValueNode value) {
+    public ReinterpretNode(JavaKind to, ValueNode value) {
         this(StampFactory.forKind(to), value);
     }
 
@@ -88,19 +88,19 @@
         nodeValueMap.setResult(this, gen.emitReinterpret(kind, nodeValueMap.operand(getValue())));
     }
 
-    public static ValueNode reinterpret(Kind toKind, ValueNode value) {
+    public static ValueNode reinterpret(JavaKind toKind, ValueNode value) {
         return value.graph().unique(new ReinterpretNode(toKind, value));
     }
 
     @NodeIntrinsic
-    public static native float reinterpret(@ConstantNodeParameter Kind kind, int value);
+    public static native float reinterpret(@ConstantNodeParameter JavaKind kind, int value);
 
     @NodeIntrinsic
-    public static native int reinterpret(@ConstantNodeParameter Kind kind, float value);
+    public static native int reinterpret(@ConstantNodeParameter JavaKind kind, float value);
 
     @NodeIntrinsic
-    public static native double reinterpret(@ConstantNodeParameter Kind kind, long value);
+    public static native double reinterpret(@ConstantNodeParameter JavaKind kind, long value);
 
     @NodeIntrinsic
-    public static native long reinterpret(@ConstantNodeParameter Kind kind, double value);
+    public static native long reinterpret(@ConstantNodeParameter JavaKind kind, double value);
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -74,7 +74,7 @@
     public ValueNode canonical(CanonicalizerTool tool, ValueNode forX, ValueNode forY) {
         if (forX.isConstant() && forY.isConstant()) {
             JavaConstant amount = forY.asJavaConstant();
-            assert amount.getKind() == Kind.Int;
+            assert amount.getJavaKind() == JavaKind.Int;
             return ConstantNode.forPrimitive(stamp(), getOp(forX).foldConstant(forX.asConstant(), amount.asInt()));
         }
         return this;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -122,7 +122,7 @@
                     return reassociated;
                 }
             }
-            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getKind().isNumericInteger()) {
+            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getJavaKind().isNumericInteger()) {
                 long i = ((PrimitiveConstant) c).asLong();
                 if (i < 0 || ((IntegerStamp) StampFactory.forKind(forY.getStackKind())).contains(-i)) {
                     // Adding a negative is more friendly to the backend since adds are
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -68,10 +68,10 @@
                         }
                         return new UnsignedRightShiftNode(other.getX(), ConstantNode.forInt(total));
                     } else if (other instanceof LeftShiftNode && otherAmount == amount) {
-                        if (getStackKind() == Kind.Long) {
+                        if (getStackKind() == JavaKind.Long) {
                             return new AndNode(other.getX(), ConstantNode.forLong(-1L >>> amount));
                         } else {
-                            assert getStackKind() == Kind.Int;
+                            assert getStackKind() == JavaKind.Int;
                             return new AndNode(other.getX(), ConstantNode.forInt(-1 >>> amount));
                         }
                     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -77,7 +77,7 @@
                 return forX;
             }
 
-            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getKind().isNumericInteger()) {
+            if (c instanceof PrimitiveConstant && ((PrimitiveConstant) c).getJavaKind().isNumericInteger()) {
                 long rawY = ((PrimitiveConstant) c).asLong();
                 long mask = CodeUtil.mask(PrimitiveStamp.getBits(stamp()));
                 if ((rawY & mask) == mask) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -45,15 +45,15 @@
 
     public static final NodeClass<BoxNode> TYPE = NodeClass.create(BoxNode.class);
     @Input private ValueNode value;
-    private final Kind boxingKind;
+    private final JavaKind boxingKind;
 
-    public BoxNode(ValueNode value, ResolvedJavaType resultType, Kind boxingKind) {
+    public BoxNode(ValueNode value, ResolvedJavaType resultType, JavaKind boxingKind) {
         super(TYPE, StampFactory.exactNonNull(resultType));
         this.value = value;
         this.boxingKind = boxingKind;
     }
 
-    public Kind getBoxingKind() {
+    public JavaKind getBoxingKind() {
         return boxingKind;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -68,7 +68,7 @@
     }
 
     protected ForeignCallNode(NodeClass<? extends ForeignCallNode> c, ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) {
-        super(c, StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType())));
+        super(c, StampFactory.forKind(JavaKind.fromJavaClass(descriptor.getResultType())));
         this.arguments = new NodeInputList<>(this, arguments);
         this.descriptor = descriptor;
         this.foreignCalls = foreignCalls;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -40,10 +40,10 @@
 public final class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode, Canonicalizable {
 
     public static final NodeClass<JavaReadNode> TYPE = NodeClass.create(JavaReadNode.class);
-    protected final Kind readKind;
+    protected final JavaKind readKind;
     protected final boolean compressible;
 
-    public JavaReadNode(Kind readKind, AddressNode address, LocationIdentity location, BarrierType barrierType, boolean compressible) {
+    public JavaReadNode(JavaKind readKind, AddressNode address, LocationIdentity location, BarrierType barrierType, boolean compressible) {
         super(TYPE, address, location, StampFactory.forKind(readKind), barrierType);
         this.readKind = readKind;
         this.compressible = compressible;
@@ -57,7 +57,7 @@
         return true;
     }
 
-    public Kind getReadKind() {
+    public JavaKind getReadKind() {
         return readKind;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -39,10 +39,10 @@
 public final class JavaWriteNode extends AbstractWriteNode implements Lowerable, StateSplit, MemoryAccess, MemoryCheckpoint.Single {
 
     public static final NodeClass<JavaWriteNode> TYPE = NodeClass.create(JavaWriteNode.class);
-    protected final Kind writeKind;
+    protected final JavaKind writeKind;
     protected final boolean compressible;
 
-    public JavaWriteNode(Kind writeKind, AddressNode address, LocationIdentity location, ValueNode value, BarrierType barrierType, boolean compressible, boolean initialization) {
+    public JavaWriteNode(JavaKind writeKind, AddressNode address, LocationIdentity location, ValueNode value, BarrierType barrierType, boolean compressible, boolean initialization) {
         super(TYPE, address, location, value, barrierType, initialization);
         this.writeKind = writeKind;
         this.compressible = compressible;
@@ -56,7 +56,7 @@
         return true;
     }
 
-    public Kind getWriteKind() {
+    public JavaKind getWriteKind() {
         return writeKind;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -38,19 +38,19 @@
 
     public static final NodeClass<UnboxNode> TYPE = NodeClass.create(UnboxNode.class);
     @Input protected ValueNode value;
-    protected final Kind boxingKind;
+    protected final JavaKind boxingKind;
 
     public ValueNode getValue() {
         return value;
     }
 
-    public UnboxNode(ValueNode value, Kind boxingKind) {
+    public UnboxNode(ValueNode value, JavaKind boxingKind) {
         super(TYPE, StampFactory.forKind(boxingKind.getStackKind()));
         this.value = value;
         this.boxingKind = boxingKind;
     }
 
-    public static ValueNode create(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ValueNode value, Kind boxingKind) {
+    public static ValueNode create(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ValueNode value, JavaKind boxingKind) {
         ValueNode synonym = findSynonym(metaAccess, constantReflection, value, boxingKind);
         if (synonym != null) {
             return synonym;
@@ -58,7 +58,7 @@
         return new UnboxNode(value, boxingKind);
     }
 
-    public Kind getBoxingKind() {
+    public JavaKind getBoxingKind() {
         return boxingKind;
     }
 
@@ -92,11 +92,11 @@
         return this;
     }
 
-    private static ValueNode findSynonym(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ValueNode forValue, Kind boxingKind) {
+    private static ValueNode findSynonym(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ValueNode forValue, JavaKind boxingKind) {
         if (forValue.isConstant()) {
             JavaConstant constant = forValue.asJavaConstant();
             JavaConstant unboxed = constantReflection.unboxPrimitive(constant);
-            if (unboxed != null && unboxed.getKind() == boxingKind) {
+            if (unboxed != null && unboxed.getJavaKind() == boxingKind) {
                 return ConstantNode.forConstant(unboxed, metaAccess);
             }
         } else if (forValue instanceof BoxNode) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -37,10 +37,10 @@
     public static final NodeClass<UnsafeAccessNode> TYPE = NodeClass.create(UnsafeAccessNode.class);
     @Input ValueNode object;
     @Input ValueNode offset;
-    protected final Kind accessKind;
+    protected final JavaKind accessKind;
     protected final LocationIdentity locationIdentity;
 
-    protected UnsafeAccessNode(NodeClass<? extends UnsafeAccessNode> c, Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) {
+    protected UnsafeAccessNode(NodeClass<? extends UnsafeAccessNode> c, Stamp stamp, ValueNode object, ValueNode offset, JavaKind accessKind, LocationIdentity locationIdentity) {
         super(c, stamp);
         assert accessKind != null;
         this.object = object;
@@ -61,7 +61,7 @@
         return offset;
     }
 
-    public Kind accessKind() {
+    public JavaKind accessKind() {
         return accessKind;
     }
 
@@ -77,7 +77,7 @@
                 // No need for checking that the receiver is non-null. The field access includes
                 // the null check and if a field is found, the offset is so small that this is
                 // never a valid access of an arbitrary address.
-                if (field != null && field.getKind() == this.accessKind()) {
+                if (field != null && field.getJavaKind() == this.accessKind()) {
                     assert !graph().isAfterFloatingReadPhase() : "cannot add more precise memory location after floating read phase";
                     return cloneAsFieldAccess(field);
                 }
@@ -87,7 +87,7 @@
             ResolvedJavaType receiverType = StampTool.typeOrNull(object());
             // Try to build a better location identity.
             if (receiverType != null && receiverType.isArray()) {
-                LocationIdentity identity = NamedLocationIdentity.getArrayLocation(receiverType.getComponentType().getKind());
+                LocationIdentity identity = NamedLocationIdentity.getArrayLocation(receiverType.getComponentType().getJavaKind());
                 assert !graph().isAfterFloatingReadPhase() : "cannot add more precise memory location after floating read phase";
                 return cloneAsArrayAccess(offset(), identity);
             }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -56,7 +56,8 @@
     }
 
     public UnsafeCastNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) {
-        this(object, toType.getKind() == Kind.Object ? StampFactory.object(toType, exactType, nonNull || StampTool.isPointerNonNull(object.stamp()), true) : StampFactory.forKind(toType.getKind()));
+        this(object, toType.getJavaKind() == JavaKind.Object ? StampFactory.object(toType, exactType, nonNull || StampTool.isPointerNonNull(object.stamp()), true)
+                        : StampFactory.forKind(toType.getJavaKind()));
     }
 
     @Override
@@ -66,7 +67,7 @@
 
     @Override
     public Node canonical(CanonicalizerTool tool) {
-        assert getStackKind() == Kind.Object && object.getStackKind() == Kind.Object;
+        assert getStackKind() == JavaKind.Object && object.getStackKind() == JavaKind.Object;
 
         ObjectStamp my = (ObjectStamp) stamp();
         ObjectStamp other = (ObjectStamp) object.stamp();
@@ -104,7 +105,7 @@
 
     @Override
     public void generate(NodeLIRBuilderTool generator) {
-        assert getStackKind() == Kind.Object && object.getStackKind() == Kind.Object;
+        assert getStackKind() == JavaKind.Object && object.getStackKind() == JavaKind.Object;
         /*
          * The LIR only cares about the kind of an operand, not the actual type of an object. So we
          * do not have to introduce a new operand.
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCopyNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCopyNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,15 +44,15 @@
     @Input ValueNode destinationObject;
     @Input ValueNode sourceOffset;
     @Input ValueNode destinationOffset;
-    protected final Kind accessKind;
+    protected final JavaKind accessKind;
     protected final LocationIdentity locationIdentity;
     @OptionalInput(InputType.State) FrameState stateAfter;
 
-    public UnsafeCopyNode(ValueNode sourceObject, ValueNode sourceOffset, ValueNode destinationObject, ValueNode destinationOffset, Kind accessKind, LocationIdentity locationIdentity) {
+    public UnsafeCopyNode(ValueNode sourceObject, ValueNode sourceOffset, ValueNode destinationObject, ValueNode destinationOffset, JavaKind accessKind, LocationIdentity locationIdentity) {
         this(sourceObject, sourceOffset, destinationObject, destinationOffset, accessKind, locationIdentity, null);
     }
 
-    public UnsafeCopyNode(ValueNode sourceObject, ValueNode sourceOffset, ValueNode destinationObject, ValueNode destinationOffset, Kind accessKind, LocationIdentity locationIdentity,
+    public UnsafeCopyNode(ValueNode sourceObject, ValueNode sourceOffset, ValueNode destinationObject, ValueNode destinationOffset, JavaKind accessKind, LocationIdentity locationIdentity,
                     FrameState stateAfter) {
         super(TYPE, StampFactory.forVoid());
         this.sourceObject = sourceObject;
@@ -62,7 +62,7 @@
         this.accessKind = accessKind;
         this.locationIdentity = locationIdentity;
         this.stateAfter = stateAfter;
-        assert accessKind != Kind.Void && accessKind != Kind.Illegal;
+        assert accessKind != JavaKind.Void && accessKind != JavaKind.Illegal;
     }
 
     public ValueNode sourceObject() {
@@ -85,7 +85,7 @@
         return destinationOffset;
     }
 
-    public Kind accessKind() {
+    public JavaKind accessKind() {
         return accessKind;
     }
 
@@ -108,5 +108,5 @@
     }
 
     @NodeIntrinsic
-    public static native void copy(Object srcObject, long srcOffset, Object destObject, long destOffset, @ConstantNodeParameter Kind kind, @ConstantNodeParameter LocationIdentity locationIdentity);
+    public static native void copy(Object srcObject, long srcOffset, Object destObject, long destOffset, @ConstantNodeParameter JavaKind kind, @ConstantNodeParameter LocationIdentity locationIdentity);
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -41,11 +41,11 @@
     public static final NodeClass<UnsafeLoadNode> TYPE = NodeClass.create(UnsafeLoadNode.class);
     @OptionalInput(InputType.Condition) LogicNode guardingCondition;
 
-    public UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) {
+    public UnsafeLoadNode(ValueNode object, ValueNode offset, JavaKind accessKind, LocationIdentity locationIdentity) {
         this(object, offset, accessKind, locationIdentity, null);
     }
 
-    public UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity, LogicNode condition) {
+    public UnsafeLoadNode(ValueNode object, ValueNode offset, JavaKind accessKind, LocationIdentity locationIdentity, LogicNode condition) {
         super(TYPE, StampFactory.forKind(accessKind.getStackKind()), object, offset, accessKind, locationIdentity);
         this.guardingCondition = condition;
     }
@@ -71,7 +71,7 @@
 
                 if (entryIndex != -1) {
                     ValueNode entry = tool.getEntry(virtual, entryIndex);
-                    Kind entryKind = virtual.entryKind(entryIndex);
+                    JavaKind entryKind = virtual.entryKind(entryIndex);
                     if (entry.getStackKind() == getStackKind() || entryKind == accessKind()) {
                         tool.replaceWith(entry);
                     }
@@ -91,5 +91,5 @@
     }
 
     @NodeIntrinsic
-    public static native Object load(Object object, long offset, @ConstantNodeParameter Kind kind, @ConstantNodeParameter LocationIdentity locationIdentity);
+    public static native Object load(Object object, long offset, @ConstantNodeParameter JavaKind kind, @ConstantNodeParameter LocationIdentity locationIdentity);
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,15 +44,15 @@
     @Input ValueNode value;
     @OptionalInput(InputType.State) FrameState stateAfter;
 
-    public UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity) {
+    public UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, JavaKind accessKind, LocationIdentity locationIdentity) {
         this(object, offset, value, accessKind, locationIdentity, null);
     }
 
-    public UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity, FrameState stateAfter) {
+    public UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, JavaKind accessKind, LocationIdentity locationIdentity, FrameState stateAfter) {
         super(TYPE, StampFactory.forVoid(), object, offset, accessKind, locationIdentity);
         this.value = value;
         this.stateAfter = stateAfter;
-        assert accessKind != Kind.Void && accessKind != Kind.Illegal;
+        assert accessKind != JavaKind.Void && accessKind != JavaKind.Illegal;
     }
 
     public FrameState stateAfter() {
@@ -88,17 +88,17 @@
                 long off = indexValue.asJavaConstant().asLong();
                 int entryIndex = virtual.entryIndexForOffset(off, accessKind());
                 if (entryIndex != -1) {
-                    Kind entryKind = virtual.entryKind(entryIndex);
+                    JavaKind entryKind = virtual.entryKind(entryIndex);
                     ValueNode entry = tool.getEntry(virtual, entryIndex);
                     if (entry.getStackKind() == value.getStackKind() || entryKind == accessKind()) {
                         tool.setVirtualEntry(virtual, entryIndex, value(), true);
                         tool.delete();
                     } else {
-                        if ((accessKind() == Kind.Long || accessKind() == Kind.Double) && entryKind == Kind.Int) {
+                        if ((accessKind() == JavaKind.Long || accessKind() == JavaKind.Double) && entryKind == JavaKind.Int) {
                             int nextIndex = virtual.entryIndexForOffset(off + 4, entryKind);
                             if (nextIndex != -1) {
-                                Kind nextKind = virtual.entryKind(nextIndex);
-                                if (nextKind == Kind.Int) {
+                                JavaKind nextKind = virtual.entryKind(nextIndex);
+                                if (nextKind == JavaKind.Int) {
                                     tool.setVirtualEntry(virtual, entryIndex, value(), true);
                                     tool.setVirtualEntry(virtual, nextIndex, ConstantNode.forConstant(JavaConstant.forIllegal(), tool.getMetaAccessProvider(), graph()), true);
                                     tool.delete();
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -39,7 +39,7 @@
 
     public static final NodeClass<AccessIndexedNode> TYPE = NodeClass.create(AccessIndexedNode.class);
     @Input protected ValueNode index;
-    protected final Kind elementKind;
+    protected final JavaKind elementKind;
 
     public ValueNode index() {
         return index;
@@ -53,7 +53,7 @@
      * @param index the instruction producing the index
      * @param elementKind the kind of the elements of the array
      */
-    protected AccessIndexedNode(NodeClass<? extends AccessIndexedNode> c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) {
+    protected AccessIndexedNode(NodeClass<? extends AccessIndexedNode> c, Stamp stamp, ValueNode array, ValueNode index, JavaKind elementKind) {
         super(c, stamp, array);
         this.index = index;
         this.elementKind = elementKind;
@@ -64,7 +64,7 @@
      *
      * @return the element type
      */
-    public Kind elementKind() {
+    public JavaKind elementKind() {
         return elementKind;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,10 +44,10 @@
     @Input ValueNode offset;
     @Input ValueNode newValue;
 
-    protected final Kind valueKind;
+    protected final JavaKind valueKind;
     protected final LocationIdentity locationIdentity;
 
-    public AtomicReadAndWriteNode(ValueNode object, ValueNode offset, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) {
+    public AtomicReadAndWriteNode(ValueNode object, ValueNode offset, ValueNode newValue, JavaKind valueKind, LocationIdentity locationIdentity) {
         super(TYPE, StampFactory.forKind(newValue.getStackKind()));
         this.object = object;
         this.offset = offset;
@@ -68,7 +68,7 @@
         return newValue;
     }
 
-    public Kind getValueKind() {
+    public JavaKind getValueKind() {
         return valueKind;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -44,11 +44,11 @@
     @Input ValueNode expected;
     @Input ValueNode newValue;
 
-    protected final Kind valueKind;
+    protected final JavaKind valueKind;
     protected final LocationIdentity locationIdentity;
 
-    public CompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) {
-        super(TYPE, StampFactory.forKind(Kind.Boolean.getStackKind()));
+    public CompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, JavaKind valueKind, LocationIdentity locationIdentity) {
+        super(TYPE, StampFactory.forKind(JavaKind.Boolean.getStackKind()));
         assert expected.stamp().isCompatible(newValue.stamp());
         this.object = object;
         this.offset = offset;
@@ -74,7 +74,7 @@
         return newValue;
     }
 
-    public Kind getValueKind() {
+    public JavaKind getValueKind() {
         return valueKind;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -45,37 +45,37 @@
      * A non-null value indicating the worst case element type. Mainly useful for distinguishing
      * Object arrays from primitive arrays.
      */
-    protected final Kind knownElementKind;
+    protected final JavaKind knownElementKind;
 
     public DynamicNewArrayNode(ValueNode elementType, ValueNode length, boolean fillContents) {
         this(TYPE, elementType, length, fillContents, null, null, null);
     }
 
-    public DynamicNewArrayNode(@InjectedNodeParameter MetaAccessProvider metaAccess, ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) {
+    public DynamicNewArrayNode(@InjectedNodeParameter MetaAccessProvider metaAccess, ValueNode elementType, ValueNode length, boolean fillContents, JavaKind knownElementKind) {
         this(TYPE, elementType, length, fillContents, knownElementKind, null, metaAccess);
     }
 
-    private static Stamp computeStamp(Kind knownElementKind, MetaAccessProvider metaAccess) {
+    private static Stamp computeStamp(JavaKind knownElementKind, MetaAccessProvider metaAccess) {
         if (knownElementKind != null && metaAccess != null) {
-            ResolvedJavaType arrayType = metaAccess.lookupJavaType(knownElementKind == Kind.Object ? Object.class : knownElementKind.toJavaClass()).getArrayClass();
+            ResolvedJavaType arrayType = metaAccess.lookupJavaType(knownElementKind == JavaKind.Object ? Object.class : knownElementKind.toJavaClass()).getArrayClass();
             return StampFactory.declaredNonNull(arrayType);
         }
         return StampFactory.objectNonNull();
     }
 
-    protected DynamicNewArrayNode(NodeClass<? extends DynamicNewArrayNode> c, ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind, FrameState stateBefore,
+    protected DynamicNewArrayNode(NodeClass<? extends DynamicNewArrayNode> c, ValueNode elementType, ValueNode length, boolean fillContents, JavaKind knownElementKind, FrameState stateBefore,
                     MetaAccessProvider metaAccess) {
         super(c, computeStamp(knownElementKind, metaAccess), length, fillContents, stateBefore);
         this.elementType = elementType;
         this.knownElementKind = knownElementKind;
-        assert knownElementKind != Kind.Void && knownElementKind != Kind.Illegal;
+        assert knownElementKind != JavaKind.Void && knownElementKind != JavaKind.Illegal;
     }
 
     public ValueNode getElementType() {
         return elementType;
     }
 
-    public Kind getKnownElementKind() {
+    public JavaKind getKnownElementKind() {
         return knownElementKind;
     }
 
@@ -109,17 +109,17 @@
     }
 
     public static boolean throwsIllegalArgumentException(ResolvedJavaType elementType) {
-        return elementType.getKind() == Kind.Void;
+        return elementType.getJavaKind() == JavaKind.Void;
     }
 
     @NodeIntrinsic
-    private static native Object newArray(Class<?> componentType, int length, @ConstantNodeParameter boolean fillContents, @ConstantNodeParameter Kind knownElementKind);
+    private static native Object newArray(Class<?> componentType, int length, @ConstantNodeParameter boolean fillContents, @ConstantNodeParameter JavaKind knownElementKind);
 
-    public static Object newArray(Class<?> componentType, int length, Kind knownElementKind) {
+    public static Object newArray(Class<?> componentType, int length, JavaKind knownElementKind) {
         return newArray(componentType, length, true, knownElementKind);
     }
 
-    public static Object newUninitializedArray(Class<?> componentType, int length, Kind knownElementKind) {
+    public static Object newUninitializedArray(Class<?> componentType, int length, JavaKind knownElementKind) {
         return newArray(componentType, length, false, knownElementKind);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -55,7 +55,7 @@
         super(TYPE);
         this.mirror = mirror;
         this.object = object;
-        assert mirror.getStackKind() == Kind.Object : mirror.getStackKind();
+        assert mirror.getStackKind() == JavaKind.Object : mirror.getStackKind();
     }
 
     @Override
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -51,8 +51,8 @@
     }
 
     private static Stamp createStamp(ResolvedJavaField field) {
-        Kind kind = field.getKind();
-        if (kind == Kind.Object && field.getType() instanceof ResolvedJavaType) {
+        JavaKind kind = field.getJavaKind();
+        if (kind == JavaKind.Object && field.getType() instanceof ResolvedJavaType) {
             return StampFactory.declared((ResolvedJavaType) field.getType());
         } else {
             return StampFactory.forKind(kind);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -48,11 +48,11 @@
      * @param index the instruction producing the index
      * @param elementKind the element type
      */
-    public LoadIndexedNode(ValueNode array, ValueNode index, Kind elementKind) {
+    public LoadIndexedNode(ValueNode array, ValueNode index, JavaKind elementKind) {
         this(TYPE, createStamp(array, elementKind), array, index, elementKind);
     }
 
-    public static ValueNode create(ValueNode array, ValueNode index, Kind elementKind, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection) {
+    public static ValueNode create(ValueNode array, ValueNode index, JavaKind elementKind, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection) {
         ValueNode constant = tryConstantFold(array, index, metaAccess, constantReflection);
         if (constant != null) {
             return constant;
@@ -60,13 +60,13 @@
         return new LoadIndexedNode(array, index, elementKind);
     }
 
-    protected LoadIndexedNode(NodeClass<? extends LoadIndexedNode> c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) {
+    protected LoadIndexedNode(NodeClass<? extends LoadIndexedNode> c, Stamp stamp, ValueNode array, ValueNode index, JavaKind elementKind) {
         super(c, stamp, array, index, elementKind);
     }
 
-    private static Stamp createStamp(ValueNode array, Kind kind) {
+    private static Stamp createStamp(ValueNode array, JavaKind kind) {
         ResolvedJavaType type = StampTool.typeOrNull(array);
-        if (kind == Kind.Object && type != null) {
+        if (kind == JavaKind.Object && type != null) {
             return StampFactory.declaredTrusted(type.getComponentType());
         } else {
             return StampFactory.forKind(kind);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -67,7 +67,7 @@
     }
 
     public LoweredCompareAndSwapNode(AddressNode address, LocationIdentity location, ValueNode expectedValue, ValueNode newValue, BarrierType barrierType) {
-        super(TYPE, address, location, StampFactory.forKind(Kind.Boolean.getStackKind()), barrierType);
+        super(TYPE, address, location, StampFactory.forKind(JavaKind.Boolean.getStackKind()), barrierType);
         assert expectedValue.getStackKind() == newValue.getStackKind();
         this.expectedValue = expectedValue;
         this.newValue = newValue;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -70,7 +70,7 @@
         return invokeKind() == InvokeKind.Static;
     }
 
-    public Kind returnKind() {
+    public JavaKind returnKind() {
         return targetMethod().getSignature().getReturnKind();
     }
 
@@ -235,8 +235,8 @@
 
     @Override
     public Stamp returnStamp() {
-        Kind returnKind = targetMethod().getSignature().getReturnKind();
-        if (returnKind == Kind.Object && returnType instanceof ResolvedJavaType) {
+        JavaKind returnKind = targetMethod().getSignature().getReturnKind();
+        if (returnKind == JavaKind.Object && returnType instanceof ResolvedJavaType) {
             return StampFactory.declared((ResolvedJavaType) returnType);
         } else {
             return StampFactory.forKind(returnKind);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -96,6 +96,6 @@
 
     /* Factored out in a separate method so that subclasses can override it. */
     protected ConstantNode defaultElementValue() {
-        return ConstantNode.defaultForKind(elementType().getKind(), graph());
+        return ConstantNode.defaultForKind(elementType().getJavaKind(), graph());
     }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -90,6 +90,6 @@
 
     /* Factored out in a separate method so that subclasses can override it. */
     protected ConstantNode defaultFieldValue(ResolvedJavaField field) {
-        return ConstantNode.defaultForKind(field.getType().getKind(), graph());
+        return ConstantNode.defaultForKind(field.getType().getJavaKind(), graph());
     }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -60,7 +60,7 @@
         return value;
     }
 
-    public StoreIndexedNode(ValueNode array, ValueNode index, Kind elementKind, ValueNode value) {
+    public StoreIndexedNode(ValueNode array, ValueNode index, JavaKind elementKind, ValueNode value) {
         super(TYPE, StampFactory.forVoid(), array, index, elementKind);
         this.value = value;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -71,7 +71,7 @@
 
     @Override
     public boolean isSorted() {
-        Kind kind = value().getStackKind();
+        JavaKind kind = value().getStackKind();
         if (kind.isNumericInteger()) {
             JavaConstant lastKey = null;
             for (int i = 0; i < keyCount(); i++) {
@@ -123,7 +123,7 @@
             int survivingEdge = keySuccessorIndex(keyCount());
             for (int i = 0; i < keyCount(); i++) {
                 JavaConstant typeHub = keyAt(i);
-                assert constant.getKind() == typeHub.getKind();
+                assert constant.getJavaKind() == typeHub.getJavaKind();
                 Boolean equal = tool.getConstantReflection().constantEquals(constant, typeHub);
                 if (equal == null) {
                     /* We don't know if this key is a match or not, so we cannot simplify. */
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/memory/address/OffsetAddressNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/memory/address/OffsetAddressNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -35,7 +35,7 @@
 
 /**
  * Represents an address that is composed of a base and an offset. The base can be either a
- * {@link Kind#Object}, a word-sized integer or another pointer. The offset must be a word-sized
+ * {@link JavaKind#Object}, a word-sized integer or another pointer. The offset must be a word-sized
  * integer.
  */
 @NodeInfo(allowedUsageTypes = InputType.Association)
@@ -93,7 +93,7 @@
         if (receiverType == null) {
             return false;
         }
-        ResolvedJavaField field = receiverType.findInstanceFieldWithOffset(offset.asJavaConstant().asLong(), Kind.Void);
+        ResolvedJavaField field = receiverType.findInstanceFieldWithOffset(offset.asJavaConstant().asLong(), JavaKind.Void);
         if (field == null) {
             // field was not declared by receiverType
             return false;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -39,9 +39,9 @@
      * Reconstructs the array index from an address node that was created as a lowering of an
      * indexed access to an array.
      *
-     * @param elementKind the {@link Kind} of the array elements
+     * @param elementKind the {@link JavaKind} of the array elements
      * @param address an {@link AddressNode} pointing to an element in an array
      * @return a node that gives the index of the element
      */
-    ValueNode reconstructArrayIndex(Kind elementKind, AddressNode address);
+    ValueNode reconstructArrayIndex(JavaKind elementKind, AddressNode address);
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/UncheckedInterfaceProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/UncheckedInterfaceProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -35,7 +35,7 @@
     Stamp uncheckedStamp();
 
     static Stamp uncheckedOrNull(JavaType type, Stamp originalStamp) {
-        if (type instanceof ResolvedJavaType && type.getKind() == Kind.Object) {
+        if (type instanceof ResolvedJavaType && type.getJavaKind() == JavaKind.Object) {
             Stamp unchecked = StampFactory.declaredTrusted((ResolvedJavaType) type);
             if (!unchecked.equals(originalStamp)) {
                 return unchecked;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -86,7 +86,7 @@
      *
      * @param index the index to be set.
      * @param value the new value for the given index.
-     * @param unsafe if true, then mismatching value {@link Kind}s will be accepted.
+     * @param unsafe if true, then mismatching value {@link JavaKind}s will be accepted.
      */
     void setVirtualEntry(VirtualObjectNode virtualObject, int index, ValueNode value, boolean unsafe);
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -83,14 +83,14 @@
     }
 
     @Override
-    public int entryIndexForOffset(long constantOffset, Kind expectedEntryKind) {
+    public int entryIndexForOffset(long constantOffset, JavaKind expectedEntryKind) {
         return entryIndexForOffset(constantOffset, expectedEntryKind, componentType, length);
     }
 
-    public static int entryIndexForOffset(long constantOffset, Kind expectedEntryKind, ResolvedJavaType componentType, int length) {
+    public static int entryIndexForOffset(long constantOffset, JavaKind expectedEntryKind, ResolvedJavaType componentType, int length) {
         int baseOffset;
         int indexScale;
-        switch (componentType.getKind()) {
+        switch (componentType.getJavaKind()) {
             case Boolean:
                 baseOffset = Unsafe.ARRAY_BOOLEAN_BASE_OFFSET;
                 indexScale = Unsafe.ARRAY_BOOLEAN_INDEX_SCALE;
@@ -133,7 +133,7 @@
         long offset;
         if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN && componentType.isPrimitive()) {
             // On big endian, we do just get expect the type be right aligned in this memory slot
-            offset = constantOffset - (componentType.getKind().getByteCount() - Math.min(componentType.getKind().getByteCount(), 4 + expectedEntryKind.getByteCount()));
+            offset = constantOffset - (componentType.getJavaKind().getByteCount() - Math.min(componentType.getJavaKind().getByteCount(), 4 + expectedEntryKind.getByteCount()));
         } else {
             offset = constantOffset;
         }
@@ -149,9 +149,9 @@
     }
 
     @Override
-    public Kind entryKind(int index) {
+    public JavaKind entryKind(int index) {
         assert index >= 0 && index < length;
-        return componentType.getKind();
+        return componentType.getJavaKind();
     }
 
     @Override
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -33,14 +33,14 @@
 public final class VirtualBoxingNode extends VirtualInstanceNode {
 
     public static final NodeClass<VirtualBoxingNode> TYPE = NodeClass.create(VirtualBoxingNode.class);
-    protected final Kind boxingKind;
+    protected final JavaKind boxingKind;
 
-    public VirtualBoxingNode(ResolvedJavaType type, Kind boxingKind) {
+    public VirtualBoxingNode(ResolvedJavaType type, JavaKind boxingKind) {
         super(TYPE, type, false);
         this.boxingKind = boxingKind;
     }
 
-    public Kind getBoxingKind() {
+    public JavaKind getBoxingKind() {
         return boxingKind;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -96,14 +96,14 @@
     }
 
     @Override
-    public int entryIndexForOffset(long constantOffset, Kind expectedEntryKind) {
+    public int entryIndexForOffset(long constantOffset, JavaKind expectedEntryKind) {
         return fieldIndex(type.findInstanceFieldWithOffset(constantOffset, expectedEntryKind));
     }
 
     @Override
-    public Kind entryKind(int index) {
+    public JavaKind entryKind(int index) {
         assert index >= 0 && index < fields.length;
-        return fields[index].getKind();
+        return fields[index].getJavaKind();
     }
 
     @Override
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -86,12 +86,12 @@
      * @param expectedEntryKind Specifies which type is expected at this offset (Is important when
      *            doing implicit casts, especially on big endian systems.
      */
-    public abstract int entryIndexForOffset(long constantOffset, Kind expectedEntryKind);
+    public abstract int entryIndexForOffset(long constantOffset, JavaKind expectedEntryKind);
 
     /**
-     * Returns the {@link Kind} of the entry at the given index.
+     * Returns the {@link JavaKind} of the entry at the given index.
      */
-    public abstract Kind entryKind(int index);
+    public abstract JavaKind entryKind(int index);
 
     /**
      * Returns an exact duplicate of this virtual object node, which has not been added to the graph
--- a/graal/com.oracle.graal.phases.common.test/src/com/oracle/graal/phases/common/test/StampFactoryTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.phases.common.test/src/com/oracle/graal/phases/common/test/StampFactoryTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -43,8 +43,8 @@
         Method method = StampFactoryTest.class.getMethod("test", Integer.TYPE, Object.class, Double.TYPE);
         MetaAccessProvider metaAccess = Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getProviders().getMetaAccess();
         Stamp[] parameterStamps = StampFactory.createParameterStamps(metaAccess.lookupJavaMethod(method));
-        Stamp[] expected = {StampFactory.declaredNonNull(metaAccess.lookupJavaType(StampFactoryTest.class)), StampFactory.forKind(Kind.Int),
-                        StampFactory.declared(metaAccess.lookupJavaType(Object.class)), StampFactory.forKind(Kind.Double)};
+        Stamp[] expected = {StampFactory.declaredNonNull(metaAccess.lookupJavaType(StampFactoryTest.class)), StampFactory.forKind(JavaKind.Int),
+                        StampFactory.declared(metaAccess.lookupJavaType(Object.class)), StampFactory.forKind(JavaKind.Double)};
         Assert.assertArrayEquals(expected, parameterStamps);
     }
 }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -196,7 +196,7 @@
             // this piece of code handles phis
             if (!(merge instanceof LoopBeginNode)) {
                 for (PhiNode phi : merge.phis()) {
-                    if (phi instanceof ValuePhiNode && phi.getStackKind() == Kind.Object) {
+                    if (phi instanceof ValuePhiNode && phi.getStackKind() == JavaKind.Object) {
                         ValueNode firstValue = phi.valueAt(0);
                         ResolvedJavaType type = getNodeType(firstValue);
                         boolean nonNull = knownNonNull.contains(firstValue);
@@ -454,13 +454,13 @@
                     return null;
                 }
                 IntegerBelowNode below = (IntegerBelowNode) guard.condition();
-                if (below.getX().getStackKind() == Kind.Int && below.getX().isConstant() && !below.getY().isConstant()) {
+                if (below.getX().getStackKind() == JavaKind.Int && below.getX().isConstant() && !below.getY().isConstant()) {
                     Stamp stamp = StampTool.unsignedCompare(below.getX().stamp(), below.getY().stamp());
                     if (stamp != null) {
                         return new GuardedStamp(below.getY(), stamp, guard);
                     }
                 }
-                if (below.getY().getStackKind() == Kind.Int && below.getY().isConstant() && !below.getX().isConstant()) {
+                if (below.getY().getStackKind() == JavaKind.Int && below.getY().isConstant() && !below.getX().isConstant()) {
                     Stamp stamp = StampTool.unsignedCompare(below.getX().stamp(), below.getY().stamp());
                     if (stamp != null) {
                         return new GuardedStamp(below.getX(), stamp, guard);
@@ -793,7 +793,7 @@
                 assert !(replacementAnchor instanceof FloatingNode) : "unsafe to mix unlowered Checkcast with floating guards";
                 PiNode piNode;
                 if (isNull) {
-                    ConstantNode nullObject = ConstantNode.defaultForKind(Kind.Object, graph);
+                    ConstantNode nullObject = ConstantNode.defaultForKind(JavaKind.Object, graph);
                     piNode = graph.unique(new PiNode(nullObject, nullObject.stamp(), replacementAnchor.asNode()));
                 } else {
                     piNode = graph.unique(new PiNode(object, StampFactory.declaredTrusted(type, nonNull), replacementAnchor.asNode()));
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -446,7 +446,7 @@
     protected static void processFrameStates(Invoke invoke, StructuredGraph inlineGraph, Map<Node, Node> duplicates, FrameState stateAtExceptionEdge, boolean alwaysDuplicateStateAfter) {
         FrameState stateAtReturn = invoke.stateAfter();
         FrameState outerFrameState = null;
-        Kind invokeReturnKind = invoke.asNode().getStackKind();
+        JavaKind invokeReturnKind = invoke.asNode().getStackKind();
         for (FrameState original : inlineGraph.getNodes(FrameState.TYPE)) {
             FrameState frameState = (FrameState) duplicates.get(original);
             if (frameState != null && frameState.isAlive()) {
@@ -462,7 +462,7 @@
                     boolean alwaysDuplicateStateAfter) {
 
         FrameState stateAtReturn = invoke.stateAfter();
-        Kind invokeReturnKind = invoke.asNode().getStackKind();
+        JavaKind invokeReturnKind = invoke.asNode().getStackKind();
 
         if (frameState.bci == BytecodeFrame.AFTER_BCI) {
             FrameState stateAfterReturn = stateAtReturn;
@@ -496,7 +496,7 @@
              */
             FrameState stateAfterException = stateAtExceptionEdge;
             if (frameState.stackSize() > 0 && stateAtExceptionEdge.stackAt(0) != frameState.stackAt(0)) {
-                stateAfterException = stateAtExceptionEdge.duplicateModified(Kind.Object, Kind.Object, frameState.stackAt(0));
+                stateAfterException = stateAtExceptionEdge.duplicateModified(JavaKind.Object, JavaKind.Object, frameState.stackAt(0));
             }
             frameState.replaceAndDelete(stateAfterException);
             return stateAfterException;
@@ -653,7 +653,7 @@
         assert !callTarget.isStatic() : callTarget.targetMethod();
         StructuredGraph graph = callTarget.graph();
         ValueNode firstParam = callTarget.arguments().get(0);
-        if (firstParam.getStackKind() == Kind.Object) {
+        if (firstParam.getStackKind() == JavaKind.Object) {
             Stamp paramStamp = firstParam.stamp();
             Stamp stamp = paramStamp.join(StampFactory.declaredNonNull(callTarget.targetMethod().getDeclaringClass()));
             if (!StampTool.isPointerNonNull(firstParam)) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -24,7 +24,7 @@
 
 import com.oracle.graal.debug.*;
 import jdk.internal.jvmci.meta.ResolvedJavaType;
-import jdk.internal.jvmci.meta.Kind;
+import jdk.internal.jvmci.meta.JavaKind;
 import jdk.internal.jvmci.meta.DeoptimizationReason;
 import jdk.internal.jvmci.meta.DeoptimizationAction;
 import jdk.internal.jvmci.meta.ResolvedJavaMethod;
@@ -169,7 +169,7 @@
         returnMerge.setStateAfter(invoke.stateAfter());
 
         PhiNode returnValuePhi = null;
-        if (invoke.asNode().getStackKind() != Kind.Void) {
+        if (invoke.asNode().getStackKind() != JavaKind.Void) {
             returnValuePhi = graph.addWithoutUnique(new ValuePhiNode(invoke.asNode().stamp().unrestricted(), returnMerge));
         }
 
@@ -183,8 +183,9 @@
 
             FixedNode exceptionSux = exceptionEdge.next();
             graph.addBeforeFixed(exceptionSux, exceptionMerge);
-            exceptionObjectPhi = graph.addWithoutUnique(new ValuePhiNode(StampFactory.forKind(Kind.Object), exceptionMerge));
-            exceptionMerge.setStateAfter(exceptionEdge.stateAfter().duplicateModified(invoke.stateAfter().bci, true, Kind.Object, new Kind[]{Kind.Object}, new ValueNode[]{exceptionObjectPhi}));
+            exceptionObjectPhi = graph.addWithoutUnique(new ValuePhiNode(StampFactory.forKind(JavaKind.Object), exceptionMerge));
+            exceptionMerge.setStateAfter(exceptionEdge.stateAfter().duplicateModified(invoke.stateAfter().bci, true, JavaKind.Object, new JavaKind[]{JavaKind.Object},
+                            new ValueNode[]{exceptionObjectPhi}));
         }
 
         // create one separate block for each invoked method
@@ -363,8 +364,8 @@
         result.asNode().replaceFirstInput(result.callTarget(), callTarget);
         result.setUseForInlining(useForInlining);
 
-        Kind kind = invoke.asNode().getStackKind();
-        if (kind != Kind.Void) {
+        JavaKind kind = invoke.asNode().getStackKind();
+        if (kind != JavaKind.Void) {
             FrameState stateAfter = invoke.stateAfter();
             stateAfter = stateAfter.duplicate(stateAfter.bci);
             stateAfter.replaceFirstInput(invoke.asNode(), result.asNode());
@@ -380,7 +381,7 @@
 
             ExceptionObjectNode newExceptionEdge = (ExceptionObjectNode) exceptionEdge.copyWithInputs();
             // set new state (pop old exception object, push new one)
-            newExceptionEdge.setStateAfter(stateAfterException.duplicateModified(Kind.Object, Kind.Object, newExceptionEdge));
+            newExceptionEdge.setStateAfter(stateAfterException.duplicateModified(JavaKind.Object, JavaKind.Object, newExceptionEdge));
 
             EndNode endNode = graph.add(new EndNode());
             newExceptionEdge.setNext(endNode);
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyUsageWithEquals.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyUsageWithEquals.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -72,7 +72,7 @@
     private static boolean isEqualsMethod(ResolvedJavaMethod method) {
         if (method.getName().equals("equals")) {
             Signature sig = method.getSignature();
-            if (sig.getReturnKind() == Kind.Boolean) {
+            if (sig.getReturnKind() == JavaKind.Boolean) {
                 if (sig.getParameterCount(false) == 1) {
                     ResolvedJavaType ptype = (ResolvedJavaType) sig.getParameterType(0, method.getDeclaringClass());
                     if (ptype.isJavaLangObject()) {
--- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, 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
@@ -480,7 +480,7 @@
             prefix = "B";
         } else if (node instanceof ValueNode) {
             ValueNode value = (ValueNode) node;
-            if (value.getStackKind() == Kind.Illegal) {
+            if (value.getStackKind() == JavaKind.Illegal) {
                 prefix = "v";
             } else {
                 prefix = String.valueOf(value.getStackKind().getTypeChar());
--- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -41,13 +41,13 @@
     public static final NodeClass<AMD64CountLeadingZerosNode> TYPE = NodeClass.create(AMD64CountLeadingZerosNode.class);
 
     public AMD64CountLeadingZerosNode(ValueNode value) {
-        super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
-        assert value.getStackKind() == Kind.Int || value.getStackKind() == Kind.Long;
+        super(TYPE, StampFactory.forInteger(JavaKind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
+        assert value.getStackKind() == JavaKind.Int || value.getStackKind() == JavaKind.Long;
     }
 
     @Override
     public boolean inferStamp() {
-        assert value.getStackKind() == Kind.Int || value.getStackKind() == Kind.Long;
+        assert value.getStackKind() == JavaKind.Int || value.getStackKind() == JavaKind.Long;
         IntegerStamp valueStamp = (IntegerStamp) getValue().stamp();
         long mask = CodeUtil.mask(valueStamp.getBits());
         // Don't count zeros from the mask in the result.
@@ -55,13 +55,13 @@
         assert adjust == 0 || adjust == 32;
         int min = Long.numberOfLeadingZeros(valueStamp.upMask() & mask) - adjust;
         int max = Long.numberOfLeadingZeros(valueStamp.downMask() & mask) - adjust;
-        return updateStamp(StampFactory.forInteger(Kind.Int, min, max));
+        return updateStamp(StampFactory.forInteger(JavaKind.Int, min, max));
     }
 
     public static ValueNode tryFold(ValueNode value) {
         if (value.isConstant()) {
             JavaConstant c = value.asJavaConstant();
-            if (value.getStackKind() == Kind.Int) {
+            if (value.getStackKind() == JavaKind.Int) {
                 return ConstantNode.forInt(Integer.numberOfLeadingZeros(c.asInt()));
             } else {
                 return ConstantNode.forInt(Long.numberOfLeadingZeros(c.asLong()));
--- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -41,8 +41,8 @@
     public static final NodeClass<AMD64CountTrailingZerosNode> TYPE = NodeClass.create(AMD64CountTrailingZerosNode.class);
 
     public AMD64CountTrailingZerosNode(ValueNode value) {
-        super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
-        assert value.getStackKind() == Kind.Int || value.getStackKind() == Kind.Long;
+        super(TYPE, StampFactory.forInteger(JavaKind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
+        assert value.getStackKind() == JavaKind.Int || value.getStackKind() == JavaKind.Long;
     }
 
     @Override
@@ -51,13 +51,13 @@
         long mask = CodeUtil.mask(valueStamp.getBits());
         int min = Long.numberOfTrailingZeros(valueStamp.upMask() & mask);
         int max = Long.numberOfTrailingZeros(valueStamp.downMask() & mask);
-        return updateStamp(StampFactory.forInteger(Kind.Int, min, max));
+        return updateStamp(StampFactory.forInteger(JavaKind.Int, min, max));
     }
 
     public static ValueNode tryFold(ValueNode value) {
         if (value.isConstant()) {
             JavaConstant c = value.asJavaConstant();
-            if (value.getStackKind() == Kind.Int) {
+            if (value.getStackKind() == JavaKind.Int) {
                 return ConstantNode.forInt(Integer.numberOfTrailingZeros(c.asInt()));
             } else {
                 return ConstantNode.forInt(Long.numberOfTrailingZeros(c.asLong()));
--- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java	Tue Sep 08 19:57:39 2015 +0200
@@ -43,13 +43,13 @@
 
     public static void register(Plugins plugins, ForeignCallsProvider foreignCalls, AMD64 arch) {
         InvocationPlugins invocationPlugins = plugins.getInvocationPlugins();
-        registerIntegerLongPlugins(invocationPlugins, IntegerSubstitutions.class, Kind.Int, arch);
-        registerIntegerLongPlugins(invocationPlugins, LongSubstitutions.class, Kind.Long, arch);
+        registerIntegerLongPlugins(invocationPlugins, IntegerSubstitutions.class, JavaKind.Int, arch);
+        registerIntegerLongPlugins(invocationPlugins, LongSubstitutions.class, JavaKind.Long, arch);
         registerUnsafePlugins(invocationPlugins);
         registerMathPlugins(invocationPlugins, foreignCalls);
     }
 
-    private static void registerIntegerLongPlugins(InvocationPlugins plugins, Class<?> substituteDeclaringClass, Kind kind, AMD64 arch) {
+    private static void registerIntegerLongPlugins(InvocationPlugins plugins, Class<?> substituteDeclaringClass, JavaKind kind, AMD64 arch) {
         Class<?> declaringClass = kind.toBoxedJavaClass();
         Class<?> type = kind.toJavaClass();
         Registration r = new Registration(plugins, declaringClass);
@@ -58,9 +58,9 @@
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
                     ValueNode folded = AMD64CountLeadingZerosNode.tryFold(value);
                     if (folded != null) {
-                        b.addPush(Kind.Int, folded);
+                        b.addPush(JavaKind.Int, folded);
                     } else {
-                        b.addPush(Kind.Int, new AMD64CountLeadingZerosNode(value));
+                        b.addPush(JavaKind.Int, new AMD64CountLeadingZerosNode(value));
                     }
                     return true;
                 }
@@ -73,9 +73,9 @@
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
                     ValueNode folded = AMD64CountTrailingZerosNode.tryFold(value);
                     if (folded != null) {
-                        b.addPush(Kind.Int, folded);
+                        b.addPush(JavaKind.Int, folded);
                     } else {
-                        b.addPush(Kind.Int, new AMD64CountTrailingZerosNode(value));
+                        b.addPush(JavaKind.Int, new AMD64CountTrailingZerosNode(value));
                     }
                     return true;
                 }
@@ -89,13 +89,13 @@
         Registration r = new Registration(plugins, Math.class);
         r.register1("log", Double.TYPE, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Double, b.recursiveAppend(AMD64MathIntrinsicNode.create(value, LOG)));
+                b.push(JavaKind.Double, b.recursiveAppend(AMD64MathIntrinsicNode.create(value, LOG)));
                 return true;
             }
         });
         r.register1("log10", Double.TYPE, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Double, b.recursiveAppend(AMD64MathIntrinsicNode.create(value, LOG10)));
+                b.push(JavaKind.Double, b.recursiveAppend(AMD64MathIntrinsicNode.create(value, LOG10)));
                 return true;
             }
         });
@@ -109,8 +109,8 @@
     private static void registerUnsafePlugins(InvocationPlugins plugins) {
         Registration r = new Registration(plugins, Unsafe.class);
 
-        for (Kind kind : new Kind[]{Kind.Int, Kind.Long, Kind.Object}) {
-            Class<?> javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass();
+        for (JavaKind kind : new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}) {
+            Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass();
 
             r.register4("getAndSet" + kind.name(), Receiver.class, Object.class, long.class, javaClass, new InvocationPlugin() {
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unsafe, ValueNode object, ValueNode offset, ValueNode value) {
@@ -121,7 +121,7 @@
                     return true;
                 }
             });
-            if (kind != Kind.Object) {
+            if (kind != JavaKind.Object) {
                 r.register4("getAndAdd" + kind.name(), Receiver.class, Object.class, long.class, javaClass, new InvocationPlugin() {
                     public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unsafe, ValueNode object, ValueNode offset, ValueNode delta) {
                         // Emits a null-check for the otherwise unused receiver
@@ -135,7 +135,7 @@
             }
         }
 
-        for (Kind kind : new Kind[]{Kind.Char, Kind.Short, Kind.Int, Kind.Long}) {
+        for (JavaKind kind : new JavaKind[]{JavaKind.Char, JavaKind.Short, JavaKind.Int, JavaKind.Long}) {
             Class<?> javaClass = kind.toJavaClass();
             r.registerOptional3("get" + kind.name() + "Unaligned", Receiver.class, Object.class, long.class, new UnsafeGetPlugin(kind, false));
             r.registerOptional4("put" + kind.name() + "Unaligned", Receiver.class, Object.class, long.class, javaClass, new UnsafePutPlugin(kind, false));
--- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathIntrinsicNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathIntrinsicNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -70,7 +70,7 @@
     }
 
     protected AMD64MathIntrinsicNode(ValueNode value, Operation op) {
-        super(TYPE, StampFactory.forKind(Kind.Double), value);
+        super(TYPE, StampFactory.forKind(JavaKind.Double), value);
         assert value.stamp() instanceof FloatStamp && PrimitiveStamp.getBits(value.stamp()) == 64;
         this.operation = op;
     }
--- a/graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java	Tue Sep 08 19:57:39 2015 +0200
@@ -35,12 +35,12 @@
 
     public static void register(Plugins plugins, ForeignCallsProvider foreignCalls) {
         InvocationPlugins invocationPlugins = plugins.getInvocationPlugins();
-        registerIntegerLongPlugins(invocationPlugins, IntegerSubstitutions.class, Kind.Int);
-        registerIntegerLongPlugins(invocationPlugins, LongSubstitutions.class, Kind.Long);
+        registerIntegerLongPlugins(invocationPlugins, IntegerSubstitutions.class, JavaKind.Int);
+        registerIntegerLongPlugins(invocationPlugins, LongSubstitutions.class, JavaKind.Long);
         registerMathPlugins(invocationPlugins, foreignCalls);
     }
 
-    private static void registerIntegerLongPlugins(InvocationPlugins plugins, Class<?> substituteDeclaringClass, Kind kind) {
+    private static void registerIntegerLongPlugins(InvocationPlugins plugins, Class<?> substituteDeclaringClass, JavaKind kind) {
         Class<?> declaringClass = kind.toBoxedJavaClass();
         Class<?> type = kind.toJavaClass();
         Registration r = new Registration(plugins, declaringClass);
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -72,7 +72,7 @@
     @Test
     public void testBitCountInt() {
         ValueNode result = parseAndInline("bitCountIntSnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 8, 24), result.stamp());
+        Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 8, 24), result.stamp());
     }
 
     public static int bitCountIntEmptySnippet(int v) {
@@ -82,7 +82,7 @@
     @Test
     public void testBitCountIntEmpty() {
         ValueNode result = parseAndInline("bitCountIntEmptySnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 0, 24), result.stamp());
+        Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 24), result.stamp());
     }
 
     @Test
@@ -98,7 +98,7 @@
     @Test
     public void testBitCountLong() {
         ValueNode result = parseAndInline("bitCountLongSnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 8, 40), result.stamp());
+        Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 8, 40), result.stamp());
     }
 
     public static int bitCountLongEmptySnippet(long v) {
@@ -108,7 +108,7 @@
     @Test
     public void testBitCountLongEmpty() {
         ValueNode result = parseAndInline("bitCountLongEmptySnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 0, 40), result.stamp());
+        Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 0, 40), result.stamp());
     }
 
     /*
@@ -132,7 +132,7 @@
     @Test
     public void testScanForwardInt() {
         ValueNode result = parseAndInline("scanForwardIntSnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 4, 8), result.stamp());
+        Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 4, 8), result.stamp());
     }
 
     public static int scanForwardLongConstantSnippet() {
@@ -152,7 +152,7 @@
     @Test
     public void testScanForwardLong() {
         ValueNode result = parseAndInline("scanForwardLongSnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 32), result.stamp());
+        Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 24, 32), result.stamp());
     }
 
     public static int scanForwardLongEmptySnippet(long v) {
@@ -164,7 +164,7 @@
     @Test
     public void testScanForwardLongEmpty() {
         ValueNode result = parseAndInline("scanForwardLongEmptySnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 64), result.stamp());
+        Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 24, 64), result.stamp());
     }
 
     /*
@@ -190,7 +190,7 @@
         /* This test isn't valid unless the BitScanReverseNode intrinsic is used. */
         ValueNode result = parseAndInline("scanReverseIntSnippet", BitScanReverseNode.class);
         if (result != null) {
-            Assert.assertEquals(StampFactory.forInteger(Kind.Int, 16, 20), result.stamp());
+            Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 16, 20), result.stamp());
         }
     }
 
@@ -215,7 +215,7 @@
         /* This test isn't valid unless the BitScanReverseNode intrinsic is used. */
         ValueNode result = parseAndInline("scanReverseLongSnippet", BitScanReverseNode.class);
         if (result != null) {
-            Assert.assertEquals(StampFactory.forInteger(Kind.Int, 48, 64), result.stamp());
+            Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 48, 64), result.stamp());
         }
     }
 
@@ -230,7 +230,7 @@
         /* This test isn't valid unless the BitScanReverseNode intrinsic is used. */
         ValueNode result = parseAndInline("scanReverseLongEmptySnippet", BitScanReverseNode.class);
         if (result != null) {
-            Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 64), result.stamp());
+            Assert.assertEquals(StampFactory.forInteger(JavaKind.Int, 24, 64), result.stamp());
         }
     }
 
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ObjectAccessTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ObjectAccessTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -42,7 +42,7 @@
 public class ObjectAccessTest extends GraalCompilerTest implements Snippets {
 
     private static final LocationIdentity ID = NamedLocationIdentity.mutable("ObjectAccessTestID");
-    private static final Kind[] KINDS = new Kind[]{Kind.Byte, Kind.Char, Kind.Short, Kind.Int, Kind.Long, Kind.Float, Kind.Double, Kind.Object};
+    private static final JavaKind[] KINDS = new JavaKind[]{JavaKind.Byte, JavaKind.Char, JavaKind.Short, JavaKind.Int, JavaKind.Long, JavaKind.Float, JavaKind.Double, JavaKind.Object};
     private final ReplacementsImpl installer;
 
     public ObjectAccessTest() {
@@ -56,47 +56,47 @@
 
     @Test
     public void testRead1() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertRead(parseEager("read" + kind.name() + "1", AllowAssumptions.YES), kind, true, ID);
         }
     }
 
     @Test
     public void testRead2() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertRead(parseEager("read" + kind.name() + "2", AllowAssumptions.YES), kind, true, ID);
         }
     }
 
     @Test
     public void testRead3() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertRead(parseEager("read" + kind.name() + "3", AllowAssumptions.YES), kind, true, LocationIdentity.any());
         }
     }
 
     @Test
     public void testWrite1() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertWrite(parseEager("write" + kind.name() + "1", AllowAssumptions.YES), true, ID);
         }
     }
 
     @Test
     public void testWrite2() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertWrite(parseEager("write" + kind.name() + "2", AllowAssumptions.YES), true, ID);
         }
     }
 
     @Test
     public void testWrite3() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertWrite(parseEager("write" + kind.name() + "3", AllowAssumptions.YES), true, LocationIdentity.any());
         }
     }
 
-    private static void assertRead(StructuredGraph graph, Kind kind, boolean indexConvert, LocationIdentity locationIdentity) {
+    private static void assertRead(StructuredGraph graph, JavaKind kind, boolean indexConvert, LocationIdentity locationIdentity) {
         JavaReadNode read = (JavaReadNode) graph.start().next();
         Assert.assertEquals(kind.getStackKind(), read.stamp().getStackKind());
 
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PEGraphDecoderTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PEGraphDecoderTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -102,7 +102,7 @@
             @Override
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unused, ValueNode obj, ValueNode offset) {
                 AddressNode address = b.add(new OffsetAddressNode(obj, offset));
-                ReadNode read = b.addPush(Kind.Int, new ReadNode(address, LocationIdentity.any(), StampFactory.forKind(Kind.Int), BarrierType.NONE));
+                ReadNode read = b.addPush(JavaKind.Int, new ReadNode(address, LocationIdentity.any(), StampFactory.forKind(JavaKind.Int), BarrierType.NONE));
                 read.setGuard(AbstractBeginNode.prevBegin(read));
                 return true;
             }
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PointerTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PointerTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -46,7 +46,7 @@
 public class PointerTest extends GraalCompilerTest implements Snippets {
 
     private static final LocationIdentity ID = NamedLocationIdentity.mutable("ID");
-    private static final Kind[] KINDS = new Kind[]{Kind.Byte, Kind.Char, Kind.Short, Kind.Int, Kind.Long, Kind.Float, Kind.Double, Kind.Object};
+    private static final JavaKind[] KINDS = new JavaKind[]{JavaKind.Byte, JavaKind.Char, JavaKind.Short, JavaKind.Int, JavaKind.Long, JavaKind.Float, JavaKind.Double, JavaKind.Object};
     private final TargetDescription target;
     private final ReplacementsImpl installer;
 
@@ -62,47 +62,47 @@
 
     @Test
     public void testRead1() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertRead(parseEager("read" + kind.name() + "1", AllowAssumptions.YES), kind, true, ID);
         }
     }
 
     @Test
     public void testRead2() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertRead(parseEager("read" + kind.name() + "2", AllowAssumptions.YES), kind, true, ID);
         }
     }
 
     @Test
     public void testRead3() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertRead(parseEager("read" + kind.name() + "3", AllowAssumptions.YES), kind, true, LocationIdentity.any());
         }
     }
 
     @Test
     public void testWrite1() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertWrite(parseEager("write" + kind.name() + "1", AllowAssumptions.YES), true, ID);
         }
     }
 
     @Test
     public void testWrite2() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertWrite(parseEager("write" + kind.name() + "2", AllowAssumptions.YES), true, ID);
         }
     }
 
     @Test
     public void testWrite3() {
-        for (Kind kind : KINDS) {
+        for (JavaKind kind : KINDS) {
             assertWrite(parseEager("write" + kind.name() + "3", AllowAssumptions.YES), true, LocationIdentity.any());
         }
     }
 
-    private void assertRead(StructuredGraph graph, Kind kind, boolean indexConvert, LocationIdentity locationIdentity) {
+    private void assertRead(StructuredGraph graph, JavaKind kind, boolean indexConvert, LocationIdentity locationIdentity) {
         WordCastNode cast = (WordCastNode) graph.start().next();
 
         JavaReadNode read = (JavaReadNode) cast.next();
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/SubstitutionsTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/SubstitutionsTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -77,7 +77,7 @@
         @Input(Guard) GuardingNode guard;
 
         public TestValue(ValueNode guard) {
-            super(TYPE, StampFactory.forKind(Kind.Int));
+            super(TYPE, StampFactory.forKind(JavaKind.Int));
             this.guard = (GuardingNode) guard;
         }
 
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -110,7 +110,7 @@
         testGraph("unsafeDirectMemoryRead");
         testGraph("unsafeDirectMemoryWrite");
 
-        long address = unsafe.allocateMemory(8 * Kind.values().length);
+        long address = unsafe.allocateMemory(8 * JavaKind.values().length);
         for (Unsafe unsafeArg : new Unsafe[]{unsafe, null}) {
             test("unsafeCompareAndSwapInt", unsafeArg, supply(() -> new Foo()), fooOffset("i"));
             test("unsafeCompareAndSwapLong", unsafeArg, supply(() -> new Foo()), fooOffset("l"));
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -144,7 +144,7 @@
         ValueNode value = box.getValue();
         if (value.isConstant()) {
             JavaConstant sourceConstant = value.asJavaConstant();
-            if (sourceConstant.getKind() != box.getBoxingKind() && sourceConstant.getKind().isNumericInteger()) {
+            if (sourceConstant.getJavaKind() != box.getBoxingKind() && sourceConstant.getJavaKind().isNumericInteger()) {
                 switch (box.getBoxingKind()) {
                     case Boolean:
                         sourceConstant = JavaConstant.forBoolean(sourceConstant.asLong() != 0L);
@@ -161,7 +161,7 @@
                 }
             }
             JavaConstant boxedConstant = constantReflection.boxPrimitive(sourceConstant);
-            if (boxedConstant != null && sourceConstant.getKind() == box.getBoxingKind()) {
+            if (boxedConstant != null && sourceConstant.getJavaKind() == box.getBoxingKind()) {
                 return ConstantNode.forConstant(boxedConstant, metaAccess, box.graph());
             }
         }
@@ -170,12 +170,12 @@
 
     public static class Templates extends AbstractTemplates {
 
-        private final EnumMap<Kind, SnippetInfo> boxSnippets = new EnumMap<>(Kind.class);
-        private final EnumMap<Kind, SnippetInfo> unboxSnippets = new EnumMap<>(Kind.class);
+        private final EnumMap<JavaKind, SnippetInfo> boxSnippets = new EnumMap<>(JavaKind.class);
+        private final EnumMap<JavaKind, SnippetInfo> unboxSnippets = new EnumMap<>(JavaKind.class);
 
         public Templates(Providers providers, SnippetReflectionProvider snippetReflection, TargetDescription target) {
             super(providers, snippetReflection, target);
-            for (Kind kind : new Kind[]{Kind.Boolean, Kind.Byte, Kind.Char, Kind.Double, Kind.Float, Kind.Int, Kind.Long, Kind.Short}) {
+            for (JavaKind kind : new JavaKind[]{JavaKind.Boolean, JavaKind.Byte, JavaKind.Char, JavaKind.Double, JavaKind.Float, JavaKind.Int, JavaKind.Long, JavaKind.Short}) {
                 boxSnippets.put(kind, snippet(BoxingSnippets.class, kind.getJavaName() + "ValueOf"));
                 unboxSnippets.put(kind, snippet(BoxingSnippets.class, kind.getJavaName() + "Value"));
             }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -143,17 +143,17 @@
     }
 
     protected void lowerLoadFieldNode(LoadFieldNode loadField, LoweringTool tool) {
-        assert loadField.getStackKind() != Kind.Illegal;
+        assert loadField.getStackKind() != JavaKind.Illegal;
         StructuredGraph graph = loadField.graph();
         ResolvedJavaField field = loadField.field();
         ValueNode object = loadField.isStatic() ? staticFieldBase(graph, field) : loadField.object();
-        Stamp loadStamp = loadStamp(loadField.stamp(), field.getKind());
+        Stamp loadStamp = loadStamp(loadField.stamp(), field.getJavaKind());
 
         AddressNode address = createFieldAddress(graph, object, field);
         assert address != null : "Field that is loaded must not be eliminated: " + field.getDeclaringClass().toJavaName(true) + "." + field.getName();
 
         ReadNode memoryRead = graph.add(new ReadNode(address, field.getLocationIdentity(), loadStamp, fieldLoadBarrierType(field)));
-        ValueNode readValue = implicitLoadConvert(graph, field.getKind(), memoryRead);
+        ValueNode readValue = implicitLoadConvert(graph, field.getJavaKind(), memoryRead);
         loadField.replaceAtUsages(readValue);
         graph.replaceFixed(loadField, memoryRead);
 
@@ -171,7 +171,7 @@
         StructuredGraph graph = storeField.graph();
         ResolvedJavaField field = storeField.field();
         ValueNode object = storeField.isStatic() ? staticFieldBase(graph, field) : storeField.object();
-        ValueNode value = implicitStoreConvert(graph, storeField.field().getKind(), storeField.value());
+        ValueNode value = implicitStoreConvert(graph, storeField.field().getJavaKind(), storeField.value());
         AddressNode address = createFieldAddress(graph, object, field);
         assert address != null;
 
@@ -188,7 +188,7 @@
         }
     }
 
-    public AddressNode createArrayAddress(StructuredGraph graph, ValueNode array, Kind elementKind, ValueNode index) {
+    public AddressNode createArrayAddress(StructuredGraph graph, ValueNode array, JavaKind elementKind, ValueNode index) {
         ValueNode wordIndex;
         if (target.wordSize > 4) {
             wordIndex = graph.unique(new SignExtendNode(index, target.wordSize * 8));
@@ -208,7 +208,7 @@
 
     protected void lowerLoadIndexedNode(LoadIndexedNode loadIndexed, LoweringTool tool) {
         StructuredGraph graph = loadIndexed.graph();
-        Kind elementKind = loadIndexed.elementKind();
+        JavaKind elementKind = loadIndexed.elementKind();
         Stamp loadStamp = loadStamp(loadIndexed.stamp(), elementKind);
 
         PiNode pi = getBoundsCheckedIndex(loadIndexed, tool, null);
@@ -244,12 +244,12 @@
             boundsCheck = pi.getGuard();
         }
 
-        Kind elementKind = storeIndexed.elementKind();
+        JavaKind elementKind = storeIndexed.elementKind();
 
         ValueNode value = storeIndexed.value();
         ValueNode array = storeIndexed.array();
         FixedWithNextNode checkCastNode = null;
-        if (elementKind == Kind.Object && !StampTool.isPointerAlwaysNull(value)) {
+        if (elementKind == JavaKind.Object && !StampTool.isPointerAlwaysNull(value)) {
             /* Array store check. */
             ResolvedJavaType arrayType = StampTool.typeOrNull(array);
             if (arrayType != null && StampTool.isExactType(array)) {
@@ -328,7 +328,7 @@
 
     protected void lowerCompareAndSwapNode(CompareAndSwapNode cas) {
         StructuredGraph graph = cas.graph();
-        Kind valueKind = cas.getValueKind();
+        JavaKind valueKind = cas.getValueKind();
 
         ValueNode expectedValue = implicitStoreConvert(graph, valueKind, cas.expected());
         ValueNode newValue = implicitStoreConvert(graph, valueKind, cas.newValue());
@@ -341,7 +341,7 @@
 
     protected void lowerAtomicReadAndWriteNode(AtomicReadAndWriteNode n) {
         StructuredGraph graph = n.graph();
-        Kind valueKind = n.getValueKind();
+        JavaKind valueKind = n.getValueKind();
 
         ValueNode newValue = implicitStoreConvert(graph, valueKind, n.newValue());
 
@@ -377,8 +377,8 @@
     }
 
     protected ReadNode createUnsafeRead(StructuredGraph graph, UnsafeLoadNode load, GuardingNode guard) {
-        boolean compressible = load.accessKind() == Kind.Object;
-        Kind readKind = load.accessKind();
+        boolean compressible = load.accessKind() == JavaKind.Object;
+        JavaKind readKind = load.accessKind();
         Stamp loadStamp = loadStamp(load.stamp(), readKind, compressible);
         AddressNode address = createUnsafeAddress(graph, load.object(), load.offset());
         ReadNode memoryRead = graph.add(new ReadNode(address, load.getLocationIdentity(), loadStamp, guard, BarrierType.NONE));
@@ -394,8 +394,8 @@
 
     protected void lowerUnsafeStoreNode(UnsafeStoreNode store) {
         StructuredGraph graph = store.graph();
-        boolean compressible = store.value().getStackKind() == Kind.Object;
-        Kind valueKind = store.accessKind();
+        boolean compressible = store.value().getStackKind() == JavaKind.Object;
+        JavaKind valueKind = store.accessKind();
         ValueNode value = implicitStoreConvert(graph, valueKind, store.value(), compressible);
         AddressNode address = createUnsafeAddress(graph, store.object(), store.offset());
         WriteNode write = graph.add(new WriteNode(address, store.getLocationIdentity(), value, unsafeStoreBarrierType(store)));
@@ -405,7 +405,7 @@
 
     protected void lowerJavaReadNode(JavaReadNode read) {
         StructuredGraph graph = read.graph();
-        Kind valueKind = read.getReadKind();
+        JavaKind valueKind = read.getReadKind();
         Stamp loadStamp = loadStamp(read.stamp(), valueKind, read.isCompressible());
 
         ReadNode memoryRead = graph.add(new ReadNode(read.getAddress(), read.getLocationIdentity(), loadStamp, read.getBarrierType()));
@@ -424,7 +424,7 @@
 
     protected void lowerJavaWriteNode(JavaWriteNode write) {
         StructuredGraph graph = write.graph();
-        Kind valueKind = write.getWriteKind();
+        JavaKind valueKind = write.getWriteKind();
         ValueNode value = implicitStoreConvert(graph, valueKind, write.value(), write.isCompressible());
 
         WriteNode memoryWrite = graph.add(new WriteNode(write.getAddress(), write.getLocationIdentity(), value, write.getBarrierType(), write.isInitialization()));
@@ -462,12 +462,12 @@
                         omittedValues.set(valuePos);
                     } else if (!(value.isConstant() && value.asConstant().isDefaultForKind())) {
                         // Constant.illegal is always the defaultForKind, so it is skipped
-                        Kind valueKind = value.getStackKind();
-                        Kind entryKind = virtual.entryKind(i);
+                        JavaKind valueKind = value.getStackKind();
+                        JavaKind entryKind = virtual.entryKind(i);
 
                         // Truffle requires some leniency in terms of what can be put where:
                         assert valueKind.getStackKind() == entryKind.getStackKind() ||
-                                        (valueKind == Kind.Long || valueKind == Kind.Double || (valueKind == Kind.Int && virtual instanceof VirtualArrayNode));
+                                        (valueKind == JavaKind.Long || valueKind == JavaKind.Double || (valueKind == JavaKind.Int && virtual instanceof VirtualArrayNode));
                         AddressNode address = null;
                         BarrierType barrierType = null;
                         if (virtual instanceof VirtualInstanceNode) {
@@ -502,7 +502,7 @@
                         assert value instanceof VirtualObjectNode;
                         ValueNode allocValue = allocations[commit.getVirtualObjects().indexOf(value)];
                         if (!(allocValue.isConstant() && allocValue.asConstant().isDefaultForKind())) {
-                            assert virtual.entryKind(i) == Kind.Object && allocValue.getStackKind() == Kind.Object;
+                            assert virtual.entryKind(i) == JavaKind.Object && allocValue.getStackKind() == JavaKind.Object;
                             AddressNode address;
                             BarrierType barrierType;
                             if (virtual instanceof VirtualInstanceNode) {
@@ -514,7 +514,7 @@
                                 barrierType = BarrierType.PRECISE;
                             }
                             if (address != null) {
-                                WriteNode write = new WriteNode(address, initLocationIdentity(), implicitStoreConvert(graph, Kind.Object, allocValue), barrierType);
+                                WriteNode write = new WriteNode(address, initLocationIdentity(), implicitStoreConvert(graph, JavaKind.Object, allocValue), barrierType);
                                 graph.addBeforeFixed(commit, graph.add(write));
                             }
                         }
@@ -566,25 +566,25 @@
     }
 
     protected BarrierType fieldStoreBarrierType(ResolvedJavaField field) {
-        if (field.getKind() == Kind.Object) {
+        if (field.getJavaKind() == JavaKind.Object) {
             return BarrierType.IMPRECISE;
         }
         return BarrierType.NONE;
     }
 
-    protected BarrierType arrayStoreBarrierType(Kind elementKind) {
-        if (elementKind == Kind.Object) {
+    protected BarrierType arrayStoreBarrierType(JavaKind elementKind) {
+        if (elementKind == JavaKind.Object) {
             return BarrierType.PRECISE;
         }
         return BarrierType.NONE;
     }
 
-    protected BarrierType fieldInitializationBarrier(Kind entryKind) {
-        return entryKind == Kind.Object ? BarrierType.IMPRECISE : BarrierType.NONE;
+    protected BarrierType fieldInitializationBarrier(JavaKind entryKind) {
+        return entryKind == JavaKind.Object ? BarrierType.IMPRECISE : BarrierType.NONE;
     }
 
-    protected BarrierType arrayInitializationBarrier(Kind entryKind) {
-        return entryKind == Kind.Object ? BarrierType.PRECISE : BarrierType.NONE;
+    protected BarrierType arrayInitializationBarrier(JavaKind entryKind) {
+        return entryKind == JavaKind.Object ? BarrierType.PRECISE : BarrierType.NONE;
     }
 
     protected BarrierType unsafeStoreBarrierType(UnsafeStoreNode store) {
@@ -600,7 +600,7 @@
     }
 
     protected BarrierType storeBarrierType(ValueNode object, ValueNode value) {
-        if (value.getStackKind() == Kind.Object) {
+        if (value.getStackKind() == JavaKind.Object) {
             ResolvedJavaType type = StampTool.typeOrNull(object);
             if (type != null && !type.isArray()) {
                 return BarrierType.IMPRECISE;
@@ -617,19 +617,19 @@
 
     protected abstract int arrayLengthOffset();
 
-    protected abstract int arrayBaseOffset(Kind elementKind);
+    protected abstract int arrayBaseOffset(JavaKind elementKind);
 
-    public int arrayScalingFactor(Kind elementKind) {
+    public int arrayScalingFactor(JavaKind elementKind) {
         return target.arch.getPlatformKind(elementKind).getSizeInBytes();
     }
 
     protected abstract LocationIdentity initLocationIdentity();
 
-    public Stamp loadStamp(Stamp stamp, Kind kind) {
+    public Stamp loadStamp(Stamp stamp, JavaKind kind) {
         return loadStamp(stamp, kind, true);
     }
 
-    protected Stamp loadStamp(Stamp stamp, Kind kind, @SuppressWarnings("unused") boolean compressible) {
+    protected Stamp loadStamp(Stamp stamp, JavaKind kind, @SuppressWarnings("unused") boolean compressible) {
         switch (kind) {
             case Boolean:
             case Byte:
@@ -641,12 +641,12 @@
         return stamp;
     }
 
-    public ValueNode implicitLoadConvert(StructuredGraph graph, Kind kind, ValueNode value) {
+    public ValueNode implicitLoadConvert(StructuredGraph graph, JavaKind kind, ValueNode value) {
         return implicitLoadConvert(graph, kind, value, true);
 
     }
 
-    protected ValueNode implicitLoadConvert(StructuredGraph graph, Kind kind, ValueNode value, @SuppressWarnings("unused") boolean compressible) {
+    protected ValueNode implicitLoadConvert(StructuredGraph graph, JavaKind kind, ValueNode value, @SuppressWarnings("unused") boolean compressible) {
         switch (kind) {
             case Byte:
             case Short:
@@ -658,11 +658,11 @@
         return value;
     }
 
-    public ValueNode implicitStoreConvert(StructuredGraph graph, Kind kind, ValueNode value) {
+    public ValueNode implicitStoreConvert(StructuredGraph graph, JavaKind kind, ValueNode value) {
         return implicitStoreConvert(graph, kind, value, true);
     }
 
-    protected ValueNode implicitStoreConvert(StructuredGraph graph, Kind kind, ValueNode value, @SuppressWarnings("unused") boolean compressible) {
+    protected ValueNode implicitStoreConvert(StructuredGraph graph, JavaKind kind, ValueNode value, @SuppressWarnings("unused") boolean compressible) {
         switch (kind) {
             case Boolean:
             case Byte:
@@ -721,7 +721,7 @@
     }
 
     @Override
-    public ValueNode reconstructArrayIndex(Kind elementKind, AddressNode address) {
+    public ValueNode reconstructArrayIndex(JavaKind elementKind, AddressNode address) {
         StructuredGraph graph = address.graph();
         ValueNode offset = ((OffsetAddressNode) address).getOffset();
 
@@ -730,6 +730,6 @@
 
         int shift = CodeUtil.log2(arrayScalingFactor(elementKind));
         ValueNode ret = graph.unique(new RightShiftNode(scaledIndex, ConstantNode.forInt(shift, graph)));
-        return IntegerConvertNode.convert(ret, StampFactory.forKind(Kind.Int), graph);
+        return IntegerConvertNode.convert(ret, StampFactory.forKind(JavaKind.Int), graph);
     }
 }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -166,12 +166,12 @@
         InvokeNode invoke = append(new InvokeNode(callTarget, bci));
 
         if (frameStateBuilder != null) {
-            if (invoke.getStackKind() != Kind.Void) {
-                frameStateBuilder.push(returnType.getKind(), invoke);
+            if (invoke.getStackKind() != JavaKind.Void) {
+                frameStateBuilder.push(returnType.getJavaKind(), invoke);
             }
             invoke.setStateAfter(frameStateBuilder.create(bci, invoke));
-            if (invoke.getStackKind() != Kind.Void) {
-                frameStateBuilder.pop(returnType.getKind());
+            if (invoke.getStackKind() != JavaKind.Void) {
+                frameStateBuilder.pop(returnType.getJavaKind());
             }
         }
         return invoke;
@@ -197,14 +197,14 @@
         int argIndex = 0;
         if (!isStatic) {
             ResolvedJavaType expectedType = method.getDeclaringClass();
-            Kind expected = wordTypes == null ? expectedType.getKind() : wordTypes.asKind(expectedType);
-            Kind actual = args[argIndex++].stamp().getStackKind();
+            JavaKind expected = wordTypes == null ? expectedType.getJavaKind() : wordTypes.asKind(expectedType);
+            JavaKind actual = args[argIndex++].stamp().getStackKind();
             assert expected == actual : graph + ": wrong kind of value for receiver argument of call to " + method + " [" + actual + " != " + expected + "]";
         }
         for (int i = 0; i != signature.getParameterCount(false); i++) {
             JavaType expectedType = signature.getParameterType(i, method.getDeclaringClass());
-            Kind expected = wordTypes == null ? expectedType.getKind().getStackKind() : wordTypes.asKind(expectedType).getStackKind();
-            Kind actual = args[argIndex++].stamp().getStackKind();
+            JavaKind expected = wordTypes == null ? expectedType.getJavaKind().getStackKind() : wordTypes.asKind(expectedType).getStackKind();
+            JavaKind actual = args[argIndex++].stamp().getStackKind();
             if (expected != actual) {
                 throw new AssertionError(graph + ": wrong kind of value for argument " + i + " of call to " + method + " [" + actual + " != " + expected + "]");
             }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -82,9 +82,9 @@
         ResolvedJavaType accessingClass = method.getDeclaringClass();
         for (int i = 0; i < max; i++) {
             JavaType type = sig.getParameterType(i, accessingClass).resolve(accessingClass);
-            Kind kind = type.getKind();
+            JavaKind kind = type.getJavaKind();
             Stamp stamp;
-            if (kind == Kind.Object && type instanceof ResolvedJavaType) {
+            if (kind == JavaKind.Object && type instanceof ResolvedJavaType) {
                 stamp = StampFactory.declared((ResolvedJavaType) type);
             } else {
                 stamp = StampFactory.forKind(kind);
@@ -132,8 +132,8 @@
         return added;
     }
 
-    public void push(Kind kind, ValueNode value) {
-        assert kind != Kind.Void;
+    public void push(JavaKind kind, ValueNode value) {
+        assert kind != JavaKind.Void;
         assert returnValue == null;
         returnValue = value;
     }
@@ -207,7 +207,7 @@
     public StructuredGraph buildGraph(InvocationPlugin plugin) {
         Receiver receiver = method.isStatic() ? null : this;
         if (plugin.execute(this, method, receiver, arguments)) {
-            assert (returnValue != null) == (method.getSignature().getReturnKind() != Kind.Void) : method;
+            assert (returnValue != null) == (method.getSignature().getReturnKind() != JavaKind.Void) : method;
             append(new ReturnNode(returnValue));
             return graph;
         }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/Log.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/Log.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -57,27 +57,27 @@
     private static native void printf(@ConstantNodeParameter ForeignCallDescriptor logPrintf, String format, long v1, long v2, long v3);
 
     public static void print(boolean value) {
-        log(LOG_PRIMITIVE, Kind.Boolean.getTypeChar(), value ? 1L : 0L, false);
+        log(LOG_PRIMITIVE, JavaKind.Boolean.getTypeChar(), value ? 1L : 0L, false);
     }
 
     public static void print(byte value) {
-        log(LOG_PRIMITIVE, Kind.Byte.getTypeChar(), value, false);
+        log(LOG_PRIMITIVE, JavaKind.Byte.getTypeChar(), value, false);
     }
 
     public static void print(char value) {
-        log(LOG_PRIMITIVE, Kind.Char.getTypeChar(), value, false);
+        log(LOG_PRIMITIVE, JavaKind.Char.getTypeChar(), value, false);
     }
 
     public static void print(short value) {
-        log(LOG_PRIMITIVE, Kind.Short.getTypeChar(), value, false);
+        log(LOG_PRIMITIVE, JavaKind.Short.getTypeChar(), value, false);
     }
 
     public static void print(int value) {
-        log(LOG_PRIMITIVE, Kind.Int.getTypeChar(), value, false);
+        log(LOG_PRIMITIVE, JavaKind.Int.getTypeChar(), value, false);
     }
 
     public static void print(long value) {
-        log(LOG_PRIMITIVE, Kind.Long.getTypeChar(), value, false);
+        log(LOG_PRIMITIVE, JavaKind.Long.getTypeChar(), value, false);
     }
 
     /**
@@ -107,7 +107,7 @@
         } else if (value == Float.NEGATIVE_INFINITY) {
             print("-Infinity");
         } else {
-            log(LOG_PRIMITIVE, Kind.Float.getTypeChar(), Float.floatToRawIntBits(value), false);
+            log(LOG_PRIMITIVE, JavaKind.Float.getTypeChar(), Float.floatToRawIntBits(value), false);
         }
     }
 
@@ -119,7 +119,7 @@
         } else if (value == Double.NEGATIVE_INFINITY) {
             print("-Infinity");
         } else {
-            log(LOG_PRIMITIVE, Kind.Double.getTypeChar(), Double.doubleToRawLongBits(value), false);
+            log(LOG_PRIMITIVE, JavaKind.Double.getTypeChar(), Double.doubleToRawLongBits(value), false);
         }
     }
 
@@ -136,27 +136,27 @@
     }
 
     public static void println(boolean value) {
-        log(LOG_PRIMITIVE, Kind.Boolean.getTypeChar(), value ? 1L : 0L, true);
+        log(LOG_PRIMITIVE, JavaKind.Boolean.getTypeChar(), value ? 1L : 0L, true);
     }
 
     public static void println(byte value) {
-        log(LOG_PRIMITIVE, Kind.Byte.getTypeChar(), value, true);
+        log(LOG_PRIMITIVE, JavaKind.Byte.getTypeChar(), value, true);
     }
 
     public static void println(char value) {
-        log(LOG_PRIMITIVE, Kind.Char.getTypeChar(), value, true);
+        log(LOG_PRIMITIVE, JavaKind.Char.getTypeChar(), value, true);
     }
 
     public static void println(short value) {
-        log(LOG_PRIMITIVE, Kind.Short.getTypeChar(), value, true);
+        log(LOG_PRIMITIVE, JavaKind.Short.getTypeChar(), value, true);
     }
 
     public static void println(int value) {
-        log(LOG_PRIMITIVE, Kind.Int.getTypeChar(), value, true);
+        log(LOG_PRIMITIVE, JavaKind.Int.getTypeChar(), value, true);
     }
 
     public static void println(long value) {
-        log(LOG_PRIMITIVE, Kind.Long.getTypeChar(), value, true);
+        log(LOG_PRIMITIVE, JavaKind.Long.getTypeChar(), value, true);
     }
 
     public static void println(float value) {
@@ -167,7 +167,7 @@
         } else if (value == Float.NEGATIVE_INFINITY) {
             println("-Infinity");
         } else {
-            log(LOG_PRIMITIVE, Kind.Float.getTypeChar(), Float.floatToRawIntBits(value), true);
+            log(LOG_PRIMITIVE, JavaKind.Float.getTypeChar(), Float.floatToRawIntBits(value), true);
         }
     }
 
@@ -179,7 +179,7 @@
         } else if (value == Double.NEGATIVE_INFINITY) {
             println("-Infinity");
         } else {
-            log(LOG_PRIMITIVE, Kind.Double.getTypeChar(), Double.doubleToRawLongBits(value), true);
+            log(LOG_PRIMITIVE, JavaKind.Double.getTypeChar(), Double.doubleToRawLongBits(value), true);
         }
     }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MethodHandlePlugin.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MethodHandlePlugin.java	Tue Sep 08 19:57:39 2015 +0200
@@ -52,10 +52,10 @@
             InvokeNode invoke = MethodHandleNode.tryResolveTargetInvoke(b.getAssumptions(), b.getConstantReflection().getMethodHandleAccess(), intrinsicMethod, method, b.bci(), invokeReturnType, args);
             if (invoke == null) {
                 MethodHandleNode methodHandleNode = new MethodHandleNode(intrinsicMethod, invokeKind, method, b.bci(), invokeReturnType, args);
-                if (invokeReturnType.getKind() == Kind.Void) {
+                if (invokeReturnType.getJavaKind() == JavaKind.Void) {
                     b.add(methodHandleNode);
                 } else {
-                    b.addPush(invokeReturnType.getKind(), methodHandleNode);
+                    b.addPush(invokeReturnType.getJavaKind(), methodHandleNode);
                 }
             } else {
                 CallTargetNode callTarget = invoke.callTarget();
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -123,7 +123,7 @@
         return true;
     }
 
-    public static final JavaConstant COULD_NOT_FOLD = new PrimitiveConstant(Kind.Illegal, 100) {
+    public static final JavaConstant COULD_NOT_FOLD = new PrimitiveConstant(JavaKind.Illegal, 100) {
         @Override
         public boolean equals(Object o) {
             return this == o;
@@ -242,15 +242,15 @@
                         arg = javaConstant;
                     } else {
                         /* For intrinsification we want want corresponding objects */
-                        if (parameterTypes[i].getKind() == Kind.Boolean) {
+                        if (parameterTypes[i].getJavaKind() == JavaKind.Boolean) {
                             arg = Boolean.valueOf(javaConstant.asInt() != 0);
-                        } else if (parameterTypes[i].getKind() == Kind.Byte) {
+                        } else if (parameterTypes[i].getJavaKind() == JavaKind.Byte) {
                             arg = Byte.valueOf((byte) javaConstant.asInt());
-                        } else if (parameterTypes[i].getKind() == Kind.Short) {
+                        } else if (parameterTypes[i].getJavaKind() == JavaKind.Short) {
                             arg = Short.valueOf((short) javaConstant.asInt());
-                        } else if (parameterTypes[i].getKind() == Kind.Char) {
+                        } else if (parameterTypes[i].getJavaKind() == JavaKind.Char) {
                             arg = Character.valueOf((char) javaConstant.asInt());
-                        } else if (parameterTypes[i].getKind() == Kind.Object) {
+                        } else if (parameterTypes[i].getJavaKind() == JavaKind.Object) {
                             arg = snippetReflection.asObject(parameterTypes[i], javaConstant);
                         } else {
                             arg = javaConstant.asBoxedPrimitive();
@@ -432,7 +432,7 @@
     }
 
     public void cleanUpReturnCheckCast(Node newInstance) {
-        if (newInstance instanceof ValueNode && (((ValueNode) newInstance).getStackKind() != Kind.Object || ((ValueNode) newInstance).stamp() == StampFactory.forNodeIntrinsic())) {
+        if (newInstance instanceof ValueNode && (((ValueNode) newInstance).getStackKind() != JavaKind.Object || ((ValueNode) newInstance).stamp() == StampFactory.forNodeIntrinsic())) {
             StructuredGraph graph = (StructuredGraph) newInstance.graph();
             for (CheckCastNode checkCastNode : newInstance.usages().filter(CheckCastNode.class).snapshot()) {
                 for (Node checkCastUsage : checkCastNode.usages().snapshot()) {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPlugin.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPlugin.java	Tue Sep 08 19:57:39 2015 +0200
@@ -77,9 +77,9 @@
         NodeIntrinsic intrinsic = nodeIntrinsification.getIntrinsic(method);
         if (intrinsic != null) {
             Signature sig = method.getSignature();
-            Kind returnKind = sig.getReturnKind();
+            JavaKind returnKind = sig.getReturnKind();
             Stamp stamp = StampFactory.forKind(returnKind);
-            if (returnKind == Kind.Object) {
+            if (returnKind == JavaKind.Object) {
                 JavaType returnType = sig.getReturnType(method.getDeclaringClass());
                 if (returnType instanceof ResolvedJavaType) {
                     ResolvedJavaType resolvedReturnType = (ResolvedJavaType) returnType;
@@ -106,7 +106,7 @@
                     b.push(method.getSignature().getReturnKind(), ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()));
                 } else {
                     // This must be a void invoke
-                    assert method.getSignature().getReturnKind() == Kind.Void;
+                    assert method.getSignature().getReturnKind() == JavaKind.Void;
                 }
                 return true;
             } else if (mustIntrinsify) {
@@ -115,7 +115,7 @@
 
         } else if (MethodsElidedInSnippets != null) {
             if (MethodFilter.matches(MethodsElidedInSnippets, method)) {
-                if (method.getSignature().getReturnKind() != Kind.Void) {
+                if (method.getSignature().getReturnKind() != JavaKind.Void) {
                     throw new JVMCIError("Cannot elide non-void method " + method.format("%H.%n(%p)"));
                 }
                 return true;
@@ -150,7 +150,7 @@
         }
     }
 
-    private boolean processNodeIntrinsic(GraphBuilderContext b, ResolvedJavaMethod method, NodeIntrinsic intrinsic, List<ValueNode> args, Kind returnKind, Stamp stamp) {
+    private boolean processNodeIntrinsic(GraphBuilderContext b, ResolvedJavaMethod method, NodeIntrinsic intrinsic, List<ValueNode> args, JavaKind returnKind, Stamp stamp) {
         ValueNode res = createNodeIntrinsic(b, method, intrinsic, args, stamp);
         if (res == null) {
             return false;
@@ -174,7 +174,7 @@
         }
 
         boolean nonValueType = false;
-        if (returnKind == Kind.Object && stamp instanceof ObjectStamp) {
+        if (returnKind == JavaKind.Object && stamp instanceof ObjectStamp) {
             ResolvedJavaType type = ((ObjectStamp) stamp).type();
             if (type != null && structuralInputType.isAssignableFrom(type)) {
                 assert res.isAllowedUsageType(getInputType(type));
@@ -182,11 +182,11 @@
             }
         }
 
-        if (returnKind != Kind.Void) {
-            assert nonValueType || res.getStackKind() != Kind.Void;
+        if (returnKind != JavaKind.Void) {
+            assert nonValueType || res.getStackKind() != JavaKind.Void;
             res = b.addPush(returnKind, res);
         } else {
-            assert res.getStackKind() == Kind.Void;
+            assert res.getStackKind() == JavaKind.Void;
             res = b.add(res);
         }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/PEGraphDecoder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/PEGraphDecoder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -173,7 +173,7 @@
         }
 
         @Override
-        public void push(Kind kind, ValueNode value) {
+        public void push(JavaKind kind, ValueNode value) {
             throw unimplemented();
         }
 
@@ -228,7 +228,7 @@
         }
 
         @Override
-        public void push(Kind kind, ValueNode value) {
+        public void push(JavaKind kind, ValueNode value) {
             if (pushedNode != null) {
                 throw unimplemented("Only one push is supported");
             }
@@ -619,7 +619,7 @@
                 stateAtReturn = (FrameState) decodeFloatingNode(methodScope.caller, methodScope.callerLoopScope, methodScope.invokeData.stateAfterOrderId);
             }
 
-            Kind invokeReturnKind = methodScope.invokeData.invoke.asNode().getStackKind();
+            JavaKind invokeReturnKind = methodScope.invokeData.invoke.asNode().getStackKind();
             FrameState outerState = stateAtReturn.duplicateModified(methodScope.graph, methodScope.invokeData.invoke.bci(), stateAtReturn.rethrowException(), true, invokeReturnKind, null, null);
 
             /*
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -641,7 +641,7 @@
             dimensions++;
         }
 
-        Class<?> baseClass = base.getKind() != Kind.Object ? base.getKind().toJavaClass() : resolveClass(base.toJavaName(), false);
+        Class<?> baseClass = base.getJavaKind() != JavaKind.Object ? base.getJavaKind().toJavaClass() : resolveClass(base.toJavaName(), false);
         return dimensions == 0 ? baseClass : Array.newInstance(baseClass, new int[dimensions]).getClass();
     }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Tue Sep 08 19:57:39 2015 +0200
@@ -125,7 +125,7 @@
                 for (int i = 0; i < names.length; i++) {
                     names[i] = method.getLocalVariableTable().getLocal(slotIdx, 0).getName();
 
-                    Kind kind = method.getSignature().getParameterKind(i);
+                    JavaKind kind = method.getSignature().getParameterKind(i);
                     slotIdx += kind.getSlotCount();
                 }
                 return true;
@@ -615,7 +615,7 @@
             for (int i = 0; i < parameterCount; i++) {
                 if (args.info.isConstantParameter(i)) {
                     Object arg = args.values[i];
-                    Kind kind = signature.getParameterKind(i);
+                    JavaKind kind = signature.getParameterKind(i);
                     ConstantNode constantNode;
                     if (arg instanceof Constant) {
                         Stamp stamp = args.constStamps[i];
@@ -833,13 +833,13 @@
         return true;
     }
 
-    private static boolean checkConstantArgument(MetaAccessProvider metaAccess, final ResolvedJavaMethod method, Signature signature, int i, String name, Object arg, Kind kind) {
+    private static boolean checkConstantArgument(MetaAccessProvider metaAccess, final ResolvedJavaMethod method, Signature signature, int i, String name, Object arg, JavaKind kind) {
         ResolvedJavaType type = signature.getParameterType(i, method.getDeclaringClass()).resolve(method.getDeclaringClass());
         if (metaAccess.lookupJavaType(WordBase.class).isAssignableFrom(type)) {
             assert arg instanceof JavaConstant : method + ": word constant parameters must be passed boxed in a Constant value: " + arg;
             return true;
         }
-        if (kind != Kind.Object) {
+        if (kind != JavaKind.Object) {
             assert arg != null && kind.toBoxedJavaClass() == arg.getClass() : method + ": wrong value kind for " + name + ": expected " + kind + ", got " +
                             (arg == null ? "null" : arg.getClass().getSimpleName());
         }
@@ -931,8 +931,8 @@
                 if (argument instanceof ValueNode) {
                     replacements.put((ParameterNode) parameter, (ValueNode) argument);
                 } else {
-                    Kind kind = ((ParameterNode) parameter).getStackKind();
-                    assert argument != null || kind == Kind.Object : this + " cannot accept null for non-object parameter named " + args.info.getParameterName(i);
+                    JavaKind kind = ((ParameterNode) parameter).getStackKind();
+                    assert argument != null || kind == JavaKind.Object : this + " cannot accept null for non-object parameter named " + args.info.getParameterName(i);
                     JavaConstant constant = forBoxed(argument, kind);
                     replacements.put((ParameterNode) parameter, ConstantNode.forConstant(constant, metaAccess, replaceeGraph));
                 }
@@ -972,15 +972,15 @@
 
     /**
      * Converts a Java boxed value to a {@link JavaConstant} of the right kind. This adjusts for the
-     * limitation that a {@link Local}'s kind is a {@linkplain Kind#getStackKind() stack kind} and
-     * so cannot be used for re-boxing primitives smaller than an int.
+     * limitation that a {@link Local}'s kind is a {@linkplain JavaKind#getStackKind() stack kind}
+     * and so cannot be used for re-boxing primitives smaller than an int.
      *
      * @param argument a Java boxed value
      * @param localKind the kind of the {@link Local} to which {@code argument} will be bound
      */
-    protected JavaConstant forBoxed(Object argument, Kind localKind) {
+    protected JavaConstant forBoxed(Object argument, JavaKind localKind) {
         assert localKind == localKind.getStackKind();
-        if (localKind == Kind.Int) {
+        if (localKind == JavaKind.Int) {
             return JavaConstant.forBoxedPrimitive(argument);
         }
         return snippetReflection.forBoxed(localKind, argument);
@@ -1429,7 +1429,7 @@
     private static boolean checkTemplate(MetaAccessProvider metaAccess, Arguments args, ResolvedJavaMethod method, Signature signature) {
         for (int i = 0; i < args.info.getParameterCount(); i++) {
             if (args.info.isConstantParameter(i)) {
-                Kind kind = signature.getParameterKind(i);
+                JavaKind kind = signature.getParameterKind(i);
                 assert checkConstantArgument(metaAccess, method, signature, i, args.info.getParameterName(i), args.values[i], kind);
 
             } else if (args.info.isVarargsParameter(i)) {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java	Tue Sep 08 19:57:39 2015 +0200
@@ -69,8 +69,8 @@
         registerUnsignedMathPlugins(plugins);
         registerCharacterPlugins(plugins);
         registerShortPlugins(plugins);
-        registerIntegerLongPlugins(plugins, Kind.Int);
-        registerIntegerLongPlugins(plugins, Kind.Long);
+        registerIntegerLongPlugins(plugins, JavaKind.Int);
+        registerIntegerLongPlugins(plugins, JavaKind.Long);
         registerFloatPlugins(plugins);
         registerDoublePlugins(plugins);
         registerStringPlugins(plugins);
@@ -104,7 +104,7 @@
         r.register1("getValue", String.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
                 ResolvedJavaField field = b.getMetaAccess().lookupJavaField(STRING_VALUE_FIELD);
-                b.addPush(Kind.Object, new LoadFieldNode(value, field));
+                b.addPush(JavaKind.Object, new LoadFieldNode(value, field));
                 return true;
             }
         });
@@ -126,7 +126,7 @@
         Registration r = new Registration(plugins, Array.class);
         r.register2("newInstance", Class.class, int.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unused, ValueNode componentType, ValueNode length) {
-                b.addPush(Kind.Object, new DynamicNewArrayNode(componentType, length, true));
+                b.addPush(JavaKind.Object, new DynamicNewArrayNode(componentType, length, true));
                 return true;
             }
         });
@@ -135,9 +135,9 @@
 
     private static void registerUnsafePlugins(InvocationPlugins plugins) {
         Registration r = new Registration(plugins, Unsafe.class);
-        for (Kind kind : Kind.values()) {
-            if ((kind.isPrimitive() && kind != Kind.Void) || kind == Kind.Object) {
-                Class<?> javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass();
+        for (JavaKind kind : JavaKind.values()) {
+            if ((kind.isPrimitive() && kind != JavaKind.Void) || kind == JavaKind.Object) {
+                Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass();
                 String kindName = kind.name();
                 String getName = "get" + kindName;
                 String putName = "put" + kindName;
@@ -148,10 +148,10 @@
                 r.register3(getName + "Volatile", Receiver.class, Object.class, long.class, new UnsafeGetPlugin(kind, true));
                 r.register4(putName + "Volatile", Receiver.class, Object.class, long.class, javaClass, new UnsafePutPlugin(kind, true));
                 // Ordered object-based accesses
-                if (kind == Kind.Int || kind == Kind.Long || kind == Kind.Object) {
+                if (kind == JavaKind.Int || kind == JavaKind.Long || kind == JavaKind.Object) {
                     r.register4("putOrdered" + kindName, Receiver.class, Object.class, long.class, javaClass, new UnsafePutPlugin(kind, true));
                 }
-                if (kind != Kind.Boolean && kind != Kind.Object) {
+                if (kind != JavaKind.Boolean && kind != JavaKind.Object) {
                     // Raw accesses to memory addresses
                     r.register2(getName, Receiver.class, long.class, new UnsafeGetPlugin(kind, false));
                     r.register3(putName, Receiver.class, long.class, kind.toJavaClass(), new UnsafePutPlugin(kind, false));
@@ -160,16 +160,16 @@
         }
 
         // Accesses to native memory addresses.
-        r.register2("getAddress", Receiver.class, long.class, new UnsafeGetPlugin(Kind.Long, false));
-        r.register3("putAddress", Receiver.class, long.class, long.class, new UnsafePutPlugin(Kind.Long, false));
+        r.register2("getAddress", Receiver.class, long.class, new UnsafeGetPlugin(JavaKind.Long, false));
+        r.register3("putAddress", Receiver.class, long.class, long.class, new UnsafePutPlugin(JavaKind.Long, false));
 
-        for (Kind kind : new Kind[]{Kind.Int, Kind.Long, Kind.Object}) {
-            Class<?> javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass();
+        for (JavaKind kind : new JavaKind[]{JavaKind.Int, JavaKind.Long, JavaKind.Object}) {
+            Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass();
             r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() {
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unsafe, ValueNode object, ValueNode offset, ValueNode expected, ValueNode x) {
                     // Emits a null-check for the otherwise unused receiver
                     unsafe.get();
-                    b.addPush(Kind.Int, new CompareAndSwapNode(object, offset, expected, x, kind, LocationIdentity.any()));
+                    b.addPush(JavaKind.Int, new CompareAndSwapNode(object, offset, expected, x, kind, LocationIdentity.any()));
                     b.getGraph().markUnsafeAccess();
                     return true;
                 }
@@ -180,13 +180,13 @@
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unsafe, ValueNode clazz) {
                 // Emits a null-check for the otherwise unused receiver
                 unsafe.get();
-                b.addPush(Kind.Object, new DynamicNewInstanceNode(clazz, true));
+                b.addPush(JavaKind.Object, new DynamicNewInstanceNode(clazz, true));
                 return true;
             }
         });
     }
 
-    private static void registerIntegerLongPlugins(InvocationPlugins plugins, Kind kind) {
+    private static void registerIntegerLongPlugins(InvocationPlugins plugins, JavaKind kind) {
         Class<?> declaringClass = kind.toBoxedJavaClass();
         Class<?> type = kind.toJavaClass();
         Registration r = new Registration(plugins, declaringClass);
@@ -198,7 +198,7 @@
         });
         r.register1("bitCount", type, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Int, b.recursiveAppend(new BitCountNode(value).canonical(null, value)));
+                b.push(JavaKind.Int, b.recursiveAppend(new BitCountNode(value).canonical(null, value)));
                 return true;
             }
         });
@@ -224,7 +224,7 @@
                 ReverseBytesNode reverse = b.add(new ReverseBytesNode(value));
                 RightShiftNode rightShift = b.add(new RightShiftNode(reverse, b.add(ConstantNode.forInt(16))));
                 ZeroExtendNode charCast = b.add(new ZeroExtendNode(b.add(new NarrowNode(rightShift, 16)), 32));
-                b.push(Kind.Char, b.recursiveAppend(charCast.canonical(null, value)));
+                b.push(JavaKind.Char, b.recursiveAppend(charCast.canonical(null, value)));
                 return true;
             }
         });
@@ -238,7 +238,7 @@
                 ReverseBytesNode reverse = b.add(new ReverseBytesNode(value));
                 RightShiftNode rightShift = b.add(new RightShiftNode(reverse, b.add(ConstantNode.forInt(16))));
                 SignExtendNode charCast = b.add(new SignExtendNode(b.add(new NarrowNode(rightShift, 16)), 32));
-                b.push(Kind.Short, b.recursiveAppend(charCast.canonical(null, value)));
+                b.push(JavaKind.Short, b.recursiveAppend(charCast.canonical(null, value)));
                 return true;
             }
         });
@@ -248,13 +248,13 @@
         Registration r = new Registration(plugins, Float.class);
         r.register1("floatToRawIntBits", float.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Int, b.recursiveAppend(new ReinterpretNode(Kind.Int, value).canonical(null, value)));
+                b.push(JavaKind.Int, b.recursiveAppend(new ReinterpretNode(JavaKind.Int, value).canonical(null, value)));
                 return true;
             }
         });
         r.register1("intBitsToFloat", int.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Float, b.recursiveAppend(new ReinterpretNode(Kind.Float, value).canonical(null, value)));
+                b.push(JavaKind.Float, b.recursiveAppend(new ReinterpretNode(JavaKind.Float, value).canonical(null, value)));
                 return true;
             }
         });
@@ -264,13 +264,13 @@
         Registration r = new Registration(plugins, Double.class);
         r.register1("doubleToRawLongBits", double.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Long, b.recursiveAppend(new ReinterpretNode(Kind.Long, value).canonical(null, value)));
+                b.push(JavaKind.Long, b.recursiveAppend(new ReinterpretNode(JavaKind.Long, value).canonical(null, value)));
                 return true;
             }
         });
         r.register1("longBitsToDouble", long.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Double, b.recursiveAppend(new ReinterpretNode(Kind.Double, value).canonical(null, value)));
+                b.push(JavaKind.Double, b.recursiveAppend(new ReinterpretNode(JavaKind.Double, value).canonical(null, value)));
                 return true;
             }
         });
@@ -278,7 +278,7 @@
 
     private static void registerMathPlugins(InvocationPlugins plugins) {
         Registration r = new Registration(plugins, Math.class);
-        for (Kind kind : new Kind[]{Kind.Int, Kind.Long}) {
+        for (JavaKind kind : new JavaKind[]{JavaKind.Int, JavaKind.Long}) {
             Class<?> type = kind.toJavaClass();
             r.register2("addExact", type, type, new InvocationPlugin() {
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode x, ValueNode y) {
@@ -301,19 +301,19 @@
         }
         r.register1("abs", Float.TYPE, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Float, b.recursiveAppend(new AbsNode(value).canonical(null, value)));
+                b.push(JavaKind.Float, b.recursiveAppend(new AbsNode(value).canonical(null, value)));
                 return true;
             }
         });
         r.register1("abs", Double.TYPE, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Double, b.recursiveAppend(new AbsNode(value).canonical(null, value)));
+                b.push(JavaKind.Double, b.recursiveAppend(new AbsNode(value).canonical(null, value)));
                 return true;
             }
         });
         r.register1("sqrt", Double.TYPE, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
-                b.push(Kind.Double, b.recursiveAppend(new SqrtNode(value).canonical(null, value)));
+                b.push(JavaKind.Double, b.recursiveAppend(new SqrtNode(value).canonical(null, value)));
                 return true;
             }
         });
@@ -344,7 +344,7 @@
             }
 
             LogicNode compare = CompareNode.createCompareNode(graph, cond, lhs, rhs, b.getConstantReflection());
-            b.addPush(Kind.Boolean, new ConditionalNode(compare, trueValue, falseValue));
+            b.addPush(JavaKind.Boolean, new ConditionalNode(compare, trueValue, falseValue));
             return true;
         }
     }
@@ -361,33 +361,33 @@
         r.register2("belowOrEqual", long.class, long.class, new UnsignedMathPlugin(Condition.BE));
         r.register2("divide", int.class, int.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode x, ValueNode y) {
-                b.push(Kind.Int, b.recursiveAppend(new UnsignedDivNode(x, y).canonical(null, x, y)));
+                b.push(JavaKind.Int, b.recursiveAppend(new UnsignedDivNode(x, y).canonical(null, x, y)));
                 return true;
             }
         });
         r.register2("divide", long.class, long.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode x, ValueNode y) {
-                b.push(Kind.Long, b.recursiveAppend(new UnsignedDivNode(x, y).canonical(null, x, y)));
+                b.push(JavaKind.Long, b.recursiveAppend(new UnsignedDivNode(x, y).canonical(null, x, y)));
                 return true;
             }
         });
         r.register2("remainder", int.class, int.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode x, ValueNode y) {
-                b.push(Kind.Int, b.recursiveAppend(new UnsignedRemNode(x, y).canonical(null, x, y)));
+                b.push(JavaKind.Int, b.recursiveAppend(new UnsignedRemNode(x, y).canonical(null, x, y)));
                 return true;
             }
         });
         r.register2("remainder", long.class, long.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode x, ValueNode y) {
-                b.push(Kind.Long, b.recursiveAppend(new UnsignedRemNode(x, y).canonical(null, x, y)));
+                b.push(JavaKind.Long, b.recursiveAppend(new UnsignedRemNode(x, y).canonical(null, x, y)));
                 return true;
             }
         });
     }
 
     protected static void registerBoxingPlugins(InvocationPlugins plugins) {
-        for (Kind kind : Kind.values()) {
-            if (kind.isPrimitive() && kind != Kind.Void) {
+        for (JavaKind kind : JavaKind.values()) {
+            if (kind.isPrimitive() && kind != JavaKind.Void) {
                 new BoxPlugin(kind).register(plugins);
                 new UnboxPlugin(kind).register(plugins);
             }
@@ -410,10 +410,10 @@
                 ValueNode object = receiver.get();
                 ValueNode folded = GetClassNode.tryFold(b.getMetaAccess(), GraphUtil.originalValue(object));
                 if (folded != null) {
-                    b.addPush(Kind.Object, folded);
+                    b.addPush(JavaKind.Object, folded);
                 } else {
                     Stamp stamp = StampFactory.declaredNonNull(b.getMetaAccess().lookupJavaType(Class.class));
-                    b.addPush(Kind.Object, new GetClassNode(stamp, object));
+                    b.addPush(JavaKind.Object, new GetClassNode(stamp, object));
                 }
                 return true;
             }
@@ -425,14 +425,14 @@
         r.register2("isInstance", Receiver.class, Object.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver type, ValueNode object) {
                 LogicNode condition = b.add(InstanceOfDynamicNode.create(b.getConstantReflection(), type.get(), object));
-                b.push(Kind.Boolean, b.recursiveAppend(new ConditionalNode(condition).canonical(null)));
+                b.push(JavaKind.Boolean, b.recursiveAppend(new ConditionalNode(condition).canonical(null)));
                 return true;
             }
         });
         r.register2("isAssignableFrom", Receiver.class, Class.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver type, ValueNode otherType) {
                 ClassIsAssignableFromNode condition = b.recursiveAppend(new ClassIsAssignableFromNode(type.get(), otherType));
-                b.push(Kind.Boolean, b.recursiveAppend(new ConditionalNode(condition).canonical(null)));
+                b.push(JavaKind.Boolean, b.recursiveAppend(new ConditionalNode(condition).canonical(null)));
                 return true;
             }
         });
@@ -450,16 +450,16 @@
         for (Class<?> c : new Class<?>[]{Node.class, NodeList.class}) {
             r.register2("get" + c.getSimpleName() + "Unsafe", Node.class, long.class, new InvocationPlugin() {
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode node, ValueNode offset) {
-                    ValueNode value = b.add(new UnsafeLoadNode(node, offset, Kind.Object, LocationIdentity.any()));
+                    ValueNode value = b.add(new UnsafeLoadNode(node, offset, JavaKind.Object, LocationIdentity.any()));
                     boolean exactType = false;
                     boolean nonNull = false;
-                    b.addPush(Kind.Object, new PiNode(value, metaAccess.lookupJavaType(c), exactType, nonNull));
+                    b.addPush(JavaKind.Object, new PiNode(value, metaAccess.lookupJavaType(c), exactType, nonNull));
                     return true;
                 }
             });
             r.register3("put" + c.getSimpleName() + "Unsafe", Node.class, long.class, c, new InvocationPlugin() {
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode node, ValueNode offset, ValueNode value) {
-                    b.add(new UnsafeStoreNode(node, offset, value, Kind.Object, LocationIdentity.any()));
+                    b.add(new UnsafeStoreNode(node, offset, value, JavaKind.Object, LocationIdentity.any()));
                     return true;
                 }
             });
@@ -468,9 +468,9 @@
 
     public static class BoxPlugin implements InvocationPlugin {
 
-        private final Kind kind;
+        private final JavaKind kind;
 
-        BoxPlugin(Kind kind) {
+        BoxPlugin(JavaKind kind) {
             this.kind = kind;
         }
 
@@ -484,7 +484,7 @@
                 }
             }
             ResolvedJavaType resultType = b.getMetaAccess().lookupJavaType(kind.toBoxedJavaClass());
-            b.addPush(Kind.Object, new BoxNode(value, resultType, kind));
+            b.addPush(JavaKind.Object, new BoxNode(value, resultType, kind));
             return true;
         }
 
@@ -495,9 +495,9 @@
 
     public static class UnboxPlugin implements InvocationPlugin {
 
-        private final Kind kind;
+        private final JavaKind kind;
 
-        UnboxPlugin(Kind kind) {
+        UnboxPlugin(JavaKind kind) {
             this.kind = kind;
         }
 
@@ -523,10 +523,10 @@
 
     public static class UnsafeGetPlugin implements InvocationPlugin {
 
-        private final Kind returnKind;
+        private final JavaKind returnKind;
         private final boolean isVolatile;
 
-        public UnsafeGetPlugin(Kind returnKind, boolean isVolatile) {
+        public UnsafeGetPlugin(JavaKind returnKind, boolean isVolatile) {
             this.returnKind = returnKind;
             this.isVolatile = isVolatile;
         }
@@ -556,10 +556,10 @@
 
     public static class UnsafePutPlugin implements InvocationPlugin {
 
-        private final Kind kind;
+        private final JavaKind kind;
         private final boolean isVolatile;
 
-        public UnsafePutPlugin(Kind kind, boolean isVolatile) {
+        public UnsafePutPlugin(JavaKind kind, boolean isVolatile) {
             this.kind = kind;
             this.isVolatile = isVolatile;
         }
@@ -605,7 +605,7 @@
 
         r.register0("inCompiledCode", new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
-                b.addPush(Kind.Boolean, ConstantNode.forBoolean(true));
+                b.addPush(JavaKind.Boolean, ConstantNode.forBoolean(true));
                 return true;
             }
         });
@@ -619,7 +619,7 @@
 
         r.register2("injectBranchProbability", double.class, boolean.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode probability, ValueNode condition) {
-                b.addPush(Kind.Boolean, new BranchProbabilityNode(probability, condition));
+                b.addPush(JavaKind.Boolean, new BranchProbabilityNode(probability, condition));
                 return true;
             }
         });
@@ -631,9 +631,9 @@
             }
         };
 
-        for (Kind kind : Kind.values()) {
-            if ((kind.isPrimitive() && kind != Kind.Void) || kind == Kind.Object) {
-                Class<?> javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass();
+        for (JavaKind kind : JavaKind.values()) {
+            if ((kind.isPrimitive() && kind != JavaKind.Void) || kind == JavaKind.Object) {
+                Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass();
                 r.register1("blackhole", javaClass, blackholePlugin);
 
                 r.register1("opaque", javaClass, new InvocationPlugin() {
@@ -691,9 +691,9 @@
             blackholeClass = MethodSubstitutionPlugin.resolveClass(name, true);
             if (blackholeClass != null) {
                 Registration r = new Registration(plugins, blackholeClass);
-                for (Kind kind : Kind.values()) {
-                    if ((kind.isPrimitive() && kind != Kind.Void) || kind == Kind.Object) {
-                        Class<?> javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass();
+                for (JavaKind kind : JavaKind.values()) {
+                    if ((kind.isPrimitive() && kind != JavaKind.Void) || kind == JavaKind.Object) {
+                        Class<?> javaClass = kind == JavaKind.Object ? Object.class : kind.toJavaClass();
                         r.register2("consume", Receiver.class, javaClass, blackholePlugin);
                     }
                 }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/WordOperationPlugin.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/WordOperationPlugin.java	Tue Sep 08 19:57:39 2015 +0200
@@ -52,7 +52,7 @@
  */
 public class WordOperationPlugin implements NodePlugin, ParameterPlugin, InlineInvokePlugin {
     protected final WordTypes wordTypes;
-    protected final Kind wordKind;
+    protected final JavaKind wordKind;
     protected final SnippetReflectionProvider snippetReflection;
 
     public WordOperationPlugin(SnippetReflectionProvider snippetReflection, WordTypes wordTypes) {
@@ -103,7 +103,7 @@
         if (field.getType() instanceof ResolvedJavaType && wordTypes.isWord((ResolvedJavaType) field.getType())) {
             LoadFieldNode loadFieldNode = new LoadFieldNode(receiver, field);
             loadFieldNode.setStamp(wordTypes.getWordStamp((ResolvedJavaType) field.getType()));
-            b.addPush(field.getKind(), loadFieldNode);
+            b.addPush(field.getJavaKind(), loadFieldNode);
             return true;
         }
         return false;
@@ -115,14 +115,14 @@
     }
 
     @Override
-    public boolean handleLoadIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, Kind elementKind) {
+    public boolean handleLoadIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, JavaKind elementKind) {
         ResolvedJavaType arrayType = StampTool.typeOrNull(array);
         /*
          * There are cases where the array does not have a known type yet, i.e., the type is null.
          * In that case we assume it is not a word type.
          */
         if (arrayType != null && wordTypes.isWord(arrayType.getComponentType())) {
-            assert elementKind == Kind.Object;
+            assert elementKind == JavaKind.Object;
             b.addPush(elementKind, createLoadIndexedNode(array, index));
             return true;
         }
@@ -134,17 +134,17 @@
     }
 
     @Override
-    public boolean handleStoreIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, Kind elementKind, ValueNode value) {
+    public boolean handleStoreIndexed(GraphBuilderContext b, ValueNode array, ValueNode index, JavaKind elementKind, ValueNode value) {
         ResolvedJavaType arrayType = StampTool.typeOrNull(array);
         if (arrayType != null && wordTypes.isWord(arrayType.getComponentType())) {
-            assert elementKind == Kind.Object;
+            assert elementKind == JavaKind.Object;
             if (value.getStackKind() != wordTypes.getWordKind()) {
                 throw b.bailout("Cannot store a non-word value into a word array: " + arrayType.toJavaName(true));
             }
             b.add(createStoreIndexedNode(array, index, value));
             return true;
         }
-        if (elementKind == Kind.Object && value.getStackKind() == wordTypes.getWordKind()) {
+        if (elementKind == JavaKind.Object && value.getStackKind() == wordTypes.getWordKind()) {
             throw b.bailout("Cannot store a word value into a non-word array: " + arrayType.toJavaName(true));
         }
         return false;
@@ -157,7 +157,7 @@
     @Override
     public boolean handleCheckCast(GraphBuilderContext b, ValueNode object, ResolvedJavaType type, JavaTypeProfile profile) {
         if (!wordTypes.isWord(type)) {
-            if (object.getStackKind() != Kind.Object) {
+            if (object.getStackKind() != JavaKind.Object) {
                 throw b.bailout("Cannot cast a word value to a non-word type: " + type.toJavaName(true));
             }
             return false;
@@ -166,7 +166,7 @@
         if (object.getStackKind() != wordTypes.getWordKind()) {
             throw b.bailout("Cannot cast a non-word value to a word type: " + type.toJavaName(true));
         }
-        b.push(Kind.Object, object);
+        b.push(JavaKind.Object, object);
         return true;
     }
 
@@ -174,7 +174,7 @@
     public boolean handleInstanceOf(GraphBuilderContext b, ValueNode object, ResolvedJavaType type, JavaTypeProfile profile) {
         if (wordTypes.isWord(type)) {
             throw b.bailout("Cannot use instanceof for word a type: " + type.toJavaName(true));
-        } else if (object.getStackKind() != Kind.Object) {
+        } else if (object.getStackKind() != JavaKind.Object) {
             throw b.bailout("Cannot use instanceof on a word value: " + type.toJavaName(true));
         }
         return false;
@@ -182,12 +182,12 @@
 
     protected void processWordOperation(GraphBuilderContext b, ValueNode[] args, ResolvedJavaMethod wordMethod) throws JVMCIError {
         Operation operation = wordMethod.getAnnotation(Word.Operation.class);
-        Kind returnKind = wordMethod.getSignature().getReturnKind();
+        JavaKind returnKind = wordMethod.getSignature().getReturnKind();
         switch (operation.opcode()) {
             case NODE_CLASS:
                 assert args.length == 2;
                 ValueNode left = args[0];
-                ValueNode right = operation.rightOperandIsInt() ? toUnsigned(b, args[1], Kind.Int) : fromSigned(b, args[1]);
+                ValueNode right = operation.rightOperandIsInt() ? toUnsigned(b, args[1], JavaKind.Int) : fromSigned(b, args[1]);
 
                 b.addPush(returnKind, createBinaryNodeInstance(operation.node(), left, right));
                 break;
@@ -206,7 +206,7 @@
             case READ_OBJECT:
             case READ_BARRIERED: {
                 assert args.length == 2 || args.length == 3;
-                Kind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
+                JavaKind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
                 AddressNode address = makeAddress(b, args[0], args[1]);
                 LocationIdentity location;
                 if (args.length == 2) {
@@ -220,7 +220,7 @@
             }
             case READ_HEAP: {
                 assert args.length == 3;
-                Kind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
+                JavaKind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
                 AddressNode address = makeAddress(b, args[0], args[1]);
                 BarrierType barrierType = snippetReflection.asObject(BarrierType.class, args[2].asJavaConstant());
                 b.push(returnKind, readOp(b, readKind, address, any(), barrierType, true));
@@ -231,7 +231,7 @@
             case WRITE_BARRIERED:
             case INITIALIZE: {
                 assert args.length == 3 || args.length == 4;
-                Kind writeKind = wordTypes.asKind(wordMethod.getSignature().getParameterType(wordMethod.isStatic() ? 2 : 1, wordMethod.getDeclaringClass()));
+                JavaKind writeKind = wordTypes.asKind(wordMethod.getSignature().getParameterType(wordMethod.isStatic() ? 2 : 1, wordMethod.getDeclaringClass()));
                 AddressNode address = makeAddress(b, args[0], args[1]);
                 LocationIdentity location;
                 if (args.length == 3) {
@@ -260,7 +260,7 @@
 
             case TO_RAW_VALUE:
                 assert args.length == 1;
-                b.push(returnKind, toUnsigned(b, args[0], Kind.Long));
+                b.push(returnKind, toUnsigned(b, args[0], JavaKind.Long));
                 break;
 
             case OBJECT_TO_TRACKED:
@@ -336,7 +336,7 @@
         return materialize;
     }
 
-    protected ValueNode readOp(GraphBuilderContext b, Kind readKind, AddressNode address, LocationIdentity location, Opcode op) {
+    protected ValueNode readOp(GraphBuilderContext b, JavaKind readKind, AddressNode address, LocationIdentity location, Opcode op) {
         assert op == Opcode.READ_POINTER || op == Opcode.READ_OBJECT || op == Opcode.READ_BARRIERED;
         final BarrierType barrier = (op == Opcode.READ_BARRIERED ? BarrierType.PRECISE : BarrierType.NONE);
         final boolean compressible = (op == Opcode.READ_OBJECT || op == Opcode.READ_BARRIERED);
@@ -344,7 +344,7 @@
         return readOp(b, readKind, address, location, barrier, compressible);
     }
 
-    public static ValueNode readOp(GraphBuilderContext b, Kind readKind, AddressNode address, LocationIdentity location, BarrierType barrierType, boolean compressible) {
+    public static ValueNode readOp(GraphBuilderContext b, JavaKind readKind, AddressNode address, LocationIdentity location, BarrierType barrierType, boolean compressible) {
         /*
          * A JavaReadNode lowered to a ReadNode that will not float. This means it cannot float
          * above an explicit zero check on its base address or any other test that ensures the read
@@ -354,7 +354,7 @@
         return read;
     }
 
-    protected void writeOp(GraphBuilderContext b, Kind writeKind, AddressNode address, LocationIdentity location, ValueNode value, Opcode op) {
+    protected void writeOp(GraphBuilderContext b, JavaKind writeKind, AddressNode address, LocationIdentity location, ValueNode value, Opcode op) {
         assert op == Opcode.WRITE_POINTER || op == Opcode.WRITE_OBJECT || op == Opcode.WRITE_BARRIERED || op == Opcode.INITIALIZE;
         final BarrierType barrier = (op == Opcode.WRITE_BARRIERED ? BarrierType.PRECISE : BarrierType.NONE);
         final boolean compressible = (op == Opcode.WRITE_OBJECT || op == Opcode.WRITE_BARRIERED);
@@ -374,21 +374,21 @@
         return convert(b, value, wordKind, false);
     }
 
-    public ValueNode toUnsigned(GraphBuilderContext b, ValueNode value, Kind toKind) {
+    public ValueNode toUnsigned(GraphBuilderContext b, ValueNode value, JavaKind toKind) {
         return convert(b, value, toKind, true);
     }
 
-    public ValueNode convert(GraphBuilderContext b, ValueNode value, Kind toKind, boolean unsigned) {
+    public ValueNode convert(GraphBuilderContext b, ValueNode value, JavaKind toKind, boolean unsigned) {
         if (value.getStackKind() == toKind) {
             return value;
         }
 
-        if (toKind == Kind.Int) {
-            assert value.getStackKind() == Kind.Long;
+        if (toKind == JavaKind.Int) {
+            assert value.getStackKind() == JavaKind.Long;
             return b.add(new NarrowNode(value, 32));
         } else {
-            assert toKind == Kind.Long;
-            assert value.getStackKind() == Kind.Int;
+            assert toKind == JavaKind.Long;
+            assert value.getStackKind() == JavaKind.Int;
             if (unsigned) {
                 return b.add(new ZeroExtendNode(value, 64));
             } else {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -43,8 +43,8 @@
 public final class ArrayEqualsNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable, Virtualizable, MemoryAccess {
 
     public static final NodeClass<ArrayEqualsNode> TYPE = NodeClass.create(ArrayEqualsNode.class);
-    /** {@link Kind} of the arrays to compare. */
-    protected final Kind kind;
+    /** {@link JavaKind} of the arrays to compare. */
+    protected final JavaKind kind;
 
     /** One array to be tested for equality. */
     @Input ValueNode array1;
@@ -57,8 +57,8 @@
 
     @OptionalInput(InputType.Memory) MemoryNode lastLocationAccess;
 
-    public ArrayEqualsNode(ValueNode array1, ValueNode array2, ValueNode length, @ConstantNodeParameter Kind kind) {
-        super(TYPE, StampFactory.forKind(Kind.Boolean));
+    public ArrayEqualsNode(ValueNode array1, ValueNode array2, ValueNode length, @ConstantNodeParameter JavaKind kind) {
+        super(TYPE, StampFactory.forKind(JavaKind.Boolean));
         this.kind = kind;
         this.array1 = array1;
         this.array2 = array2;
@@ -110,38 +110,38 @@
     }
 
     @NodeIntrinsic
-    public static native boolean equals(Object array1, Object array2, int length, @ConstantNodeParameter Kind kind);
+    public static native boolean equals(Object array1, Object array2, int length, @ConstantNodeParameter JavaKind kind);
 
     public static boolean equals(boolean[] array1, boolean[] array2, int length) {
-        return equals(array1, array2, length, Kind.Boolean);
+        return equals(array1, array2, length, JavaKind.Boolean);
     }
 
     public static boolean equals(byte[] array1, byte[] array2, int length) {
-        return equals(array1, array2, length, Kind.Byte);
+        return equals(array1, array2, length, JavaKind.Byte);
     }
 
     public static boolean equals(char[] array1, char[] array2, int length) {
-        return equals(array1, array2, length, Kind.Char);
+        return equals(array1, array2, length, JavaKind.Char);
     }
 
     public static boolean equals(short[] array1, short[] array2, int length) {
-        return equals(array1, array2, length, Kind.Short);
+        return equals(array1, array2, length, JavaKind.Short);
     }
 
     public static boolean equals(int[] array1, int[] array2, int length) {
-        return equals(array1, array2, length, Kind.Int);
+        return equals(array1, array2, length, JavaKind.Int);
     }
 
     public static boolean equals(long[] array1, long[] array2, int length) {
-        return equals(array1, array2, length, Kind.Long);
+        return equals(array1, array2, length, JavaKind.Long);
     }
 
     public static boolean equals(float[] array1, float[] array2, int length) {
-        return equals(array1, array2, length, Kind.Float);
+        return equals(array1, array2, length, JavaKind.Float);
     }
 
     public static boolean equals(double[] array1, double[] array2, int length) {
-        return equals(array1, array2, length, Kind.Double);
+        return equals(array1, array2, length, JavaKind.Double);
     }
 
     @Override
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -51,30 +51,30 @@
 
     @OptionalInput(InputType.Memory) protected MemoryNode lastLocationAccess;
 
-    protected Kind elementKind;
+    protected JavaKind elementKind;
 
     protected int bci;
 
-    public BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind, int bci) {
-        super(type, StampFactory.forKind(Kind.Void));
+    public BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind, int bci) {
+        super(type, StampFactory.forKind(JavaKind.Void));
         this.bci = bci;
         this.src = src;
         this.srcPos = srcPos;
         this.dest = dest;
         this.destPos = destPos;
         this.length = length;
-        this.elementKind = elementKind != Kind.Illegal ? elementKind : null;
+        this.elementKind = elementKind != JavaKind.Illegal ? elementKind : null;
     }
 
-    public BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind) {
-        super(type, StampFactory.forKind(Kind.Void));
+    public BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind) {
+        super(type, StampFactory.forKind(JavaKind.Void));
         this.bci = -6;
         this.src = src;
         this.srcPos = srcPos;
         this.dest = dest;
         this.destPos = destPos;
         this.length = length;
-        this.elementKind = elementKind != Kind.Illegal ? elementKind : null;
+        this.elementKind = elementKind != JavaKind.Illegal ? elementKind : null;
     }
 
     public ValueNode getSource() {
@@ -101,7 +101,7 @@
         return bci;
     }
 
-    public Kind getElementKind() {
+    public JavaKind getElementKind() {
         return elementKind;
     }
 
@@ -132,7 +132,7 @@
     }
 
     private static boolean checkEntryTypes(int srcPos, int length, VirtualObjectNode src, ResolvedJavaType destComponentType, VirtualizerTool tool) {
-        if (destComponentType.getKind() == Kind.Object) {
+        if (destComponentType.getJavaKind() == JavaKind.Object) {
             for (int i = 0; i < length; i++) {
                 ValueNode entry = tool.getEntry(src, srcPos + i);
                 ResolvedJavaType type = StampTool.typeOrNull(entry);
@@ -153,7 +153,7 @@
         if (srcType == null || !srcType.isArray() || destType == null || !destType.isArray()) {
             return false;
         }
-        if ((srcType.getComponentType().getKind().isPrimitive() && destType.getComponentType().equals(srcType.getComponentType())) || getSource() == getDestination()) {
+        if ((srcType.getComponentType().getJavaKind().isPrimitive() && destType.getComponentType().equals(srcType.getComponentType())) || getSource() == getDestination()) {
             return true;
         }
 
@@ -189,10 +189,10 @@
                         return;
                     }
                     VirtualArrayNode srcVirtual = (VirtualArrayNode) srcAlias;
-                    if (destVirtual.componentType().getKind() != Kind.Object) {
+                    if (destVirtual.componentType().getJavaKind() != JavaKind.Object) {
                         return;
                     }
-                    if (srcVirtual.componentType().getKind() != Kind.Object) {
+                    if (srcVirtual.componentType().getJavaKind() != JavaKind.Object) {
                         return;
                     }
                     if (!checkBounds(srcPosInt, len, srcVirtual)) {
@@ -219,7 +219,7 @@
                         return;
                     }
                     for (int i = 0; i < len; i++) {
-                        LoadIndexedNode load = new LoadIndexedNode(srcAlias, ConstantNode.forInt(i + srcPosInt, graph()), destComponentType.getKind());
+                        LoadIndexedNode load = new LoadIndexedNode(srcAlias, ConstantNode.forInt(i + srcPosInt, graph()), destComponentType.getJavaKind());
                         tool.addNode(load);
                         tool.setVirtualEntry(destVirtual, destPosInt + i, load, false);
                     }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -39,8 +39,8 @@
     public static final NodeClass<BitCountNode> TYPE = NodeClass.create(BitCountNode.class);
 
     public BitCountNode(ValueNode value) {
-        super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
-        assert value.getStackKind() == Kind.Int || value.getStackKind() == Kind.Long;
+        super(TYPE, StampFactory.forInteger(JavaKind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
+        assert value.getStackKind() == JavaKind.Int || value.getStackKind() == JavaKind.Long;
     }
 
     @Override
@@ -48,14 +48,14 @@
         IntegerStamp valueStamp = (IntegerStamp) getValue().stamp();
         assert (valueStamp.downMask() & CodeUtil.mask(valueStamp.getBits())) == valueStamp.downMask();
         assert (valueStamp.upMask() & CodeUtil.mask(valueStamp.getBits())) == valueStamp.upMask();
-        return updateStamp(StampFactory.forInteger(Kind.Int, Long.bitCount(valueStamp.downMask()), Long.bitCount(valueStamp.upMask())));
+        return updateStamp(StampFactory.forInteger(JavaKind.Int, Long.bitCount(valueStamp.downMask()), Long.bitCount(valueStamp.upMask())));
     }
 
     @Override
     public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue) {
         if (forValue.isConstant()) {
             JavaConstant c = forValue.asJavaConstant();
-            return ConstantNode.forInt(forValue.getStackKind() == Kind.Int ? Integer.bitCount(c.asInt()) : Long.bitCount(c.asLong()));
+            return ConstantNode.forInt(forValue.getStackKind() == JavaKind.Int ? Integer.bitCount(c.asInt()) : Long.bitCount(c.asLong()));
         }
         return this;
     }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -43,8 +43,8 @@
     public static final NodeClass<BitScanForwardNode> TYPE = NodeClass.create(BitScanForwardNode.class);
 
     public BitScanForwardNode(ValueNode value) {
-        super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
-        assert value.getStackKind() == Kind.Int || value.getStackKind() == Kind.Long;
+        super(TYPE, StampFactory.forInteger(JavaKind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
+        assert value.getStackKind() == JavaKind.Int || value.getStackKind() == JavaKind.Long;
     }
 
     @Override
@@ -63,7 +63,7 @@
             min = firstMaybeSetBit;
             max = firstAlwaysSetBit;
         }
-        return updateStamp(StampFactory.forInteger(Kind.Int, min, max));
+        return updateStamp(StampFactory.forInteger(JavaKind.Int, min, max));
     }
 
     @Override
@@ -71,7 +71,7 @@
         if (forValue.isConstant()) {
             JavaConstant c = forValue.asJavaConstant();
             if (c.asLong() != 0) {
-                return ConstantNode.forInt(forValue.getStackKind() == Kind.Int ? scan(c.asInt()) : scan(c.asLong()));
+                return ConstantNode.forInt(forValue.getStackKind() == JavaKind.Int ? scan(c.asInt()) : scan(c.asLong()));
             }
         }
         return this;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -43,8 +43,8 @@
     public static final NodeClass<BitScanReverseNode> TYPE = NodeClass.create(BitScanReverseNode.class);
 
     public BitScanReverseNode(ValueNode value) {
-        super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
-        assert value.getStackKind() == Kind.Int || value.getStackKind() == Kind.Long;
+        super(TYPE, StampFactory.forInteger(JavaKind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
+        assert value.getStackKind() == JavaKind.Int || value.getStackKind() == JavaKind.Long;
     }
 
     @Override
@@ -62,7 +62,7 @@
         }
         int lastMaybeSetBit = scan(valueStamp.upMask() & mask);
         max = lastMaybeSetBit;
-        return updateStamp(StampFactory.forInteger(Kind.Int, min, max));
+        return updateStamp(StampFactory.forInteger(JavaKind.Int, min, max));
     }
 
     @Override
@@ -70,7 +70,7 @@
         if (forValue.isConstant()) {
             JavaConstant c = forValue.asJavaConstant();
             if (c.asLong() != 0) {
-                return ConstantNode.forInt(forValue.getStackKind() == Kind.Int ? scan(c.asInt()) : scan(c.asLong()));
+                return ConstantNode.forInt(forValue.getStackKind() == JavaKind.Int ? scan(c.asInt()) : scan(c.asLong()));
             }
         }
         return this;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -48,9 +48,9 @@
     @Input ValueNode offset;
     protected final int displacement;
     protected final LocationIdentity locationIdentity;
-    protected final Kind storeKind;
+    protected final JavaKind storeKind;
 
-    public DirectObjectStoreNode(ValueNode object, int displacement, ValueNode offset, ValueNode value, LocationIdentity locationIdentity, Kind storeKind) {
+    public DirectObjectStoreNode(ValueNode object, int displacement, ValueNode offset, ValueNode value, LocationIdentity locationIdentity, JavaKind storeKind) {
         super(TYPE, StampFactory.forVoid());
         this.object = object;
         this.value = value;
@@ -62,45 +62,45 @@
 
     @NodeIntrinsic
     public static native void storeObject(Object obj, @ConstantNodeParameter int displacement, long offset, Object value, @ConstantNodeParameter LocationIdentity locationIdentity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeBoolean(Object obj, @ConstantNodeParameter int displacement, long offset, boolean value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeByte(Object obj, @ConstantNodeParameter int displacement, long offset, byte value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeChar(Object obj, @ConstantNodeParameter int displacement, long offset, char value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeShort(Object obj, @ConstantNodeParameter int displacement, long offset, short value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeInt(Object obj, @ConstantNodeParameter int displacement, long offset, int value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeLong(Object obj, @ConstantNodeParameter int displacement, long offset, long value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeFloat(Object obj, @ConstantNodeParameter int displacement, long offset, float value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @NodeIntrinsic
     public static native void storeDouble(Object obj, @ConstantNodeParameter int displacement, long offset, double value, @ConstantNodeParameter LocationIdentity locationIdenity,
-                    @ConstantNodeParameter Kind storeKind);
+                    @ConstantNodeParameter JavaKind storeKind);
 
     @Override
     public void lower(LoweringTool tool) {
         ValueNode off = graph().unique(new AddNode(offset, ConstantNode.forIntegerStamp(offset.stamp(), displacement, graph())));
         AddressNode address = graph().unique(new OffsetAddressNode(object, off));
-        JavaWriteNode write = graph().add(new JavaWriteNode(storeKind, address, locationIdentity, value, BarrierType.NONE, storeKind == Kind.Object, false));
+        JavaWriteNode write = graph().add(new JavaWriteNode(storeKind, address, locationIdentity, value, BarrierType.NONE, storeKind == JavaKind.Object, false));
         graph().replaceFixedWithFixed(this, write);
 
         tool.getLowerer().lower(write, tool);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -40,9 +40,9 @@
 
     public static final NodeClass<DirectReadNode> TYPE = NodeClass.create(DirectReadNode.class);
     @Input protected ValueNode address;
-    protected final Kind readKind;
+    protected final JavaKind readKind;
 
-    public DirectReadNode(ValueNode address, Kind readKind) {
+    public DirectReadNode(ValueNode address, JavaKind readKind) {
         super(TYPE, StampFactory.forKind(readKind.getStackKind()));
         this.address = address;
         this.readKind = readKind;
@@ -64,7 +64,7 @@
     public void generate(NodeLIRBuilderTool gen) {
         LIRKind kind = gen.getLIRGeneratorTool().target().getLIRKind(readKind);
         Value loaded = gen.getLIRGeneratorTool().emitLoad(kind, gen.operand(address), null);
-        switch ((Kind) kind.getPlatformKind()) {
+        switch ((JavaKind) kind.getPlatformKind()) {
             case Byte:
                 loaded = gen.getLIRGeneratorTool().emitSignExtend(loaded, 8, 32);
                 break;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -41,9 +41,9 @@
     public static final NodeClass<DirectStoreNode> TYPE = NodeClass.create(DirectStoreNode.class);
     @Input protected ValueNode address;
     @Input protected ValueNode value;
-    protected final Kind kind;
+    protected final JavaKind kind;
 
-    public DirectStoreNode(ValueNode address, ValueNode value, Kind kind) {
+    public DirectStoreNode(ValueNode address, ValueNode value, JavaKind kind) {
         super(TYPE, StampFactory.forVoid());
         this.address = address;
         this.value = value;
@@ -66,5 +66,5 @@
     }
 
     @NodeIntrinsic
-    public static native void storeBoolean(long address, boolean value, @ConstantNodeParameter Kind kind);
+    public static native void storeBoolean(long address, boolean value, @ConstantNodeParameter JavaKind kind);
 }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -81,8 +81,8 @@
     }
 
     private static Stamp returnStamp(JavaType returnType) {
-        Kind kind = returnType.getKind();
-        if (kind == Kind.Object) {
+        JavaKind kind = returnType.getJavaKind();
+        if (kind == JavaKind.Object) {
             return StampFactory.declared((ResolvedJavaType) returnType);
         } else {
             return StampFactory.forKind(kind);
@@ -208,7 +208,7 @@
         InvokeNode invoke = graph().add(new InvokeNode(callTarget, bci));
         if (stateAfter() != null) {
             invoke.setStateAfter(stateAfter().duplicate());
-            if (getStackKind() != Kind.Void) {
+            if (getStackKind() != JavaKind.Void) {
                 invoke.stateAfter().replaceFirstInput(this, invoke);
             }
         }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MethodHandleNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MethodHandleNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -262,7 +262,7 @@
         // we need to use the stamp of the invoker. Note: always using the
         // invoker's stamp would be wrong because it's a less concrete type
         // (usually java.lang.Object).
-        if (returnType.getKind() == Kind.Void) {
+        if (returnType.getJavaKind() == JavaKind.Void) {
             return new InvokeNode(callTarget, bci, StampFactory.forVoid());
         } else {
             return new InvokeNode(callTarget, bci);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -56,7 +56,7 @@
      */
     protected final boolean incoming;
 
-    public ReadRegisterNode(Register register, Kind kind, boolean directUse, boolean incoming) {
+    public ReadRegisterNode(Register register, JavaKind kind, boolean directUse, boolean incoming) {
         super(TYPE, StampFactory.forKind(kind));
         assert register != null;
         this.register = register;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -40,17 +40,17 @@
 
     public ReverseBytesNode(ValueNode value) {
         super(TYPE, StampFactory.forKind(value.getStackKind()), value);
-        assert getStackKind() == Kind.Int || getStackKind() == Kind.Long;
+        assert getStackKind() == JavaKind.Int || getStackKind() == JavaKind.Long;
     }
 
     @Override
     public boolean inferStamp() {
         IntegerStamp valueStamp = (IntegerStamp) getValue().stamp();
         Stamp newStamp;
-        if (getStackKind() == Kind.Int) {
-            long mask = CodeUtil.mask(Kind.Int.getBitCount());
+        if (getStackKind() == JavaKind.Int) {
+            long mask = CodeUtil.mask(JavaKind.Int.getBitCount());
             newStamp = IntegerStamp.stampForMask(valueStamp.getBits(), Integer.reverse((int) valueStamp.downMask()) & mask, Integer.reverse((int) valueStamp.upMask()) & mask);
-        } else if (getStackKind() == Kind.Long) {
+        } else if (getStackKind() == JavaKind.Long) {
             newStamp = IntegerStamp.stampForMask(valueStamp.getBits(), Long.reverse(valueStamp.downMask()), Long.reverse(valueStamp.upMask()));
         } else {
             return false;
@@ -62,7 +62,7 @@
     public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue) {
         if (forValue.isConstant()) {
             JavaConstant c = forValue.asJavaConstant();
-            long reversed = getStackKind() == Kind.Int ? Integer.reverseBytes(c.asInt()) : Long.reverseBytes(c.asLong());
+            long reversed = getStackKind() == JavaKind.Int ? Integer.reverseBytes(c.asInt()) : Long.reverseBytes(c.asLong());
             return ConstantNode.forIntegerKind(getStackKind(), reversed);
         }
         return this;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerAddExactNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerAddExactNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -132,12 +132,12 @@
         JavaConstant xConst = forX.asJavaConstant();
         JavaConstant yConst = forY.asJavaConstant();
         if (xConst != null && yConst != null) {
-            assert xConst.getKind() == yConst.getKind();
+            assert xConst.getJavaKind() == yConst.getJavaKind();
             try {
-                if (xConst.getKind() == Kind.Int) {
+                if (xConst.getJavaKind() == JavaKind.Int) {
                     return ConstantNode.forInt(Math.addExact(xConst.asInt(), yConst.asInt()));
                 } else {
-                    assert xConst.getKind() == Kind.Long;
+                    assert xConst.getJavaKind() == JavaKind.Long;
                     return ConstantNode.forLong(Math.addExact(xConst.asLong(), yConst.asLong()));
                 }
             } catch (ArithmeticException ex) {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulExactNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulExactNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -73,12 +73,12 @@
     private ValueNode canonicalXconstant(ValueNode forX, ValueNode forY) {
         JavaConstant xConst = forX.asJavaConstant();
         JavaConstant yConst = forY.asJavaConstant();
-        assert xConst.getKind() == yConst.getKind();
+        assert xConst.getJavaKind() == yConst.getJavaKind();
         try {
-            if (xConst.getKind() == Kind.Int) {
+            if (xConst.getJavaKind() == JavaKind.Int) {
                 return ConstantNode.forInt(Math.multiplyExact(xConst.asInt(), yConst.asInt()));
             } else {
-                assert xConst.getKind() == Kind.Long;
+                assert xConst.getJavaKind() == JavaKind.Long;
                 return ConstantNode.forLong(Math.multiplyExact(xConst.asLong(), yConst.asLong()));
             }
         } catch (ArithmeticException ex) {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulHighNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulHighNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -55,15 +55,15 @@
         IntegerStamp xStamp = (IntegerStamp) forX.stamp();
         IntegerStamp yStamp = (IntegerStamp) forY.stamp();
 
-        Kind kind = getStackKind();
-        assert kind == Kind.Int || kind == Kind.Long;
+        JavaKind kind = getStackKind();
+        assert kind == JavaKind.Int || kind == JavaKind.Long;
         long[] xExtremes = {xStamp.lowerBound(), xStamp.upperBound()};
         long[] yExtremes = {yStamp.lowerBound(), yStamp.upperBound()};
         long min = Long.MAX_VALUE;
         long max = Long.MIN_VALUE;
         for (long a : xExtremes) {
             for (long b : yExtremes) {
-                long result = kind == Kind.Int ? multiplyHigh((int) a, (int) b) : multiplyHigh(a, b);
+                long result = kind == JavaKind.Int ? multiplyHigh((int) a, (int) b) : multiplyHigh(a, b);
                 min = Math.min(min, result);
                 max = Math.max(max, result);
             }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerSubExactNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerSubExactNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -72,12 +72,12 @@
     private ValueNode canonicalXYconstant(ValueNode forX, ValueNode forY) {
         JavaConstant xConst = forX.asJavaConstant();
         JavaConstant yConst = forY.asJavaConstant();
-        assert xConst.getKind() == yConst.getKind();
+        assert xConst.getJavaKind() == yConst.getJavaKind();
         try {
-            if (xConst.getKind() == Kind.Int) {
+            if (xConst.getJavaKind() == JavaKind.Int) {
                 return ConstantNode.forInt(Math.subtractExact(xConst.asInt(), yConst.asInt()));
             } else {
-                assert xConst.getKind() == Kind.Long;
+                assert xConst.getJavaKind() == JavaKind.Long;
                 return ConstantNode.forLong(Math.subtractExact(xConst.asLong(), yConst.asLong()));
             }
         } catch (ArithmeticException ex) {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/UnsignedMulHighNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/UnsignedMulHighNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -58,15 +58,15 @@
         IntegerStamp xStamp = (IntegerStamp) forX.stamp();
         IntegerStamp yStamp = (IntegerStamp) forY.stamp();
 
-        Kind kind = getStackKind();
-        assert kind == Kind.Int || kind == Kind.Long;
+        JavaKind kind = getStackKind();
+        assert kind == JavaKind.Int || kind == JavaKind.Long;
         long[] xExtremes = {xStamp.lowerBound(), xStamp.upperBound()};
         long[] yExtremes = {yStamp.lowerBound(), yStamp.upperBound()};
         long min = Long.MAX_VALUE;
         long max = Long.MIN_VALUE;
         for (long a : xExtremes) {
             for (long b : yExtremes) {
-                long result = kind == Kind.Int ? multiplyHighUnsigned((int) a, (int) b) : multiplyHighUnsigned(a, b);
+                long result = kind == JavaKind.Int ? multiplyHighUnsigned((int) a, (int) b) : multiplyHighUnsigned(a, b);
                 min = Math.min(min, result);
                 max = Math.max(max, result);
             }
--- a/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -49,7 +49,7 @@
             protected void injectTailCallCode(HotSpotVMConfig config, HotSpotRegistersProvider registers) {
                 @SuppressWarnings("hiding")
                 AMD64MacroAssembler asm = (AMD64MacroAssembler) this.asm;
-                Register thisRegister = codeCache.getRegisterConfig().getCallingConventionRegisters(Type.JavaCall, Kind.Object)[0];
+                Register thisRegister = codeCache.getRegisterConfig().getCallingConventionRegisters(Type.JavaCall, JavaKind.Object)[0];
                 Register spillRegister = AMD64.r10; // TODO(mg): fix me
                 Label doProlog = new Label();
 
--- a/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64RawNativeCallNodeFactory.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64RawNativeCallNodeFactory.java	Tue Sep 08 19:57:39 2015 +0200
@@ -31,7 +31,7 @@
 
 @ServiceProvider(RawNativeCallNodeFactory.class)
 public class AMD64RawNativeCallNodeFactory implements RawNativeCallNodeFactory {
-    public FixedWithNextNode createRawCallNode(Kind returnType, JavaConstant functionPointer, ValueNode... args) {
+    public FixedWithNextNode createRawCallNode(JavaKind returnType, JavaConstant functionPointer, ValueNode... args) {
         return new AMD64RawNativeCallNode(returnType, functionPointer, args);
     }
 
--- a/graal/com.oracle.graal.truffle.hotspot.sparc/src/com/oracle/graal/truffle/hotspot/sparc/SPARCOptimizedCallTargetInstumentationFactory.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle.hotspot.sparc/src/com/oracle/graal/truffle/hotspot/sparc/SPARCOptimizedCallTargetInstumentationFactory.java	Tue Sep 08 19:57:39 2015 +0200
@@ -26,7 +26,7 @@
 import static com.oracle.graal.asm.sparc.SPARCAssembler.CC.*;
 import static com.oracle.graal.asm.sparc.SPARCAssembler.ConditionFlag.*;
 import static jdk.internal.jvmci.code.CallingConvention.Type.*;
-import static jdk.internal.jvmci.meta.Kind.*;
+import static jdk.internal.jvmci.meta.JavaKind.*;
 import jdk.internal.jvmci.code.*;
 import jdk.internal.jvmci.hotspot.*;
 import jdk.internal.jvmci.service.*;
--- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionHandle.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionHandle.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -84,7 +84,7 @@
             assert arg != null;
             Class<?> expectedType = argumentTypes[i];
             if (expectedType.isPrimitive()) {
-                Kind kind = Kind.fromJavaClass(expectedType);
+                JavaKind kind = JavaKind.fromJavaClass(expectedType);
                 expectedType = kind.toBoxedJavaClass();
             }
             assert expectedType == arg.getClass() : this + " expected arg " + i + " to be " + expectedType.getName() + ", not " + arg.getClass().getName();
--- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/NativeCallStubGraphBuilder.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/NativeCallStubGraphBuilder.java	Tue Sep 08 19:57:39 2015 +0200
@@ -57,9 +57,9 @@
         try {
             ResolvedJavaMethod method = providers.getMetaAccess().lookupJavaMethod(NativeCallStubGraphBuilder.class.getMethod("libCall", Object.class, Object.class, Object.class));
             StructuredGraph g = new StructuredGraph(method, AllowAssumptions.NO);
-            ParameterNode arg0 = g.unique(new ParameterNode(0, StampFactory.forKind(Kind.Object)));
-            ParameterNode arg1 = g.unique(new ParameterNode(1, StampFactory.forKind(Kind.Object)));
-            ParameterNode arg2 = g.unique(new ParameterNode(2, StampFactory.forKind(Kind.Object)));
+            ParameterNode arg0 = g.unique(new ParameterNode(0, StampFactory.forKind(JavaKind.Object)));
+            ParameterNode arg1 = g.unique(new ParameterNode(1, StampFactory.forKind(JavaKind.Object)));
+            ParameterNode arg2 = g.unique(new ParameterNode(2, StampFactory.forKind(JavaKind.Object)));
             FrameState frameState = g.add(new FrameState(null, method, 0, Arrays.asList(new ValueNode[]{arg0, arg1, arg2}), 3, 0, false, false, null, new ArrayList<EscapeObjectState>()));
             g.start().setStateAfter(frameState);
             List<ValueNode> parameters = new ArrayList<>();
@@ -82,14 +82,14 @@
 
             // box result
             BoxNode boxedResult;
-            if (callNode.getStackKind() != Kind.Void) {
-                if (callNode.getStackKind() == Kind.Object) {
+            if (callNode.getStackKind() != JavaKind.Void) {
+                if (callNode.getStackKind() == JavaKind.Object) {
                     throw new IllegalArgumentException("Return type not supported: " + returnType.getName());
                 }
                 ResolvedJavaType type = providers.getMetaAccess().lookupJavaType(callNode.getStackKind().toBoxedJavaClass());
                 boxedResult = g.add(new BoxNode(callNode, type, callNode.getStackKind()));
             } else {
-                boxedResult = g.add(new BoxNode(ConstantNode.forLong(0, g), providers.getMetaAccess().lookupJavaType(Long.class), Kind.Long));
+                boxedResult = g.add(new BoxNode(ConstantNode.forLong(0, g), providers.getMetaAccess().lookupJavaType(Long.class), JavaKind.Long));
             }
 
             callNode.setNext(boxedResult);
@@ -106,7 +106,7 @@
         FixedWithNextNode last = null;
         for (int i = 0; i < numArgs; i++) {
             // load boxed array element:
-            LoadIndexedNode boxedElement = g.add(new LoadIndexedNode(argumentsArray, ConstantNode.forInt(i, g), Kind.Object));
+            LoadIndexedNode boxedElement = g.add(new LoadIndexedNode(argumentsArray, ConstantNode.forInt(i, g), JavaKind.Object));
             if (i == 0) {
                 g.start().setNext(boxedElement);
                 last = boxedElement;
@@ -115,10 +115,10 @@
                 last = boxedElement;
             }
             Class<?> type = argumentTypes[i];
-            Kind kind = getKind(type);
-            if (kind == Kind.Object) {
+            JavaKind kind = getKind(type);
+            if (kind == JavaKind.Object) {
                 // array value
-                Kind arrayElementKind = getElementKind(type);
+                JavaKind arrayElementKind = getElementKind(type);
                 HotSpotJVMCIRuntimeProvider jvmciRuntime = runtime().getJVMCIRuntime();
                 int displacement = jvmciRuntime.getArrayBaseOffset(arrayElementKind);
                 AddressNode arrayAddress = g.unique(new OffsetAddressNode(boxedElement, ConstantNode.forLong(displacement, g)));
@@ -142,34 +142,34 @@
         return last;
     }
 
-    public static Kind getElementKind(Class<?> clazz) {
+    public static JavaKind getElementKind(Class<?> clazz) {
         Class<?> componentType = clazz.getComponentType();
         if (componentType == null) {
             throw new IllegalArgumentException("Parameter type not supported: " + clazz);
         }
         if (componentType.isPrimitive()) {
-            return Kind.fromJavaClass(componentType);
+            return JavaKind.fromJavaClass(componentType);
         }
         throw new IllegalArgumentException("Parameter type not supported: " + clazz);
     }
 
-    private static Kind getKind(Class<?> clazz) {
+    private static JavaKind getKind(Class<?> clazz) {
         if (clazz == int.class || clazz == Integer.class) {
-            return Kind.Int;
+            return JavaKind.Int;
         } else if (clazz == long.class || clazz == Long.class) {
-            return Kind.Long;
+            return JavaKind.Long;
         } else if (clazz == char.class || clazz == Character.class) {
-            return Kind.Char;
+            return JavaKind.Char;
         } else if (clazz == byte.class || clazz == Byte.class) {
-            return Kind.Byte;
+            return JavaKind.Byte;
         } else if (clazz == float.class || clazz == Float.class) {
-            return Kind.Float;
+            return JavaKind.Float;
         } else if (clazz == double.class || clazz == Double.class) {
-            return Kind.Double;
+            return JavaKind.Double;
         } else if (clazz == int[].class || clazz == long[].class || clazz == char[].class || clazz == byte[].class || clazz == float[].class || clazz == double[].class) {
-            return Kind.Object;
+            return JavaKind.Object;
         } else if (clazz == void.class) {
-            return Kind.Void;
+            return JavaKind.Void;
         } else {
             throw new IllegalArgumentException("Type not supported: " + clazz);
         }
--- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/RawNativeCallNodeFactory.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/RawNativeCallNodeFactory.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -30,7 +30,7 @@
  * Factory for creating a node that makes a direct call to a native function pointer.
  */
 public interface RawNativeCallNodeFactory {
-    FixedWithNextNode createRawCallNode(Kind returnType, JavaConstant functionPointer, ValueNode... args);
+    FixedWithNextNode createRawCallNode(JavaKind returnType, JavaConstant functionPointer, ValueNode... args);
 
     String getArchitecture();
 }
--- a/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java	Tue Sep 08 19:57:39 2015 +0200
@@ -136,7 +136,7 @@
     protected GraphBuilderConfiguration editGraphBuilderConfiguration(GraphBuilderConfiguration conf) {
         // get UnsafeAccessImpl.unsafeGetInt intrinsified
         Registration r = new Registration(conf.getPlugins().getInvocationPlugins(), UnsafeAccess.class);
-        TruffleGraphBuilderPlugins.registerUnsafeLoadStorePlugins(r, Kind.Int);
+        TruffleGraphBuilderPlugins.registerUnsafeLoadStorePlugins(r, JavaKind.Int);
         // get UnsafeAccess.getInt inlined
         conf.getPlugins().appendInlineInvokePlugin(new InlineEverythingPlugin());
         return super.editGraphBuilderConfiguration(conf);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java	Tue Sep 08 19:57:39 2015 +0200
@@ -246,7 +246,7 @@
             for (ValueNode argument : arguments) {
                 if (argument.isConstant()) {
                     JavaConstant constant = argument.asJavaConstant();
-                    if (constant.getKind() == Kind.Object && snippetReflection.asObject(MethodHandle.class, constant) != null) {
+                    if (constant.getJavaKind() == JavaKind.Object && snippetReflection.asObject(MethodHandle.class, constant) != null) {
                         return true;
                     }
                 }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -62,9 +62,9 @@
         if (!field.isStatic() && receiver.isNonNull()) {
             JavaType fieldType = field.getType();
             if (field.isFinal() || field.getAnnotation(CompilationFinal.class) != null ||
-                            (fieldType.getKind() == Kind.Object && (field.getAnnotation(Child.class) != null || field.getAnnotation(Children.class) != null))) {
+                            (fieldType.getJavaKind() == JavaKind.Object && (field.getAnnotation(Child.class) != null || field.getAnnotation(Children.class) != null))) {
                 final JavaConstant constant;
-                if (fieldType.getKind() == Kind.Object && fieldType instanceof ResolvedJavaType && ((ResolvedJavaType) fieldType).isArray() &&
+                if (fieldType.getJavaKind() == JavaKind.Object && fieldType instanceof ResolvedJavaType && ((ResolvedJavaType) fieldType).isArray() &&
                                 (field.getAnnotation(CompilationFinal.class) != null || field.getAnnotation(Children.class) != null)) {
                     constant = graalConstantReflection.readStableFieldValue(field, receiver, true);
                 } else {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -48,8 +48,8 @@
             throw new UnsupportedOperationException();
         }
 
-        public Kind getKind() {
-            return Kind.Object;
+        public JavaKind getJavaKind() {
+            return JavaKind.Object;
         }
 
         public ResolvedJavaType resolve(ResolvedJavaType accessingClass) {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -41,7 +41,7 @@
     @Input ValueNode value;
 
     public IsCompilationConstantNode(ValueNode value) {
-        super(TYPE, StampFactory.forKind(Kind.Boolean));
+        super(TYPE, StampFactory.forKind(JavaKind.Boolean));
         this.value = value;
     }
 
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/ObjectLocationIdentity.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/ObjectLocationIdentity.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -34,7 +34,7 @@
     private JavaConstant object;
 
     public static LocationIdentity create(JavaConstant object) {
-        assert object.getKind() == Kind.Object && object.isNonNull();
+        assert object.getJavaKind() == JavaKind.Object && object.isNonNull();
         return new ObjectLocationIdentity(object);
     }
 
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -207,26 +207,26 @@
     }
 
     private ValueNode initialPrimitiveValue(FrameSlotKind kind) {
-        Kind graalKind = null;
+        JavaKind graalKind = null;
         switch (kind) {
             case Boolean:
             case Byte:
             case Int:
-                graalKind = Kind.Int;
+                graalKind = JavaKind.Int;
                 break;
             case Double:
-                graalKind = Kind.Double;
+                graalKind = JavaKind.Double;
                 break;
             case Float:
-                graalKind = Kind.Float;
+                graalKind = JavaKind.Float;
                 break;
             case Long:
-                graalKind = Kind.Long;
+                graalKind = JavaKind.Long;
                 break;
             case Object:
             case Illegal:
                 // won't be stored in the primitive array, so default to long
-                graalKind = Kind.Long;
+                graalKind = JavaKind.Long;
                 break;
             default:
                 throw new IllegalStateException("Unexpected frame slot kind: " + kind);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java	Tue Sep 08 19:57:39 2015 +0200
@@ -78,14 +78,14 @@
                     OptimizedAssumption assumption = snippetReflection.asObject(OptimizedAssumption.class, (JavaConstant) constant);
                     if (assumption.isValid()) {
                         if (targetMethod.getName().equals("isValid")) {
-                            b.addPush(Kind.Boolean, ConstantNode.forBoolean(true));
+                            b.addPush(JavaKind.Boolean, ConstantNode.forBoolean(true));
                         } else {
                             assert targetMethod.getName().equals("check") : targetMethod;
                         }
                         b.getAssumptions().record(new AssumptionValidAssumption(assumption));
                     } else {
                         if (targetMethod.getName().equals("isValid")) {
-                            b.addPush(Kind.Boolean, ConstantNode.forBoolean(false));
+                            b.addPush(JavaKind.Boolean, ConstantNode.forBoolean(false));
                         } else {
                             assert targetMethod.getName().equals("check") : targetMethod;
                             b.add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.None));
@@ -103,7 +103,7 @@
 
     public static void registerExactMathPlugins(InvocationPlugins plugins) {
         Registration r = new Registration(plugins, ExactMath.class);
-        for (Kind kind : new Kind[]{Kind.Int, Kind.Long}) {
+        for (JavaKind kind : new JavaKind[]{JavaKind.Int, JavaKind.Long}) {
             Class<?> type = kind.toJavaClass();
             r.register2("addExact", type, type, new InvocationPlugin() {
                 public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode x, ValueNode y) {
@@ -142,13 +142,13 @@
         Registration r = new Registration(plugins, CompilerDirectives.class);
         r.register0("inInterpreter", new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
-                b.addPush(Kind.Boolean, ConstantNode.forBoolean(false));
+                b.addPush(JavaKind.Boolean, ConstantNode.forBoolean(false));
                 return true;
             }
         });
         r.register0("inCompiledCode", new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
-                b.addPush(Kind.Boolean, ConstantNode.forBoolean(true));
+                b.addPush(JavaKind.Boolean, ConstantNode.forBoolean(true));
                 return true;
             }
         });
@@ -176,7 +176,7 @@
         });
         r.register2("injectBranchProbability", double.class, boolean.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode probability, ValueNode condition) {
-                b.addPush(Kind.Boolean, new BranchProbabilityNode(probability, condition));
+                b.addPush(JavaKind.Boolean, new BranchProbabilityNode(probability, condition));
                 return true;
             }
         });
@@ -210,9 +210,9 @@
         r.register1("isCompilationConstant", Object.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode value) {
                 if ((value instanceof BoxNode ? ((BoxNode) value).getValue() : value).isConstant()) {
-                    b.addPush(Kind.Boolean, ConstantNode.forBoolean(true));
+                    b.addPush(JavaKind.Boolean, ConstantNode.forBoolean(true));
                 } else {
-                    b.addPush(Kind.Boolean, new IsCompilationConstantNode(value));
+                    b.addPush(JavaKind.Boolean, new IsCompilationConstantNode(value));
                 }
                 return true;
             }
@@ -290,13 +290,13 @@
         r.register2("createFrame", FrameDescriptor.class, Object[].class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode descriptor, ValueNode args) {
                 Class<?> frameClass = TruffleCompilerOptions.TruffleUseFrameWithoutBoxing.getValue() ? FrameWithoutBoxing.class : FrameWithBoxing.class;
-                b.addPush(Kind.Object, new NewFrameNode(StampFactory.exactNonNull(metaAccess.lookupJavaType(frameClass)), descriptor, args));
+                b.addPush(JavaKind.Object, new NewFrameNode(StampFactory.exactNonNull(metaAccess.lookupJavaType(frameClass)), descriptor, args));
                 return true;
             }
         });
         r.register2("castArrayFixedLength", Object[].class, int.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode args, ValueNode length) {
-                b.addPush(Kind.Object, new PiArrayNode(args, length, args.stamp()));
+                b.addPush(JavaKind.Object, new PiArrayNode(args, length, args.stamp()));
                 return true;
             }
         });
@@ -306,7 +306,7 @@
         Registration r = new Registration(plugins, FrameWithoutBoxing.class);
         registerMaterialize(r);
         registerUnsafeCast(r, canDelayIntrinsification);
-        registerUnsafeLoadStorePlugins(r, Kind.Int, Kind.Long, Kind.Float, Kind.Double, Kind.Object);
+        registerUnsafeLoadStorePlugins(r, JavaKind.Int, JavaKind.Long, JavaKind.Float, JavaKind.Double, JavaKind.Object);
     }
 
     public static void registerFrameWithBoxingPlugins(InvocationPlugins plugins, boolean canDelayIntrinsification) {
@@ -318,7 +318,7 @@
     private static void registerMaterialize(Registration r) {
         r.register1("materialize", Receiver.class, new InvocationPlugin() {
             public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver frame) {
-                b.addPush(Kind.Object, new MaterializeFrameNode(frame.get()));
+                b.addPush(JavaKind.Object, new MaterializeFrameNode(frame.get()));
                 return true;
             }
         });
@@ -331,7 +331,7 @@
                     ConstantReflectionProvider constantReflection = b.getConstantReflection();
                     ResolvedJavaType javaType = constantReflection.asJavaType(clazz.asConstant());
                     if (javaType == null) {
-                        b.push(Kind.Object, object);
+                        b.push(JavaKind.Object, object);
                     } else {
                         Stamp piStamp = null;
                         if (javaType.isArray()) {
@@ -355,7 +355,7 @@
                         if (!skipAnchor) {
                             valueAnchorNode = b.add(new ConditionAnchorNode(compareNode));
                         }
-                        b.addPush(Kind.Object, new PiNode(object, piStamp, valueAnchorNode));
+                        b.addPush(JavaKind.Object, new PiNode(object, piStamp, valueAnchorNode));
                     }
                     return true;
                 } else if (canDelayIntrinsification) {
@@ -367,22 +367,22 @@
         });
     }
 
-    public static void registerUnsafeLoadStorePlugins(Registration r, Kind... kinds) {
-        for (Kind kind : kinds) {
+    public static void registerUnsafeLoadStorePlugins(Registration r, JavaKind... kinds) {
+        for (JavaKind kind : kinds) {
             String kindName = kind.getJavaName();
             kindName = toUpperCase(kindName.charAt(0)) + kindName.substring(1);
             String getName = "unsafeGet" + kindName;
             String putName = "unsafePut" + kindName;
             r.register4(getName, Object.class, long.class, boolean.class, Object.class, new CustomizedUnsafeLoadPlugin(kind));
-            r.register4(putName, Object.class, long.class, kind == Kind.Object ? Object.class : kind.toJavaClass(), Object.class, new CustomizedUnsafeStorePlugin(kind));
+            r.register4(putName, Object.class, long.class, kind == JavaKind.Object ? Object.class : kind.toJavaClass(), Object.class, new CustomizedUnsafeStorePlugin(kind));
         }
     }
 
     static class CustomizedUnsafeLoadPlugin implements InvocationPlugin {
 
-        private final Kind returnKind;
+        private final JavaKind returnKind;
 
-        public CustomizedUnsafeLoadPlugin(Kind returnKind) {
+        public CustomizedUnsafeLoadPlugin(JavaKind returnKind) {
             this.returnKind = returnKind;
         }
 
@@ -405,9 +405,9 @@
 
     static class CustomizedUnsafeStorePlugin implements InvocationPlugin {
 
-        private final Kind kind;
+        private final JavaKind kind;
 
-        public CustomizedUnsafeStorePlugin(Kind kind) {
+        public CustomizedUnsafeStorePlugin(JavaKind kind) {
             this.kind = kind;
         }
 
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java	Tue Sep 08 19:57:39 2015 +0200
@@ -43,10 +43,10 @@
 
 public class PEReadEliminationClosure extends PartialEscapeClosure<PEReadEliminationBlockState> {
 
-    private static final EnumMap<Kind, LocationIdentity> UNBOX_LOCATIONS;
+    private static final EnumMap<JavaKind, LocationIdentity> UNBOX_LOCATIONS;
     static {
-        UNBOX_LOCATIONS = new EnumMap<>(Kind.class);
-        for (Kind kind : Kind.values()) {
+        UNBOX_LOCATIONS = new EnumMap<>(JavaKind.class);
+        for (JavaKind kind : JavaKind.values()) {
             UNBOX_LOCATIONS.put(kind, NamedLocationIdentity.immutable("PEA unbox " + kind.getJavaName()));
         }
     }
@@ -131,7 +131,7 @@
                 long offset = load.offset().asJavaConstant().asLong();
                 int index = VirtualArrayNode.entryIndexForOffset(offset, load.accessKind(), type.getComponentType(), Integer.MAX_VALUE);
                 ValueNode object = GraphUtil.unproxify(load.object());
-                LocationIdentity location = NamedLocationIdentity.getArrayLocation(type.getComponentType().getKind());
+                LocationIdentity location = NamedLocationIdentity.getArrayLocation(type.getComponentType().getJavaKind());
                 ValueNode cachedValue = state.getReadCache(object, location, index, this);
                 if (cachedValue != null && load.stamp().isCompatible(cachedValue.stamp())) {
                     effects.replaceAtUsages(load, cachedValue);
@@ -148,7 +148,7 @@
     private boolean processUnsafeStore(UnsafeStoreNode store, PEReadEliminationBlockState state, GraphEffectList effects) {
         ResolvedJavaType type = StampTool.typeOrNull(store.object());
         if (type != null && type.isArray()) {
-            LocationIdentity location = NamedLocationIdentity.getArrayLocation(type.getComponentType().getKind());
+            LocationIdentity location = NamedLocationIdentity.getArrayLocation(type.getComponentType().getJavaKind());
             if (store.offset().isConstant()) {
                 long offset = store.offset().asJavaConstant().asLong();
                 int index = VirtualArrayNode.entryIndexForOffset(offset, store.accessKind(), type.getComponentType(), Integer.MAX_VALUE);
@@ -301,7 +301,7 @@
                 }
             }
             for (PhiNode phi : getPhis()) {
-                if (phi.getStackKind() == Kind.Object) {
+                if (phi.getStackKind() == JavaKind.Object) {
                     for (Map.Entry<ReadCacheEntry, ValueNode> entry : states.get(0).readCache.entrySet()) {
                         if (entry.getKey().object == getPhiValueAt(phi, 0)) {
                             mergeReadCachePhi(phi, entry.getKey().identity, entry.getKey().index, states);
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -576,7 +576,7 @@
                             if (uniqueMaterializedValue != null) {
                                 newState.addObject(object, new ObjectState(uniqueMaterializedValue, null, ensureVirtual));
                             } else {
-                                PhiNode materializedValuePhi = getPhi(object, StampFactory.forKind(Kind.Object));
+                                PhiNode materializedValuePhi = getPhi(object, StampFactory.forKind(JavaKind.Object));
                                 mergeEffects.addFloatingNode(materializedValuePhi, "materializedPhi");
                                 for (int i = 0; i < states.length; i++) {
                                     ObjectState obj = states[i].getObjectState(object);
@@ -656,18 +656,18 @@
             int entryCount = virtual.entryCount();
 
             // determine all entries that have a two-slot value
-            Kind[] twoSlotKinds = null;
+            JavaKind[] twoSlotKinds = null;
             outer: for (int i = 0; i < states.length; i++) {
                 ObjectState objectState = states[i].getObjectState(getObject.apply(i));
                 ValueNode[] entries = objectState.getEntries();
                 int valueIndex = 0;
                 ensureVirtual &= objectState.getEnsureVirtualized();
                 while (valueIndex < entryCount) {
-                    Kind otherKind = entries[valueIndex].getStackKind();
-                    Kind entryKind = virtual.entryKind(valueIndex);
-                    if (entryKind == Kind.Int && otherKind.needsTwoSlots()) {
+                    JavaKind otherKind = entries[valueIndex].getStackKind();
+                    JavaKind entryKind = virtual.entryKind(valueIndex);
+                    if (entryKind == JavaKind.Int && otherKind.needsTwoSlots()) {
                         if (twoSlotKinds == null) {
-                            twoSlotKinds = new Kind[entryCount];
+                            twoSlotKinds = new JavaKind[entryCount];
                         }
                         if (twoSlotKinds[valueIndex] != null && twoSlotKinds[valueIndex] != otherKind) {
                             compatible = false;
@@ -677,8 +677,8 @@
                         // skip the next entry
                         valueIndex++;
                     } else {
-                        assert entryKind.getStackKind() == otherKind.getStackKind() || (entryKind == Kind.Int && otherKind == Kind.Illegal) || entryKind.getBitCount() >= otherKind.getBitCount() : entryKind +
-                                        " vs " + otherKind;
+                        assert entryKind.getStackKind() == otherKind.getStackKind() || (entryKind == JavaKind.Int && otherKind == JavaKind.Illegal) ||
+                                        entryKind.getBitCount() >= otherKind.getBitCount() : entryKind + " vs " + otherKind;
                     }
                     valueIndex++;
                 }
@@ -687,12 +687,12 @@
                 // if there are two-slot values then make sure the incoming states can be merged
                 outer: for (int valueIndex = 0; valueIndex < entryCount; valueIndex++) {
                     if (twoSlotKinds[valueIndex] != null) {
-                        assert valueIndex < virtual.entryCount() - 1 && virtual.entryKind(valueIndex) == Kind.Int && virtual.entryKind(valueIndex + 1) == Kind.Int;
+                        assert valueIndex < virtual.entryCount() - 1 && virtual.entryKind(valueIndex) == JavaKind.Int && virtual.entryKind(valueIndex + 1) == JavaKind.Int;
                         for (int i = 0; i < states.length; i++) {
                             int object = getObject.apply(i);
                             ObjectState objectState = states[i].getObjectState(object);
                             ValueNode value = objectState.getEntry(valueIndex);
-                            Kind valueKind = value.getStackKind();
+                            JavaKind valueKind = value.getStackKind();
                             if (valueKind != twoSlotKinds[valueIndex]) {
                                 ValueNode nextValue = objectState.getEntry(valueIndex + 1);
                                 if (value.isConstant() && value.asConstant().equals(JavaConstant.INT_0) && nextValue.isConstant() && nextValue.asConstant().equals(JavaConstant.INT_0)) {
@@ -740,7 +740,7 @@
                     PhiNode phi = phis[i];
                     if (phi != null) {
                         mergeEffects.addFloatingNode(phi, "virtualMergePhi");
-                        if (virtual.entryKind(i) == Kind.Object) {
+                        if (virtual.entryKind(i) == JavaKind.Object) {
                             materialized |= mergeObjectEntry(getObject, states, phi, i);
                         } else {
                             for (int i2 = 0; i2 < states.length; i2++) {
@@ -758,7 +758,7 @@
                 return materialized;
             } else {
                 // not compatible: materialize in all predecessors
-                PhiNode materializedValuePhi = getPhi(resultObject, StampFactory.forKind(Kind.Object));
+                PhiNode materializedValuePhi = getPhi(resultObject, StampFactory.forKind(JavaKind.Object));
                 for (int i = 0; i < states.length; i++) {
                     Block predecessor = getPredecessor(i);
                     ensureMaterialized(states[i], getObject.apply(i), predecessor.getEndNode(), blockEffects.get(predecessor), METRIC_MATERIALIZATIONS_MERGE);
@@ -770,7 +770,7 @@
         }
 
         /**
-         * Fill the inputs of the PhiNode corresponding to one {@link Kind#Object} entry in the
+         * Fill the inputs of the PhiNode corresponding to one {@link JavaKind#Object} entry in the
          * virtual object.
          *
          * @return true if materialization happened during the merge, false otherwise
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java	Tue Sep 08 19:57:39 2015 +0200
@@ -251,7 +251,7 @@
                 }
             }
             for (PhiNode phi : getPhis()) {
-                if (phi.getStackKind() == Kind.Object) {
+                if (phi.getStackKind() == JavaKind.Object) {
                     for (Map.Entry<CacheEntry<?>, ValueNode> entry : states.get(0).readCache.entrySet()) {
                         if (entry.getKey().object == getPhiValueAt(phi, 0)) {
                             mergeReadCachePhi(phi, entry.getKey(), states);
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -108,7 +108,7 @@
     }
 
     private static boolean isObjectEntry(ValueNode value) {
-        return value.getStackKind() == Kind.Object || value instanceof VirtualObjectNode;
+        return value.getStackKind() == JavaKind.Object || value instanceof VirtualObjectNode;
     }
 
     @Override
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/WordTypes.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/WordTypes.java	Tue Sep 08 19:57:39 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -54,9 +54,9 @@
      */
     private final ResolvedJavaType barrieredAccessType;
 
-    private final Kind wordKind;
+    private final JavaKind wordKind;
 
-    public WordTypes(MetaAccessProvider metaAccess, Kind wordKind) {
+    public WordTypes(MetaAccessProvider metaAccess, JavaKind wordKind) {
         this.wordKind = wordKind;
         this.wordBaseType = metaAccess.lookupJavaType(WordBase.class);
         this.wordImplType = metaAccess.lookupJavaType(Word.class);
@@ -115,15 +115,15 @@
      * Gets the kind for a given type, returning the {@linkplain #getWordKind() word kind} if
      * {@code type} is a {@linkplain #isWord(ResolvedJavaType) word type}.
      */
-    public Kind asKind(JavaType type) {
+    public JavaKind asKind(JavaType type) {
         if (type instanceof ResolvedJavaType && isWord((ResolvedJavaType) type)) {
             return wordKind;
         } else {
-            return type.getKind();
+            return type.getJavaKind();
         }
     }
 
-    public Kind getWordKind() {
+    public JavaKind getWordKind() {
         return wordKind;
     }
 
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java	Tue Sep 08 18:53:24 2015 +0200
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java	Tue Sep 08 19:57:39 2015 +0200
@@ -46,22 +46,22 @@
     @Input ValueNode input;
     public final boolean trackedPointer;
 
-    public static WordCastNode wordToObject(ValueNode input, Kind wordKind) {
+    public static WordCastNode wordToObject(ValueNode input, JavaKind wordKind) {
         assert input.getStackKind() == wordKind;
         return new WordCastNode(StampFactory.object(), input);
     }
 
-    public static WordCastNode addressToWord(ValueNode input, Kind wordKind) {
+    public static WordCastNode addressToWord(ValueNode input, JavaKind wordKind) {
         assert input.stamp() instanceof AbstractPointerStamp;
         return new WordCastNode(StampFactory.forKind(wordKind), input);
     }
 
-    public static WordCastNode objectToTrackedPointer(ValueNode input, Kind wordKind) {
+    public static WordCastNode objectToTrackedPointer(ValueNode input, JavaKind wordKind) {
         assert input.stamp() instanceof ObjectStamp;
         return new WordCastNode(StampFactory.forKind(wordKind), input, true);
     }
 
-    public static WordCastNode objectToUntrackedPointer(ValueNode input, Kind wordKind) {
+    public static WordCastNode objectToUntrackedPointer(ValueNode input, JavaKind wordKind) {
         assert input.stamp() instanceof ObjectStamp;
         return new WordCastNode(StampFactory.forKind(wordKind), input, false);
     }
@@ -92,7 +92,7 @@
             /* Null pointers are uncritical for GC, so they can be constant folded. */
             if (input.asJavaConstant().isNull()) {
                 return ConstantNode.forIntegerStamp(stamp(), 0);
-            } else if (input.asJavaConstant().getKind().isNumericInteger() && input.asJavaConstant().asLong() == 0) {
+            } else if (input.asJavaConstant().getJavaKind().isNumericInteger() && input.asJavaConstant().asLong() == 0) {
                 return ConstantNode.forConstant(stamp(), JavaConstant.NULL_POINTER, tool.getMetaAccess());
             }
         }
--- a/mx.graal/suite.py	Tue Sep 08 18:53:24 2015 +0200
+++ b/mx.graal/suite.py	Tue Sep 08 19:57:39 2015 +0200
@@ -6,7 +6,7 @@
     "suites": [
             {
                "name" : "jvmci",
-               "version" : "ca418f35d728634b8fdb494df9817849128bfcc3",
+               "version" : "dc1aeef79e7e7387aceebb84ae677a55ce626b82",
                "urls" : [
                     {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/graal-jvmci-8", "kind" : "hg"},
                     {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},