From doug.simon at oracle.com Sat Nov 1 02:00:05 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 01 Nov 2014 02:00:05 +0000 Subject: hg: graal/graal: 4 new changesets Message-ID: <201411010200.sA1205vf001662@aojmv0008> Changeset: 8588db09f5e9 Author: Andreas Woess Date: 2014-10-29 19:54 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8588db09f5e9 mx jol: let user select from found classes, skip duplicates ! mx/mx_graal.py Changeset: 4a8dd0fdcc38 Author: Andreas Woess Date: 2014-10-30 16:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4a8dd0fdcc38 Truffle: remove CompilerDirectives.unsafeFrameCast ! CHANGELOG.md ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/CompilerDirectivesSubstitutions.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/CompilerDirectives.java Changeset: 890d284b2771 Author: Andreas Woess Date: 2014-10-30 17:04 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/890d284b2771 Truffle: add TruffleRuntime#getCapability method ! CHANGELOG.md ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleRuntime.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultTruffleRuntime.java Changeset: 2c68474cc893 Author: Benoit Daloze Date: 2014-10-31 10:44 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2c68474cc893 Truffle: add a test to track an ImplicitCast bug + graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/BadLongOverflowSpecializationTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemTest.java From java at stefan-marr.de Mon Nov 3 17:15:25 2014 From: java at stefan-marr.de (Stefan Marr) Date: Mon, 3 Nov 2014 18:15:25 +0100 Subject: Potential compiler bug Message-ID: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> Dear all: In an experiment I did to assess the impact of using a proper object layout on TruffleSOM, I am running into issues with the latest Graal version. As far as I can tell, stores to an array are not actually done. Simple writes get lost. In the experiment, I replaced my object layout implementation with just stores into an Object array. To reproduce the issue, the following branch and example can be used: git clone -b mt-vs-pe/without-object-layout --recursive https://github.com/smarr/TruffleSOM ../graal/mxtool/mx ?vm server vm -G:-TraceTruffleInlining -G:-TraceTruffleCompilation -G:+TruffleSplitting -G:+TruffleCompilationExceptionsAreFatal -esa -ea -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk:Examples/Benchmarks/DeltaBlue Examples/Benchmarks/BenchmarkHarness.som Bounce 100 0 200 The benchmark will abort with a wrong result. The culprit seems to be a compilation of the #next method in the Random class, which looks like this: next = ( "seed print. ' ' print. (((seed * 1309) + 13849) & 65535) print. ' ' print." seed := ((seed * 1309) + 13849) & 65535. "seed println." ^seed ) The stuff in quotes are comments, and the output indicates that reading works nicely, but writing can just fail, i.e., the method returns the old value instead of the new one. I already had that branch working some weeks ago, so, I assume this is something that creeped into the codebase recently. Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From doug.simon at oracle.com Tue Nov 4 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 04 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 12 new changesets Message-ID: <201411040200.sA42083f011454@aojmv0008> Changeset: a8cff27ca2e1 Author: Doug Simon Date: 2014-11-03 16:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a8cff27ca2e1 converted HotSpotResolvedJavaMethod to an interface ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotStackFrameReference.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java ! src/cpu/sparc/vm/graalCodeInstaller_sparc.cpp ! src/cpu/x86/vm/graalCodeInstaller_x86.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/graal/graalCodeInstaller.hpp ! src/share/vm/graal/graalCompilerToVM.cpp ! src/share/vm/graal/graalJavaAccess.hpp Changeset: 17c98fad6980 Author: Doug Simon Date: 2014-11-03 17:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/17c98fad6980 converted HotSpotResolvedObjectType to an interface ! 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/HotSpotResolvedJavaFieldTest.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedObjectTypeTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java < graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotUnresolvedJavaType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/graal/graalJavaAccess.hpp ! src/share/vm/runtime/deoptimization.cpp Changeset: bfa20550f0a8 Author: Tom Rodriguez Date: 2014-10-31 11:24 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/bfa20550f0a8 Suppress menubar for GraalJUnitCore on Mac ! mx/mx_graal.py Changeset: 40074f6ac788 Author: Tom Rodriguez Date: 2014-10-31 11:25 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/40074f6ac788 Record frame state for deopts with +LogCompilation ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/thread.cpp Changeset: 6eda3b299460 Author: Tom Rodriguez Date: 2014-10-31 12:20 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6eda3b299460 Record compilation dependencies with +LogCompilation ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/dependencies.hpp ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/graal/graalEnv.cpp Changeset: bcb1e5c232d8 Author: Tom Rodriguez Date: 2014-10-31 12:22 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/bcb1e5c232d8 Test deoptimization inside ForeignCallNode + graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ForeignCallDeoptimizeTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java ! src/share/vm/graal/graalRuntime.cpp ! src/share/vm/graal/graalRuntime.hpp Changeset: ab489bac3bc8 Author: Tom Rodriguez Date: 2014-11-03 10:17 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/ab489bac3bc8 Correct the bci used by stateDuring in ForeignCallNode ! graal/com.oracle.graal.bytecode/src/com/oracle/graal/bytecode/Bytecodes.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/Invoke.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.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 ! mx/suite.py Changeset: e04712c8928a Author: Tom Rodriguez Date: 2014-11-03 10:31 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/e04712c8928a Merge ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/runtime/deoptimization.cpp Changeset: 95b2f8b8250e Author: Doug Simon Date: 2014-11-04 00:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/95b2f8b8250e fixed spelling mistake ! graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineFrameStateBuilder.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractFrameStateBuilder.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java Changeset: 70df63b02309 Author: Tom Rodriguez Date: 2014-11-03 13:37 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/70df63b02309 Use LocationIdentity.isImmutable instead of testing against FINAL_LOCATION ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ReadAfterCheckCastTest.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Changeset: 31832ebd40cf Author: Tom Rodriguez Date: 2014-11-03 14:07 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/31832ebd40cf Fine grained naming of immutable HotSpot LocationIdentities ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.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/ClassSubstitutions.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/ObjectSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ThreadSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java Changeset: 06bc22024f37 Author: Tom Rodriguez Date: 2014-11-03 16:49 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/06bc22024f37 Merge From doug.simon at oracle.com Wed Nov 5 02:00:12 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 05 Nov 2014 02:00:12 +0000 Subject: hg: graal/graal: 15 new changesets Message-ID: <201411050200.sA520CJI012838@aojmv0008> Changeset: e2578a7a79ae Author: Josef Eisl Date: 2014-11-04 12:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e2578a7a79ae Add InvokeInterface tests. + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/micro/InvokeInterface_01.java + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/micro/InvokeInterface_02.java + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/micro/InvokeInterface_03.java + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/micro/InvokeInterface_04.java Changeset: bb2c3f570e26 Author: Josef Eisl Date: 2014-10-30 15:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/bb2c3f570e26 MethodCallTargetNode: simplify interface invokes to (guarded) virtual invoke on a single implementor, if there is one. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: 6a05fba906be Author: Bernhard Urban Date: 2014-11-04 13:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6a05fba906be igv: fix coloring for 'Param' nodes (formerly 'Local') ! src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter Changeset: 6924bb0badc9 Author: Bernhard Urban Date: 2014-11-04 13:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6924bb0badc9 mx: set initial value for flag ! mx/mx_graal.py Changeset: 4221c8332c34 Author: Roland Schatz Date: 2014-11-04 14:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4221c8332c34 Remove unnecessary padding in constants section. ! src/share/vm/graal/graalCodeInstaller.cpp Changeset: 9670aff0388b Author: Thomas Wuerthinger Date: 2014-07-01 15:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9670aff0388b Add utility for getting the unqualified type name of a Java type. ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaType.java Changeset: b7b85f57a21a Author: Thomas Wuerthinger Date: 2014-07-01 15:43 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b7b85f57a21a Add utility for testing whether a stamp can be improved. And a utility for getting the default stamps of the parameters of a method. ! 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 Changeset: 57511d7d5a10 Author: Thomas Wuerthinger Date: 2014-07-01 15:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/57511d7d5a10 Add utility to get the return stamp from a structured graph. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Changeset: 4bfe1359d98a Author: Thomas Wuerthinger Date: 2014-07-01 15:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4bfe1359d98a Resolved virtual calls are guaranteed to have as receiver type at least the holder of the virtual method. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: b363053f6cac Author: Thomas Wuerthinger Date: 2014-07-01 21:44 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b363053f6cac Add missing import. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Changeset: 691e2b53dc63 Author: Thomas Wuerthinger Date: 2014-07-30 22:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/691e2b53dc63 Merge. ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaType.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.nodes/src/com/oracle/graal/nodes/StructuredGraph.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: 137f4cf8204a Author: Josef Eisl Date: 2014-11-04 16:51 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/137f4cf8204a Fix AMD64AllocatorTest junit assumption. ! graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/AMD64AllocatorTest.java ! mx/suite.py Changeset: 58bbb14d5f49 Author: Josef Eisl Date: 2014-11-04 16:57 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/58bbb14d5f49 Fix SPARCAllocatorTest junit assumption. ! graal/com.oracle.graal.compiler.sparc.test/src/com/oracle/graal/compiler/sparc/test/SPARCAllocatorTest.java ! mx/suite.py Changeset: 9ee9ec7c4f6f Author: Josef Eisl Date: 2014-11-04 17:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9ee9ec7c4f6f Improve SimpleAssemblerTest junit assumption. ! graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java Changeset: 810b676423bc Author: Doug Simon Date: 2014-11-04 22:43 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/810b676423bc added test demonstrating bug in HotSpotResolvedObjectTypeImpl.findUniqueConcreteMethod (and similar bugs in C1 and C2) + graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/FindUniqueConcreteMethodBugTest.java From doug.simon at oracle.com Thu Nov 6 02:00:06 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 06 Nov 2014 02:00:06 +0000 Subject: hg: graal/graal: 19 new changesets Message-ID: <201411060200.sA6206TP024027@aojmv0008> Changeset: e41787b05c98 Author: Josef Eisl Date: 2014-11-05 11:20 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e41787b05c98 StandardMethodSubstitutionsTest: get valid code for each iteration. Solves the InvalidInstalledCodeException issue that occurred in case of a deopt. ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java Changeset: 34cb95edfc97 Author: Josef Eisl Date: 2014-11-04 13:22 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/34cb95edfc97 MethodCallTargetNode: get profile from TypeProfileProxy if available. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: d49691aab589 Author: Doug Simon Date: 2014-11-05 10:31 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d49691aab589 minor documentation fixes ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Changeset: ae8e86212c77 Author: Doug Simon Date: 2014-11-05 11:41 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ae8e86212c77 spelling fix: omited -> omitted ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/InfopointReason.java Changeset: edb88f5425e6 Author: Doug Simon Date: 2014-11-05 12:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/edb88f5425e6 switch to using use .equals() instead of == when comparing RegisterCaterory objects for equality ! graal/com.oracle.graal.amd64/src/com/oracle/graal/amd64/AMD64.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Register.java ! graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java ! graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64MacroAssembler.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java ! graal/com.oracle.graal.hsail/src/com/oracle/graal/hsail/HSAIL.java ! graal/com.oracle.graal.ptx/src/com/oracle/graal/ptx/PTX.java ! graal/com.oracle.graal.sparc/src/com/oracle/graal/sparc/SPARC.java Changeset: 01e268964aa4 Author: Doug Simon Date: 2014-11-05 12:26 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/01e268964aa4 Merge. Changeset: 415c79fefdb3 Author: Josef Eisl Date: 2014-11-05 11:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/415c79fefdb3 TailDuplicationPhase.DummyAnchorNode: add allowedUsageTypes. ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Changeset: 1daaa2c62142 Author: Josef Eisl Date: 2014-11-05 13:01 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1daaa2c62142 Add description for PTX/HSAIL JUnit assumptions. ! graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/GraalKernelTester.java ! graal/com.oracle.graal.compiler.hsail.test.infra/src/com/oracle/graal/compiler/hsail/test/infra/KernelTester.java ! graal/com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test/BasicHSAILTest.java ! graal/com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test/lambda/ReduceMaxTest.java ! graal/com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test/lambda/ReduceMinTest.java ! graal/com.oracle.graal.compiler.hsail.test/src/com/oracle/graal/compiler/hsail/test/lambda/ReduceSumTest.java ! graal/com.oracle.graal.compiler.ptx.test/src/com/oracle/graal/compiler/ptx/test/PTXMethodInvalidation2Test.java ! graal/com.oracle.graal.compiler.ptx.test/src/com/oracle/graal/compiler/ptx/test/PTXTest.java Changeset: 4a41f32ed552 Author: Josef Eisl Date: 2014-11-05 13:09 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4a41f32ed552 MethodCallTargetNode: better variable names. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: 6faee2dcebbf Author: Doug Simon Date: 2014-11-05 17:01 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6faee2dcebbf moved MethodHandleAccessProvider to graal.api.meta and made it retrievable from MetaAccessProvider so that it does not need to be accessed via a global in MethodHandleNode (which is problematic for remote/replay compilation) (GRAAL-874) ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java + graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MethodHandleAccessProvider.java - graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/MethodHandleAccessProvider.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProviders.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Changeset: e1b2489393f4 Author: Doug Simon Date: 2014-11-05 17:04 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e1b2489393f4 added global map to ensure each NamedLocationIdentity object has a unique name which can be used for implementing .equals() and .hashCode() ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILHotSpotReplacementsUtil.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/MonitorSnippets.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/WriteBarrierSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UncommonTrapStub.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/PointerTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetCounter.java Changeset: 0f23e16288c5 Author: Doug Simon Date: 2014-11-05 17:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0f23e16288c5 prevent use of identity for ArithmeticOpTable and ArithmeticOpTable.Op ! 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/ArithmeticStamp.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java Changeset: d66c79acfeac Author: Doug Simon Date: 2014-11-05 17:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d66c79acfeac refactored Fields class to make it usable for implementing custom serialization ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/FieldIntrospection.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/Fields.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/FieldsScanner.java ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Edges.java ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRIntrospection.java Changeset: f7d45e2426d4 Author: Doug Simon Date: 2014-11-05 21:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f7d45e2426d4 converted HotSpotObjectConstant to an interface ! 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/AMD64HotSpotCompare.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/AMD64HotSpotMove.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotAssembler.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java ! graal/com.oracle.graal.hotspot.server/src/com/oracle/graal/hotspot/server/ReplacingStreams.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/InstalledCodeExecuteHelperTest.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/HotSpotCodeCacheProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.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/HotSpotSpeculationLog.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.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/CallSiteTargetNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java ! src/cpu/sparc/vm/graalCodeInstaller_sparc.cpp ! src/cpu/x86/vm/graalCodeInstaller_x86.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/graal/graalJavaAccess.hpp Changeset: ce742edd2c63 Author: Doug Simon Date: 2014-11-05 21:19 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ce742edd2c63 minor documentation fix ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotJavaType.java Changeset: e28aa8468d5e Author: Doug Simon Date: 2014-11-05 21:21 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e28aa8468d5e converted HotSpotResolvedJavaField to an interface ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java Changeset: f2d1fbba41b6 Author: Doug Simon Date: 2014-11-05 21:27 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f2d1fbba41b6 made HotSpotObjectConstant extend JavaValue ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Changeset: ae181ec869c5 Author: Doug Simon Date: 2014-11-05 21:55 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ae181ec869c5 converted HotSpotMetaspaceConstant to an interface ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotNodeLIRBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledRuntimeStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstant.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/graal/graalJavaAccess.hpp Changeset: fa6c97ede679 Author: Doug Simon Date: 2014-11-05 22:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fa6c97ede679 added Remote interface and applied it to API types that will be proxied for the purpose of replay/remote compilation ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantPool.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaField.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaMethod.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaType.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MethodHandleAccessProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ProfilingInfo.java + graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Remote.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Signature.java ! graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.java From tom.deneau at amd.com Thu Nov 6 16:39:58 2014 From: tom.deneau at amd.com (Deneau, Tom) Date: Thu, 6 Nov 2014 16:39:58 +0000 Subject: moderator approval Message-ID: Hi all -- Shreyas Ramalingam of AMD sent his first mail to the list a few weeks ago which is waiting for moderator approval. It concerns a webrev to update the hsail codegen to the 1.0 spec. -- Tom From java at stefan-marr.de Thu Nov 6 17:57:23 2014 From: java at stefan-marr.de (Stefan Marr) Date: Thu, 6 Nov 2014 18:57:23 +0100 Subject: Potential compiler bug In-Reply-To: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> Message-ID: Dear all: While trying to identify the change that introduce the issue I see in Graal, I unfortunately ran into a dead end. The miscompilation appears after the Truffle inlining changes of Christian on the 10th of October. Since I fear that they merely expose the issue but themselves are not related, I can?t point at anything more concrete. Trying to investigate the issue with IGV doesn?t work unfortunately either. It seems that the execution with IGV interferes with compilation in a way that the relevant method does not get compiled, or doesn?t get compiled under the same conditions. So, the miscompilation doesn?t appear. Any hints of how I could further isolate what?s causing the issue are very much appreciated. Thanks Stefan > On 03 Nov 2014, at 18:15, Stefan Marr wrote: > > Dear all: > > In an experiment I did to assess the impact of using a proper object layout on TruffleSOM, I am running into issues with the latest Graal version. > > As far as I can tell, stores to an array are not actually done. Simple writes get lost. > In the experiment, I replaced my object layout implementation with just stores into an Object array. > > To reproduce the issue, the following branch and example can be used: > > git clone -b mt-vs-pe/without-object-layout --recursive https://github.com/smarr/TruffleSOM > > ../graal/mxtool/mx ?vm server vm -G:-TraceTruffleInlining -G:-TraceTruffleCompilation -G:+TruffleSplitting -G:+TruffleCompilationExceptionsAreFatal -esa -ea -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk:Examples/Benchmarks/DeltaBlue Examples/Benchmarks/BenchmarkHarness.som Bounce 100 0 200 > > > The benchmark will abort with a wrong result. The culprit seems to be a compilation of the #next method in the Random class, which looks like this: > > next = ( > "seed print. ' ' print. (((seed * 1309) + 13849) & 65535) print. ' ' print." > seed := ((seed * 1309) + 13849) & 65535. > "seed println." > ^seed > ) > > The stuff in quotes are comments, and the output indicates that reading works nicely, but writing can just fail, i.e., the method returns the old value instead of the new one. > > I already had that branch working some weeks ago, so, I assume this is something that creeped into the codebase recently. > > Best regards > Stefan > > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From thomas.wuerthinger at oracle.com Thu Nov 6 23:34:20 2014 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Fri, 7 Nov 2014 00:34:20 +0100 Subject: moderator approval In-Reply-To: References: Message-ID: <98976AC2-231A-47A5-8517-5AE3DA8377CB@oracle.com> Sorry, I fixed this by approving the non-member post to the list. - thomas On 06 Nov 2014, at 17:39, Deneau, Tom wrote: > Hi all -- > > Shreyas Ramalingam of AMD sent his first mail to the list a few weeks ago which is waiting for moderator approval. It concerns a webrev to update the hsail codegen to the 1.0 spec. > > -- Tom From christian.thalinger at oracle.com Thu Nov 6 23:41:15 2014 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Thu, 6 Nov 2014 15:41:15 -0800 Subject: Webrev for generating hsail1.0 p In-Reply-To: References: Message-ID: > On Oct 23, 2014, at 1:34 PM, Ramalingam, Shreyas wrote: > > Hi All, > > Webrev http://cr.openjdk.java.net/~tdeneau/graal-webrevs/webrev-hsail1.0p upgrades graal to generate hsail1.0p from 0.95. This is for the HSAIL backend. Can you please review ? - asm.emitString0("version 0:95: $full : $large;\n"); + asm.emitString0("version 0:20140528: $full : $large;\n"); That?s interesting. I was expecting something else :-) Otherwise this looks good. > > Thanks, > Shreyas From doug.simon at oracle.com Fri Nov 7 02:00:06 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 07 Nov 2014 02:00:06 +0000 Subject: hg: graal/graal: 30 new changesets Message-ID: <201411070200.sA7207kg014621@aojmv0008> Changeset: 2a604849b3e6 Author: Gilles Duboscq Date: 2014-11-06 11:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2a604849b3e6 Since edge nullness is now verified using @OptionalInput, remove replace-with-null assert in replaceFloating ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Changeset: b6c564739710 Author: Christian Humer Date: 2014-11-05 19:10 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b6c564739710 Truffle: added javadoc to GraalTruffleCompilationListener ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleCompilationListener.java Changeset: 1d430dfce76d Author: Christian Humer Date: 2014-11-05 19:12 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1d430dfce76d Truffle: added notifyStartup event to GraalTruffleCompilationListener. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleCompilationListener.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/AbstractDebugCompilationListener.java Changeset: b0a8fb72c721 Author: Christian Humer Date: 2014-11-05 19:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b0a8fb72c721 Truffle: changed argument of GraalTruffleCompilationListener#notifyStartup and #notifyShutdown to GraalTruffleRuntime. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleCompilationListener.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/AbstractDebugCompilationListener.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/CompilationStatisticsListener.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/PrintCallTargetProfiling.java Changeset: c7d99b3d1f15 Author: Christian Humer Date: 2014-11-05 19:17 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c7d99b3d1f15 Truffle: changed depth argument to represent the number of indendations instead of spaces. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/AbstractDebugCompilationListener.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceCompilationCallTreeListener.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceInliningListener.java Changeset: ad913bc76b90 Author: Christian Humer Date: 2014-11-05 19:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ad913bc76b90 Truffle: cleanup TraceInliningListener. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceInliningListener.java Changeset: e6bb6350ecf1 Author: Christian Humer Date: 2014-11-05 19:19 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e6bb6350ecf1 Truffle: cleanup trace performance warnings listener. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TracePerformanceWarningsListener.java Changeset: ab4284c5b5b0 Author: Christian Humer Date: 2014-11-05 19:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ab4284c5b5b0 Truffle: minor cleanup ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Changeset: 1f3ab088d958 Author: Christian Humer Date: 2014-11-06 10:20 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1f3ab088d958 Truffle: implemented defer compilation. ! CHANGELOG.md ! graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CompilationProfile.java + graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CounterAndTimeBasedCompilationPolicy.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java Changeset: 7b07043813b9 Author: Christian Humer Date: 2014-11-06 10:20 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7b07043813b9 Truffle: implemented defer compilation statistics ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/CompilationStatisticsListener.java Changeset: f1a988d9213f Author: Lukas Stadler Date: 2014-11-06 16:27 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f1a988d9213f PEA: use block predecessor as insertion position if possible ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectsClosure.java Changeset: 46e10fe1ade1 Author: Doug Simon Date: 2014-11-06 13:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/46e10fe1ade1 made Replacements interface extend Remote ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.java Changeset: c7e0405a35d8 Author: Doug Simon Date: 2014-11-06 13:19 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c7e0405a35d8 added HotSpotObjectConstant.getClassLoader() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java Changeset: cffcb119fdba Author: Doug Simon Date: 2014-11-06 13:22 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/cffcb119fdba added PureFunction annotation ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Remote.java Changeset: ecf3de366ecc Author: Doug Simon Date: 2014-11-06 13:24 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ecf3de366ecc added HotSpotObjectConstant.getIdentityHashCode() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java Changeset: b2eb7302706c Author: Doug Simon Date: 2014-11-06 13:26 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b2eb7302706c added HotSpotObjectConstant.getNodeClass() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java Changeset: 29ba2a7cdfcb Author: Doug Simon Date: 2014-11-06 13:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/29ba2a7cdfcb added HotSpotObjectConstant.getComponentType() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java Changeset: 420161aee840 Author: Doug Simon Date: 2014-11-06 13:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/420161aee840 added HotSpotObjectConstant.getSuperclass() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java Changeset: ffcbc50063a3 Author: Doug Simon Date: 2014-11-06 13:50 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ffcbc50063a3 added HotSpotObjectConstant.getCallSiteTarget() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java Changeset: b7461f7fa8a0 Author: Doug Simon Date: 2014-11-06 13:55 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b7461f7fa8a0 added HotSpotObjectConstant.getCompositeValueClass() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Changeset: feef9ed5fc56 Author: Doug Simon Date: 2014-11-06 13:57 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/feef9ed5fc56 added HotSpotObjectConstant.isInternedString() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java Changeset: 7acff34abbf7 Author: Doug Simon Date: 2014-11-06 14:52 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7acff34abbf7 replaced HotSpotObjectConstantImpl.isCompressed() with HotSpotObjectConstant.isCompressed() ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCompare.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/AMD64HotSpotMove.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java Changeset: e7d219e9d01f Author: Doug Simon Date: 2014-11-06 20:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e7d219e9d01f removed HotSpotObjectConstantImpl.asObject() ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotAssembler.java ! graal/com.oracle.graal.hotspot.server/src/com/oracle/graal/hotspot/server/ReplacingStreams.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java Changeset: 5415422cb32f Author: Doug Simon Date: 2014-11-06 20:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/5415422cb32f Merge. Changeset: 463722cb77f8 Author: Doug Simon Date: 2014-11-06 20:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/463722cb77f8 fixed eclipseformat issue ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.java Changeset: ab8fbaa5e72f Author: Doug Simon Date: 2014-11-06 20:44 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ab8fbaa5e72f fixed minor regressions after removing HotSpotObjectConstantImpl.asObject() ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Changeset: 8e10f4877773 Author: Doug Simon Date: 2014-11-06 22:39 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8e10f4877773 fixed use of reflection in HSAILHotSpotAssembler ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotAssembler.java Changeset: 17bf458cf86e Author: Doug Simon Date: 2014-11-06 23:04 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/17bf458cf86e reduced use of HotSpotObjectConstantImpl.forObject ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Changeset: a6e7531d3dd3 Author: Doug Simon Date: 2014-11-06 23:12 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a6e7531d3dd3 made HotSpotMetaspaceConstantImpl.forMetaspaceObject and HotSpotMetaspaceConstantImpl.getMetaspaceObject package private ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledRuntimeStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstantImpl.java Changeset: d1f5e41c3afe Author: Doug Simon Date: 2014-11-06 23:49 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d1f5e41c3afe added GraalCompiler.Request to encapsulate all inputs to a compilation ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java From java at stefan-marr.de Fri Nov 7 13:05:57 2014 From: java at stefan-marr.de (Stefan Marr) Date: Fri, 7 Nov 2014 14:05:57 +0100 Subject: Potential compiler bug In-Reply-To: References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> Message-ID: <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> Hi: I think, I found the place where the optimizer does something that is potentially wrong. Further investigating the issue made me realize that when IGV is used, it takes time until the compiled method gets installed. It seems, it is only used after IGV finished loading/receiving all the information. The main benchmark method is of course too large, so I tried to find the smallest method that has the issue when being compiled, and that seems to be Ball class? initializer: mx --vm server vm -G:TruffleCompileOnly="Ball>>#initialize" -G:Dump=Truffle,TruffleTree -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Bounce 1500 0 200 So, the characteristic I looked for in the graph is the Random number generator. The constants 1309 and 13849 are easily found after the inlining of the Random methods. In IGV, it is the first subtree of OCT::callRoot. The Random methods are inlined in step 146. The results look fine, and step 156 ?After phase DeadCodeElimination? is still correct. The next Canonicalizer step however reduces the random number computation to a constant. On the Smalltalk level, I don?t understand why that would be possible. The initializer of the Random class with it?s constant does not seem to be inlined. So, the value of Random?s seed field is not merely a data dependency. On the program level, each Ball is initialize independently, and the ?global? seed value is changed after each new Ball object is created. So, I think, that?s where something is going wrong. Would be great if someone with more knowledge of the optimizer could have a look at this. The relevant TruffleSOM code can be obtained by: git clone -b mt-vs-pe/without-object-layout --recursive https://github.com/smarr/TruffleSOM ant jar Thanks Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From thomas.wuerthinger at oracle.com Fri Nov 7 13:39:56 2014 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Fri, 7 Nov 2014 14:39:56 +0100 Subject: Potential compiler bug In-Reply-To: <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> Message-ID: <4EE44EB5-C9CA-4DA4-B01C-2BB4FFF54EE1@oracle.com> Thanks for looking detailed at this. Can you upload the exported IdealGraphVisualizer file somewhere? Thanks, thomas On 07 Nov 2014, at 14:05, Stefan Marr wrote: > Hi: > > I think, I found the place where the optimizer does something that is potentially wrong. > > Further investigating the issue made me realize that when IGV is used, it takes time until the compiled method gets installed. It seems, it is only used after IGV finished loading/receiving all the information. > > The main benchmark method is of course too large, so I tried to find the smallest method that has the issue when being compiled, and that seems to be Ball class? initializer: > > mx --vm server vm -G:TruffleCompileOnly="Ball>>#initialize" -G:Dump=Truffle,TruffleTree -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Bounce 1500 0 200 > > So, the characteristic I looked for in the graph is the Random number generator. The constants 1309 and 13849 are easily found after the inlining of the Random methods. > In IGV, it is the first subtree of OCT::callRoot. The Random methods are inlined in step 146. > > The results look fine, and step 156 ?After phase DeadCodeElimination? is still correct. The next Canonicalizer step however reduces the random number computation to a constant. On the Smalltalk level, I don?t understand why that would be possible. The initializer of the Random class with it?s constant does not seem to be inlined. So, the value of Random?s seed field is not merely a data dependency. > On the program level, each Ball is initialize independently, and the ?global? seed value is changed after each new Ball object is created. > > So, I think, that?s where something is going wrong. > Would be great if someone with more knowledge of the optimizer could have a look at this. > > The relevant TruffleSOM code can be obtained by: > > git clone -b mt-vs-pe/without-object-layout --recursive https://github.com/smarr/TruffleSOM > ant jar > > Thanks > Stefan > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > From java at stefan-marr.de Fri Nov 7 13:46:22 2014 From: java at stefan-marr.de (Stefan Marr) Date: Fri, 7 Nov 2014 14:46:22 +0100 Subject: Potential compiler bug In-Reply-To: <4EE44EB5-C9CA-4DA4-B01C-2BB4FFF54EE1@oracle.com> References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> <4EE44EB5-C9CA-4DA4-B01C-2BB4FFF54EE1@oracle.com> Message-ID: Hi: > On 07 Nov 2014, at 14:39, Thomas Wuerthinger wrote: > > Thanks for looking detailed at this. Can you upload the exported IdealGraphVisualizer file somewhere? Thanks, thomas Sure, I guess the ?save all groups? button is the way to go: http://stefan-marr.de/downloads/truffle/Bounce-miscompilation-igv.xml.bz2 Thanks Stefan > > On 07 Nov 2014, at 14:05, Stefan Marr wrote: > >> Hi: >> >> I think, I found the place where the optimizer does something that is potentially wrong. >> >> Further investigating the issue made me realize that when IGV is used, it takes time until the compiled method gets installed. It seems, it is only used after IGV finished loading/receiving all the information. >> >> The main benchmark method is of course too large, so I tried to find the smallest method that has the issue when being compiled, and that seems to be Ball class? initializer: >> >> mx --vm server vm -G:TruffleCompileOnly="Ball>>#initialize" -G:Dump=Truffle,TruffleTree -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Bounce 1500 0 200 >> >> So, the characteristic I looked for in the graph is the Random number generator. The constants 1309 and 13849 are easily found after the inlining of the Random methods. >> In IGV, it is the first subtree of OCT::callRoot. The Random methods are inlined in step 146. >> >> The results look fine, and step 156 ?After phase DeadCodeElimination? is still correct. The next Canonicalizer step however reduces the random number computation to a constant. On the Smalltalk level, I don?t understand why that would be possible. The initializer of the Random class with it?s constant does not seem to be inlined. So, the value of Random?s seed field is not merely a data dependency. >> On the program level, each Ball is initialize independently, and the ?global? seed value is changed after each new Ball object is created. >> >> So, I think, that?s where something is going wrong. >> Would be great if someone with more knowledge of the optimizer could have a look at this. >> >> The relevant TruffleSOM code can be obtained by: >> >> git clone -b mt-vs-pe/without-object-layout --recursive https://github.com/smarr/TruffleSOM >> ant jar >> >> Thanks >> Stefan >> >> -- >> Stefan Marr >> INRIA Lille - Nord Europe >> http://stefan-marr.de/research/ >> >> >> > -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From andreas.woess at jku.at Fri Nov 7 13:49:27 2014 From: andreas.woess at jku.at (Andreas Woess) Date: Fri, 07 Nov 2014 14:49:27 +0100 Subject: Potential compiler bug In-Reply-To: <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> Message-ID: <545CCDE7.2040903@jku.at> Hi Stefan, thanks for the detailed bug report. We've already found the problem and will work on a fix. I'll get back to you once it's ready. - andreas On 07/11/14 14:05, Stefan Marr wrote: > Hi: > > I think, I found the place where the optimizer does something that is potentially wrong. > > Further investigating the issue made me realize that when IGV is used, it takes time until the compiled method gets installed. It seems, it is only used after IGV finished loading/receiving all the information. > > The main benchmark method is of course too large, so I tried to find the smallest method that has the issue when being compiled, and that seems to be Ball class? initializer: > > mx --vm server vm -G:TruffleCompileOnly="Ball>>#initialize" -G:Dump=Truffle,TruffleTree -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Bounce 1500 0 200 > > So, the characteristic I looked for in the graph is the Random number generator. The constants 1309 and 13849 are easily found after the inlining of the Random methods. > In IGV, it is the first subtree of OCT::callRoot. The Random methods are inlined in step 146. > > The results look fine, and step 156 ?After phase DeadCodeElimination? is still correct. The next Canonicalizer step however reduces the random number computation to a constant. On the Smalltalk level, I don?t understand why that would be possible. The initializer of the Random class with it?s constant does not seem to be inlined. So, the value of Random?s seed field is not merely a data dependency. > On the program level, each Ball is initialize independently, and the ?global? seed value is changed after each new Ball object is created. > > So, I think, that?s where something is going wrong. > Would be great if someone with more knowledge of the optimizer could have a look at this. > > The relevant TruffleSOM code can be obtained by: > > git clone -b mt-vs-pe/without-object-layout --recursive https://github.com/smarr/TruffleSOM > ant jar > > Thanks > Stefan > From java at stefan-marr.de Fri Nov 7 14:21:52 2014 From: java at stefan-marr.de (Stefan Marr) Date: Fri, 7 Nov 2014 15:21:52 +0100 Subject: Potential compiler bug In-Reply-To: <545CCDE7.2040903@jku.at> References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> <545CCDE7.2040903@jku.at> Message-ID: <0BE7A402-6AE5-490E-BDE1-EFE4FC9C8750@stefan-marr.de> Hi Andreas: > On 07 Nov 2014, at 14:49, Andreas Woess wrote: > > thanks for the detailed bug report. We've already found the problem and will work on a fix. I?ll get back to you once it's ready. Thanks a lot! Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From raffaello.giulietti at supsi.ch Fri Nov 7 17:40:04 2014 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Fri, 07 Nov 2014 18:40:04 +0100 Subject: Building Graal on Windows Message-ID: <545D03F4.1000606@supsi.ch> Hello, I'm on Windows 7 (64 bit) and would like to build Graal. The instructions at https://wiki.openjdk.java.net/display/Graal/Windows mention to install "DirectX SDK (Summer 2004)". This version of the DirectX SDK seems not to be available anymore on the Microsoft sites, so I'm stuck. I'm somehow reluctant to download the DirectX SDK from other sites not related to Microsoft, but I'm willing to do so if you recommend specific, reliable software repositories. Alternatively, does it really have to be the Summer 2004 release or do more recent releases work as well? Thanks for suggestions Raffaello Giulietti From christian.humer at gmail.com Fri Nov 7 18:02:33 2014 From: christian.humer at gmail.com (Christian Humer) Date: Fri, 7 Nov 2014 19:02:33 +0100 Subject: Building Graal on Windows In-Reply-To: <545D03F4.1000606@supsi.ch> References: <545D03F4.1000606@supsi.ch> Message-ID: Hi Raffaello, I am running on Windows 8 (64 bit) and it works fine for me on a modern direct x version (DirectX 11) I think the information on the wiki is just outdated. Can you try if you can continue without installing any specific directx version? Let us know if it worked, so we can update the wiki. Thanks! - Christian Humer On Fri, Nov 7, 2014 at 6:40 PM, Raffaello Giulietti < raffaello.giulietti at supsi.ch> wrote: > Hello, > > I'm on Windows 7 (64 bit) and would like to build Graal. > > The instructions at https://wiki.openjdk.java.net/display/Graal/Windows > mention to install "DirectX SDK (Summer 2004)". This version of the DirectX > SDK seems not to be available anymore on the Microsoft sites, so I'm stuck. > > I'm somehow reluctant to download the DirectX SDK from other sites not > related to Microsoft, but I'm willing to do so if you recommend specific, > reliable software repositories. > > Alternatively, does it really have to be the Summer 2004 release or do > more recent releases work as well? > > Thanks for suggestions > Raffaello Giulietti > From bernhard.urban at jku.at Fri Nov 7 18:14:29 2014 From: bernhard.urban at jku.at (Bernhard Urban) Date: Fri, 7 Nov 2014 19:14:29 +0100 Subject: Building Graal on Windows In-Reply-To: References: <545D03F4.1000606@supsi.ch> Message-ID: afaik the DirectX dependency is only needed for building the whole JDK, but not for HotSpot (which will be built with Graal). Can you try to skip this step? -Bernhard On Nov 7, 2014 7:05 PM, "Christian Humer" wrote: > Hi Raffaello, > > I am running on Windows 8 (64 bit) and it works fine for me on a modern > direct x version (DirectX 11) > I think the information on the wiki is just outdated. > > Can you try if you can continue without installing any specific directx > version? > Let us know if it worked, so we can update the wiki. > > Thanks! > > - Christian Humer > > On Fri, Nov 7, 2014 at 6:40 PM, Raffaello Giulietti < > raffaello.giulietti at supsi.ch> wrote: > > > Hello, > > > > I'm on Windows 7 (64 bit) and would like to build Graal. > > > > The instructions at https://wiki.openjdk.java.net/display/Graal/Windows > > mention to install "DirectX SDK (Summer 2004)". This version of the > DirectX > > SDK seems not to be available anymore on the Microsoft sites, so I'm > stuck. > > > > I'm somehow reluctant to download the DirectX SDK from other sites not > > related to Microsoft, but I'm willing to do so if you recommend specific, > > reliable software repositories. > > > > Alternatively, does it really have to be the Summer 2004 release or do > > more recent releases work as well? > > > > Thanks for suggestions > > Raffaello Giulietti > > > > From raffaello.giulietti at supsi.ch Fri Nov 7 18:22:48 2014 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Fri, 07 Nov 2014 19:22:48 +0100 Subject: Building Graal on Windows Message-ID: <545D0DF8.2010608@supsi.ch> Hi Christian, hi Bernhard, I'll try the build without the DirectX SDK but that won't be before next week. I'll give you a detailed feedback about the build on this mailing list as soon as I get a running Graal VM. Thanks for your help Raffaello On 2014-11-07 19:14, Bernhard Urban wrote: > afaik the DirectX dependency is only needed for building the whole JDK, > but not for HotSpot (which will be built with Graal). Can you try to > skip this step? > > -Bernhard > > On Nov 7, 2014 7:05 PM, "Christian Humer" > wrote: > > Hi Raffaello, > > I am running on Windows 8 (64 bit) and it works fine for me on a modern > direct x version (DirectX 11) > I think the information on the wiki is just outdated. > > Can you try if you can continue without installing any specific directx > version? > Let us know if it worked, so we can update the wiki. > > Thanks! > > - Christian Humer > > On Fri, Nov 7, 2014 at 6:40 PM, Raffaello Giulietti < > raffaello.giulietti at supsi.ch > > wrote: > > > Hello, > > > > I'm on Windows 7 (64 bit) and would like to build Graal. > > > > The instructions at > https://wiki.openjdk.java.net/display/Graal/Windows > > mention to install "DirectX SDK (Summer 2004)". This version of > the DirectX > > SDK seems not to be available anymore on the Microsoft sites, so > I'm stuck. > > > > I'm somehow reluctant to download the DirectX SDK from other > sites not > > related to Microsoft, but I'm willing to do so if you recommend > specific, > > reliable software repositories. > > > > Alternatively, does it really have to be the Summer 2004 release > or do > > more recent releases work as well? > > > > Thanks for suggestions > > Raffaello Giulietti > > > From doug.simon at oracle.com Sat Nov 8 02:00:06 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 08 Nov 2014 02:00:06 +0000 Subject: hg: graal/graal: 10 new changesets Message-ID: <201411080200.sA8207S4023269@aojmv0008> Changeset: ba5c9055c53a Author: Roland Schatz Date: 2014-11-07 10:56 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ba5c9055c53a Make abs and sqrt subclasses of UnaryArithmeticNode. ! 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/IntegerStamp.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MathSubstitutionsX86.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Changeset: 1b1569d182f9 Author: Roland Schatz Date: 2014-11-07 10:58 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1b1569d182f9 Support bitwise logic on float and double operands. ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java Changeset: 9734f97bddfe Author: Roland Schatz Date: 2014-11-07 10:58 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9734f97bddfe Intrinsify Math.abs(float). ! graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MathSubstitutionsX86.java Changeset: 0f41072d8bbc Author: Doug Simon Date: 2014-11-07 11:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0f41072d8bbc moved use of HotSpotMetaAccessProvider to locations on the "local" side of remote compilation ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProviders.java Changeset: fb289eb7243d Author: Doug Simon Date: 2014-11-07 12:34 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fb289eb7243d removed getKind() from HotSpotMetaspaceConstant and made the latter extend StampProvider ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java Changeset: ab47ef2f2207 Author: Doug Simon Date: 2014-11-07 12:35 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/graal/graalRuntime.cpp ! src/share/vm/graal/graalRuntime.hpp Changeset: bf586af6fa0c Author: Doug Simon Date: 2014-11-07 12:36 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/bf586af6fa0c Merge. Changeset: da76d42c397e Author: Doug Simon Date: 2014-11-07 14:50 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/da76d42c397e preliminary code for managing and testing replay/remote compilation + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Handler.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Invocation.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/ProxyUtil.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 229dc0d72f2f Author: Tom Rodriguez Date: 2014-11-07 09:44 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/229dc0d72f2f fix mx warning ! mx/mx_graal.py Changeset: 85f5227a7a37 Author: Tom Rodriguez Date: 2014-11-07 15:46 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/85f5227a7a37 add mutable/immutable factory methods to NamedLocationIdentity ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILHotSpotReplacementsUtil.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/MonitorSnippets.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/WriteBarrierSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UncommonTrapStub.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/PointerTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetCounter.java From doug.simon at oracle.com Sat Nov 8 18:54:18 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 08 Nov 2014 18:54:18 +0000 Subject: hg: graal/graal: hotspotvmcfg: adding jacoco exclude marker Message-ID: <201411081854.sA8IsI5s020773@aojmv0008> Changeset: 7c7930eb4def Author: Bernhard Urban Date: 2014-11-08 15:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7c7930eb4def hotspotvmcfg: adding jacoco exclude marker ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java From raffaello.giulietti at supsi.ch Sat Nov 8 21:05:45 2014 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Sat, 08 Nov 2014 22:05:45 +0100 Subject: Building Graal on Windows In-Reply-To: <545D0DF8.2010608@supsi.ch> References: <545D0DF8.2010608@supsi.ch> Message-ID: <545E85A9.6060503@supsi.ch> OK, as suggested below by Christina and Bernhard, I could build a Graal enabled VM (C1 + C2 + Graal) *without* the need of DirectX SDK of any sort. The installation instructions should be modified. However, since the installation of Visual C++ 2010 is rather convoluted depending on the previous exposure of your PC to Visual Studio (see http://go.microsoft.com/fwlink/?LinkID=213290 and the related documentation for full details), I would like to try a build with a newer release of Visual Studio C++ Express, which all come with both x86 and x64 backends already built in. Do you foresee problems with this? If not, I'll report my findings in a couple of days or so. Best regards Raffaello On 2014-11-07 19:22, Raffaello Giulietti wrote: > Hi Christian, hi Bernhard, > > I'll try the build without the DirectX SDK but that won't be before next > week. I'll give you a detailed feedback about the build on this mailing > list as soon as I get a running Graal VM. > > Thanks for your help > Raffaello > > > > On 2014-11-07 19:14, Bernhard Urban wrote: > > afaik the DirectX dependency is only needed for building the whole JDK, > > but not for HotSpot (which will be built with Graal). Can you try to > > skip this step? > > > > -Bernhard > > > > On Nov 7, 2014 7:05 PM, "Christian Humer" > > wrote: > > > > Hi Raffaello, > > > > I am running on Windows 8 (64 bit) and it works fine for me on a > modern > > direct x version (DirectX 11) > > I think the information on the wiki is just outdated. > > > > Can you try if you can continue without installing any specific > directx > > version? > > Let us know if it worked, so we can update the wiki. > > > > Thanks! > > > > - Christian Humer > > > > On Fri, Nov 7, 2014 at 6:40 PM, Raffaello Giulietti < > > raffaello.giulietti at supsi.ch > > > wrote: > > > > > Hello, > > > > > > I'm on Windows 7 (64 bit) and would like to build Graal. > > > > > > The instructions at > > https://wiki.openjdk.java.net/display/Graal/Windows > > > mention to install "DirectX SDK (Summer 2004)". This version of > > the DirectX > > > SDK seems not to be available anymore on the Microsoft sites, so > > I'm stuck. > > > > > > I'm somehow reluctant to download the DirectX SDK from other > > sites not > > > related to Microsoft, but I'm willing to do so if you recommend > > specific, > > > reliable software repositories. > > > > > > Alternatively, does it really have to be the Summer 2004 release > > or do > > > more recent releases work as well? > > > > > > Thanks for suggestions > > > Raffaello Giulietti > > > > > > From doug.simon at oracle.com Sat Nov 8 21:11:51 2014 From: doug.simon at oracle.com (Doug Simon) Date: Sat, 8 Nov 2014 22:11:51 +0100 Subject: Building Graal on Windows In-Reply-To: <545E85A9.6060503@supsi.ch> References: <545D0DF8.2010608@supsi.ch> <545E85A9.6060503@supsi.ch> Message-ID: > On Nov 8, 2014, at 10:05 PM, Raffaello Giulietti wrote: > > OK, as suggested below by Christina and Bernhard, I could build a Graal enabled VM (C1 + C2 + Graal) *without* the need of DirectX SDK of any sort. The installation instructions should be modified. > > However, since the installation of Visual C++ 2010 is rather convoluted depending on the previous exposure of your PC to Visual Studio (see http://go.microsoft.com/fwlink/?LinkID=213290 and the related documentation for full details), I would like to try a build with a newer release of Visual Studio C++ Express, which all come with both x86 and x64 backends already built in. > > Do you foresee problems with this? I?ll leave that up to the Graal devs who regularly develop on Windows to answer. > If not, I'll report my findings in a couple of days or so. That would be great. The more detailed you are, the better we can update the wiki documentation. -Doug > On 2014-11-07 19:22, Raffaello Giulietti wrote: >> Hi Christian, hi Bernhard, >> >> I'll try the build without the DirectX SDK but that won't be before next >> week. I'll give you a detailed feedback about the build on this mailing >> list as soon as I get a running Graal VM. >> >> Thanks for your help >> Raffaello >> >> >> >> On 2014-11-07 19:14, Bernhard Urban wrote: >> > afaik the DirectX dependency is only needed for building the whole JDK, >> > but not for HotSpot (which will be built with Graal). Can you try to >> > skip this step? >> > >> > -Bernhard >> > >> > On Nov 7, 2014 7:05 PM, "Christian Humer" > > > wrote: >> > >> > Hi Raffaello, >> > >> > I am running on Windows 8 (64 bit) and it works fine for me on a >> modern >> > direct x version (DirectX 11) >> > I think the information on the wiki is just outdated. >> > >> > Can you try if you can continue without installing any specific >> directx >> > version? >> > Let us know if it worked, so we can update the wiki. >> > >> > Thanks! >> > >> > - Christian Humer >> > >> > On Fri, Nov 7, 2014 at 6:40 PM, Raffaello Giulietti < >> > raffaello.giulietti at supsi.ch > >> > wrote: >> > >> > > Hello, >> > > >> > > I'm on Windows 7 (64 bit) and would like to build Graal. >> > > >> > > The instructions at >> > https://wiki.openjdk.java.net/display/Graal/Windows >> > > mention to install "DirectX SDK (Summer 2004)". This version of >> > the DirectX >> > > SDK seems not to be available anymore on the Microsoft sites, so >> > I'm stuck. >> > > >> > > I'm somehow reluctant to download the DirectX SDK from other >> > sites not >> > > related to Microsoft, but I'm willing to do so if you recommend >> > specific, >> > > reliable software repositories. >> > > >> > > Alternatively, does it really have to be the Summer 2004 release >> > or do >> > > more recent releases work as well? >> > > >> > > Thanks for suggestions >> > > Raffaello Giulietti >> > > >> > >> > From doug.simon at oracle.com Sat Nov 8 23:11:34 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 08 Nov 2014 23:11:34 +0000 Subject: hg: graal/graal: 2 new changesets Message-ID: <201411082311.sA8NBZiD029105@aojmv0008> Changeset: d079b2af3a15 Author: Chris Seaton Date: 2014-11-08 22:03 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/d079b2af3a15 Truffle: more explicit warning about isCompilationConstant. ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/CompilerDirectives.java Changeset: 36fb9592c13b Author: Chris Seaton Date: 2014-11-08 22:22 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/36fb9592c13b Truffle: simpler, more consistent toString for DirectCallNode subclasses. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedDirectCallNode.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultDirectCallNode.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/DirectCallNode.java From christian.humer at gmail.com Sun Nov 9 00:11:22 2014 From: christian.humer at gmail.com (Christian Humer) Date: Sun, 9 Nov 2014 01:11:22 +0100 Subject: Building Graal on Windows In-Reply-To: <545E85A9.6060503@supsi.ch> References: <545D0DF8.2010608@supsi.ch> <545E85A9.6060503@supsi.ch> Message-ID: On Sat, Nov 8, 2014 at 10:05 PM, Raffaello Giulietti < raffaello.giulietti at supsi.ch> wrote: > Do you foresee problems with this? I recently upgraded to Visual Studio 2013 Ultimate and had no problems with it so far. But you still have to install Microsoft SDK 7.1. - Christian Humer From doug.simon at oracle.com Sun Nov 9 02:00:11 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sun, 09 Nov 2014 02:00:11 +0000 Subject: hg: graal/graal: Truffle: RootNode#getExecutionContext. Message-ID: <201411090200.sA920CTj024589@aojmv0008> Changeset: 3343ed66de79 Author: Chris Seaton Date: 2014-11-09 00:54 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/3343ed66de79 Truffle: RootNode#getExecutionContext. ! CHANGELOG.md ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLRootNode.java From raffaello.giulietti at supsi.ch Sun Nov 9 17:26:24 2014 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Sun, 09 Nov 2014 18:26:24 +0100 Subject: Class-based dynamic languages on Truffle OSM Message-ID: <545FA3C0.1020303@supsi.ch> I recently read the very interesting Truffle OSM paper (http://dl.acm.org/citation.cfm?id=2647517). If my understanding is correct, the paper proposes to treat all guest language (g-lang) objects as instances of a *single* Java subclass of StorageObject, like the exemplar JSObject. While this one-size-fits-all approach might be ideal for prototype-based or open-ended class-based g-langs, where instances can grow as new properties are added at runtime, I wonder if it is ideal for those dynamic g-langs where the set of instance variables (fields) is fixed at class definition time, like in Smalltalk. I'm not sure if my understanding is correct or if Truffle/Graal's magic is able to optimize the size and the shape of objects along their way from birth to death. This would be wonderful! Any clarifications, even technically detailed ones, would be welcome. Thanks in advance Raffaello Giulietti From thomas.wuerthinger at oracle.com Sun Nov 9 18:25:35 2014 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Sun, 9 Nov 2014 19:25:35 +0100 Subject: Class-based dynamic languages on Truffle OSM In-Reply-To: <545FA3C0.1020303@supsi.ch> References: <545FA3C0.1020303@supsi.ch> Message-ID: <66D2849A-FCD0-498C-9D74-ED0744352359@oracle.com> Raffaello, Languages are free to chose their own way of implementing the object layout when using Truffle. The paper describes one specific technique that has shown to be good for objects of dynamic size and shape. In case of fixed size objects, one might still want to speculate on the types of fields. This can be beneficial even in case of static languages like Java, because the provided static type of a field is only a conservative estimate of the actual type of values stored in the field at run time. Stefan Marr?s TruffleSOM (https://github.com/smarr/TruffleSOM) is an example implementation of Smalltalk using Truffle. Regards, thomas On 09 Nov 2014, at 18:26, Raffaello Giulietti wrote: > I recently read the very interesting Truffle OSM paper (http://dl.acm.org/citation.cfm?id=2647517). > > If my understanding is correct, the paper proposes to treat all guest language (g-lang) objects as instances of a *single* Java subclass of StorageObject, like the exemplar JSObject. > > While this one-size-fits-all approach might be ideal for prototype-based or open-ended class-based g-langs, where instances can grow as new properties are added at runtime, I wonder if it is ideal for those dynamic g-langs where the set of instance variables (fields) is fixed at class definition time, like in Smalltalk. > > I'm not sure if my understanding is correct or if Truffle/Graal's magic is able to optimize the size and the shape of objects along their way from birth to death. This would be wonderful! > > Any clarifications, even technically detailed ones, would be welcome. > > Thanks in advance > Raffaello Giulietti > From raffaello.giulietti at supsi.ch Sun Nov 9 19:26:41 2014 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Sun, 09 Nov 2014 20:26:41 +0100 Subject: Class-based dynamic languages on Truffle OSM In-Reply-To: <66D2849A-FCD0-498C-9D74-ED0744352359@oracle.com> References: <545FA3C0.1020303@supsi.ch> <66D2849A-FCD0-498C-9D74-ED0744352359@oracle.com> Message-ID: <545FBFF1.10501@supsi.ch> Thomas, thanks for referring to the work of Stefan, I'm already in contact with him. Yes, the design I would like to realize, after a look at TruffleSOM to learn about Stefan's way, is to speculate on the type of the instance variables (fields) as to distinguish between primitive values like small integers and doubles and true references, as otherwise values would need to be boxed. So where traditional Smalltalk implementations use tagging, speculating on the type would be beneficial, as the paper points out. Regards Raffaello On 2014-11-09 19:25, Thomas Wuerthinger wrote: > Raffaello, > > Languages are free to chose their own way of implementing the object > layout when using Truffle. The paper describes one specific technique > that has shown to be good for objects of dynamic size and shape. > > In case of fixed size objects, one might still want to speculate on the > types of fields. This can be beneficial even in case of static languages > like Java, because the provided static type of a field is only a > conservative estimate of the actual type of values stored in the field > at run time. Stefan Marr?s TruffleSOM > (https://github.com/smarr/TruffleSOM) is an example implementation of > Smalltalk using Truffle. > > Regards, thomas > > > On 09 Nov 2014, at 18:26, Raffaello Giulietti > > wrote: > >> I recently read the very interesting Truffle OSM paper >> (http://dl.acm.org/citation.cfm?id=2647517). >> >> If my understanding is correct, the paper proposes to treat all guest >> language (g-lang) objects as instances of a *single* Java subclass of >> StorageObject, like the exemplar JSObject. >> >> While this one-size-fits-all approach might be ideal for >> prototype-based or open-ended class-based g-langs, where instances can >> grow as new properties are added at runtime, I wonder if it is ideal >> for those dynamic g-langs where the set of instance variables (fields) >> is fixed at class definition time, like in Smalltalk. >> >> I'm not sure if my understanding is correct or if Truffle/Graal's >> magic is able to optimize the size and the shape of objects along >> their way from birth to death. This would be wonderful! >> >> Any clarifications, even technically detailed ones, would be welcome. >> >> Thanks in advance >> Raffaello Giulietti >> > From java at stefan-marr.de Sun Nov 9 20:12:20 2014 From: java at stefan-marr.de (Stefan Marr) Date: Sun, 9 Nov 2014 21:12:20 +0100 Subject: Class-based dynamic languages on Truffle OSM In-Reply-To: <545FBFF1.10501@supsi.ch> References: <545FA3C0.1020303@supsi.ch> <66D2849A-FCD0-498C-9D74-ED0744352359@oracle.com> <545FBFF1.10501@supsi.ch> Message-ID: <921D5E45-C3C8-4A58-8841-01208F4DFA75@stefan-marr.de> Hi Raffaello: > Yes, the design I would like to realize, after a look at TruffleSOM to learn about Stefan's way, is to speculate on the type of the instance variables (fields) as to distinguish between primitive values like small integers and doubles and true references, as otherwise values would need to be boxed. So where traditional Smalltalk implementations use tagging, speculating on the type would be beneficial, as the paper points out. In TruffleSOM, integers are transparently managed to be either Java longs or BigIntegers. SOM?s Double is directly mapped on Java doubles. The object-layout-specific changes are all in this commit: https://github.com/smarr/TruffleSOM/commit/2b02300e34ebe3a421d2ce848f5bab17a7a29bc0 (Note, the commit actually removes them to see what the performance impact is.) Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From doug.simon at oracle.com Mon Nov 10 02:00:06 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Mon, 10 Nov 2014 02:00:06 +0000 Subject: hg: graal/graal: Add CONTRIBUTING.md file which will show up in GitHub when people try to send pull requests. Message-ID: <201411100200.sAA207Xn011391@aojmv0008> Changeset: a968fd429ee5 Author: Chris Seaton Date: 2014-11-09 16:33 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/a968fd429ee5 Add CONTRIBUTING.md file which will show up in GitHub when people try to send pull requests. + CONTRIBUTING.md From duboscq at ssw.jku.at Mon Nov 10 08:05:56 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Mon, 10 Nov 2014 09:05:56 +0100 Subject: Building Graal on Windows In-Reply-To: References: <545D0DF8.2010608@supsi.ch> <545E85A9.6060503@supsi.ch> Message-ID: On Sun, Nov 9, 2014 at 1:11 AM, Christian Humer wrote: > On Sat, Nov 8, 2014 at 10:05 PM, Raffaello Giulietti < > raffaello.giulietti at supsi.ch> wrote: > >> Do you foresee problems with this? > > > I recently upgraded to Visual Studio 2013 Ultimate and had no problems with > it so far. > But you still have to install Microsoft SDK 7.1. Actually, you should only need the SDK if you only want to build. It already contains all the necessary toolchain. > > > - Christian Humer -Gilles From doug.simon at oracle.com Mon Nov 10 13:28:19 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Mon, 10 Nov 2014 13:28:19 +0000 Subject: hg: graal/graal: 3 new changesets Message-ID: <201411101328.sAADSJux026659@aojmv0008> Changeset: 6b8bceeecb30 Author: Josef Eisl Date: 2014-11-06 12:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6b8bceeecb30 MethodCallTargetNode: also simplify default method calls to virtual calls if possible. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: 3cc813ce3cea Author: Josef Eisl Date: 2014-11-10 11:31 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3cc813ce3cea MethodCallTargetNode: document the single implementor optimization. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: c7cd54360119 Author: Josef Eisl Date: 2014-11-10 11:24 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c7cd54360119 MethodCallTargetNode: replace StampFactory.declared() with StampFactory.declaredNonNull(). ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java From Shreyas.Ramalingam at amd.com Mon Nov 10 15:54:39 2014 From: Shreyas.Ramalingam at amd.com (Ramalingam, Shreyas) Date: Mon, 10 Nov 2014 15:54:39 +0000 Subject: Webrev for generating hsail1.0 p In-Reply-To: References: Message-ID: Hi Chris, Unfortunately, the tools we sit on decided to use the date the spec was released instead of major - minor versions. The actual version of HSAIL generated is 1.0P - so we are moving forward and not backward :) Thanks, Shreyas From: Christian Thalinger [mailto:christian.thalinger at oracle.com] Sent: Thursday, November 06, 2014 5:41 PM To: Ramalingam, Shreyas Cc: graal-dev at openjdk.java.net Subject: Re: Webrev for generating hsail1.0 p On Oct 23, 2014, at 1:34 PM, Ramalingam, Shreyas > wrote: Hi All, Webrev http://cr.openjdk.java.net/~tdeneau/graal-webrevs/webrev-hsail1.0p upgrades graal to generate hsail1.0p from 0.95. This is for the HSAIL backend. Can you please review ? - asm.emitString0("version 0:95: $full : $large;\n"); + asm.emitString0("version 0:20140528: $full : $large;\n"); That's interesting. I was expecting something else :-) Otherwise this looks good. Thanks, Shreyas From raffaello.giulietti at supsi.ch Mon Nov 10 16:13:06 2014 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Mon, 10 Nov 2014 17:13:06 +0100 Subject: Building Graal on Windows In-Reply-To: References: <545D0DF8.2010608@supsi.ch> <545E85A9.6060503@supsi.ch> Message-ID: <5460E412.1000300@supsi.ch> On 2014-11-10 09:05, Gilles Duboscq wrote: > On Sun, Nov 9, 2014 at 1:11 AM, Christian Humer > wrote: >> On Sat, Nov 8, 2014 at 10:05 PM, Raffaello Giulietti < >> raffaello.giulietti at supsi.ch> wrote: >> >>> Do you foresee problems with this? >> >> >> I recently upgraded to Visual Studio 2013 Ultimate and had no problems with >> it so far. >> But you still have to install Microsoft SDK 7.1. > Christian, do you know why it has to be 7.1? Why not 8.1? Are there dependencies on the older Windows SDK? > Actually, you should only need the SDK if you only want to build. > It already contains all the necessary toolchain. > Gilles, that seems to be true for Windows SDK 7.1 but not for 8.1 ("The Windows SDK no longer ships with a complete command-line build environment. You must install a compiler and build environment separately.") I'll try different configurations with the aim to install as less components as possible. Greetings Raffaello From raffaello.giulietti at supsi.ch Mon Nov 10 16:46:02 2014 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Mon, 10 Nov 2014 17:46:02 +0100 Subject: Class-based dynamic languages on Truffle OSM In-Reply-To: <66D2849A-FCD0-498C-9D74-ED0744352359@oracle.com> References: <545FA3C0.1020303@supsi.ch> <66D2849A-FCD0-498C-9D74-ED0744352359@oracle.com> Message-ID: <5460EBCA.4070008@supsi.ch> Is there any hope that the Graal VM will someday be able to optimize the layout (quantity/type of fields) of the objects and inline the extensions arrays in the objects once it sees a stable shape? And to de-optimize it when needed? Regards Raffaello On 2014-11-09 19:25, Thomas Wuerthinger wrote: > Raffaello, > > Languages are free to chose their own way of implementing the object > layout when using Truffle. The paper describes one specific technique > that has shown to be good for objects of dynamic size and shape. > > In case of fixed size objects, one might still want to speculate on the > types of fields. This can be beneficial even in case of static languages > like Java, because the provided static type of a field is only a > conservative estimate of the actual type of values stored in the field > at run time. Stefan Marr?s TruffleSOM > (https://github.com/smarr/TruffleSOM) is an example implementation of > Smalltalk using Truffle. > > Regards, thomas > > > On 09 Nov 2014, at 18:26, Raffaello Giulietti > > wrote: > >> I recently read the very interesting Truffle OSM paper >> (http://dl.acm.org/citation.cfm?id=2647517). >> >> If my understanding is correct, the paper proposes to treat all guest >> language (g-lang) objects as instances of a *single* Java subclass of >> StorageObject, like the exemplar JSObject. >> >> While this one-size-fits-all approach might be ideal for >> prototype-based or open-ended class-based g-langs, where instances can >> grow as new properties are added at runtime, I wonder if it is ideal >> for those dynamic g-langs where the set of instance variables (fields) >> is fixed at class definition time, like in Smalltalk. >> >> I'm not sure if my understanding is correct or if Truffle/Graal's >> magic is able to optimize the size and the shape of objects along >> their way from birth to death. This would be wonderful! >> >> Any clarifications, even technically detailed ones, would be welcome. >> >> Thanks in advance >> Raffaello Giulietti >> > From christian.humer at gmail.com Mon Nov 10 17:58:43 2014 From: christian.humer at gmail.com (Christian Humer) Date: Mon, 10 Nov 2014 18:58:43 +0100 Subject: Building Graal on Windows In-Reply-To: <5460E412.1000300@supsi.ch> References: <545D0DF8.2010608@supsi.ch> <545E85A9.6060503@supsi.ch> <5460E412.1000300@supsi.ch> Message-ID: On Mon, Nov 10, 2014 at 5:13 PM, Raffaello Giulietti < raffaello.giulietti at supsi.ch> wrote: > Christian, do you know why it has to be 7.1? Why not 8.1? Are there > dependencies on the older Windows SDK? I can remember that some new version did not work for me. Unfortunately i cannot remember the cause. - Christian Humer From doug.simon at oracle.com Tue Nov 11 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 11 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 17 new changesets Message-ID: <201411110200.sAB208io021496@aojmv0008> Changeset: a1dca8b28839 Author: Doug Simon Date: 2014-11-10 16:49 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a1dca8b28839 fixed reference in javadoc ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java Changeset: c83efc00f6cc Author: Doug Simon Date: 2014-11-10 17:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c83efc00f6cc made LocationIdentity values support .equals() instead of identity (i.e. '==') for equality comparisons (and as hash map keys) ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/ObjectLocationIdentity.java Changeset: 0459da9d94c0 Author: Gilles Duboscq Date: 2014-11-10 18:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0459da9d94c0 Fix HotSpotCodeCacheProvider.disassemble ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java Changeset: 56cc1a799a60 Author: Doug Simon Date: 2014-11-07 22:00 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/56cc1a799a60 (re)converted Value to an interface ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java + graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/AbstractValue.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/AllocatableValue.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaConstant.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Value.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/ComplexMatchValue.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMonitorValue.java ! graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest1.java ! graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest2.java ! graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest3.java ! graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest4.java ! graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/ValuePositionTest1.java ! graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/ValuePositionTest2.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/graal/graalJavaAccess.hpp Changeset: 0093dcea7092 Author: Doug Simon Date: 2014-11-07 22:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0093dcea7092 converted JavaConstant to an interface ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaConstant.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NullConstant.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/PrimitiveConstant.java ! graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCompressedNullConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Changeset: b81405cd0298 Author: Doug Simon Date: 2014-11-09 16:56 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b81405cd0298 fixed NullConstant.equals to handle NullConstant not being a singleton ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NullConstant.java Changeset: 9376e7655efc Author: Doug Simon Date: 2014-11-09 16:59 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9376e7655efc IntegerStamp.constant only returns a single value stamp for PrimitiveConstants ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java Changeset: 301c5e3d683a Author: Doug Simon Date: 2014-11-09 17:01 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/301c5e3d683a removed *Impl types in signatures of Remote interfaces ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java Changeset: 06756883d87e Author: Doug Simon Date: 2014-11-10 17:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/06756883d87e removed annotation denoting which proxied invocations have their results cached (for now, all results are cached) ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Remote.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Handler.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Changeset: 6f99dae5df57 Author: Doug Simon Date: 2014-11-10 18:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6f99dae5df57 be verbose about replay compilation test failure ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 840257b6cdc5 Author: Doug Simon Date: 2014-11-10 18:16 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/840257b6cdc5 mx: added --fail-fast option to unittest that stops Junit after first input class causing a test failure ! graal/com.oracle.graal.test/src/com/oracle/graal/test/GraalJUnitCore.java ! graal/com.oracle.graal.test/src/com/oracle/graal/test/GraalTextListener.java ! graal/com.oracle.graal.test/src/com/oracle/graal/test/GraalVerboseTextListener.java ! mx/mx_graal.py Changeset: 13273385abb5 Author: Doug Simon Date: 2014-11-10 18:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/13273385abb5 Merge. ! mx/mx_graal.py Changeset: 58b7133cd0e1 Author: Doug Simon Date: 2014-11-10 20:16 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/58b7133cd0e1 Merge. Changeset: 75e72d395820 Author: Doug Simon Date: 2014-11-10 20:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/75e72d395820 fixed toString() for JavaConstants ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaConstant.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NullConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCompressedNullConstant.java Changeset: fe77c26ccde6 Author: Andreas Woess Date: 2014-11-10 19:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fe77c26ccde6 Truffle: fix stable array canonicalization ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java + graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/StableArrayConstantNode.java Changeset: 803b0b06e408 Author: Andreas Woess Date: 2014-11-10 19:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/803b0b06e408 Truffle: remove obsolete node - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/LoadIndexedFinalNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java Changeset: 65a160d9d259 Author: Andreas Woess Date: 2014-11-10 19:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/65a160d9d259 Truffle: add NodeInterface and require that all child fields be of this type ! CHANGELOG.md ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/InterfaceChildFieldTest.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeInterface.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java From andreas.woess at jku.at Tue Nov 11 17:00:53 2014 From: andreas.woess at jku.at (Andreas Woess) Date: Tue, 11 Nov 2014 18:00:53 +0100 Subject: Potential compiler bug In-Reply-To: <0BE7A402-6AE5-490E-BDE1-EFE4FC9C8750@stefan-marr.de> References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> <545CCDE7.2040903@jku.at> <0BE7A402-6AE5-490E-BDE1-EFE4FC9C8750@stefan-marr.de> Message-ID: <546240C5.6080403@jku.at> Should be fixed now. - andreas On 07/11/14 15:21, Stefan Marr wrote: > Hi Andreas: > >> On 07 Nov 2014, at 14:49, Andreas Woess wrote: >> >> thanks for the detailed bug report. We've already found the problem and will work on a fix. I?ll get back to you once it's ready. > Thanks a lot! > Stefan > > > From doug.simon at oracle.com Wed Nov 12 02:00:06 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 12 Nov 2014 02:00:06 +0000 Subject: hg: graal/graal: 9 new changesets Message-ID: <201411120200.sAC207Xd002331@aojmv0008> Changeset: db6b7d3dfa1d Author: Gilles Duboscq Date: 2014-11-11 10:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/db6b7d3dfa1d ConditionalElimination: only clear the state on loop exits if the graph needs to remain in loop closed form ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Changeset: 0950fa8782c7 Author: Doug Simon Date: 2014-11-11 10:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0950fa8782c7 mx: ignore --fail-fast option to unittest if a single test method is specified ! graal/com.oracle.graal.test/src/com/oracle/graal/test/GraalJUnitCore.java Changeset: 636d3aa761e4 Author: Doug Simon Date: 2014-11-11 11:43 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/636d3aa761e4 perform both capturing and replay when testing replay compilation and use deep object graph comparison to test compilation results ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/DeepFieldsEquals.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Handler.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: fbd92038a434 Author: Doug Simon Date: 2014-11-11 11:45 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fbd92038a434 made replay compilation test failures less verbose ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 3432571b7189 Author: Doug Simon Date: 2014-11-11 13:37 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3432571b7189 ignore non-existing special static fields ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java Changeset: c4f374adce13 Author: Andreas Woess Date: 2014-11-11 14:24 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c4f374adce13 Probe interface should extend NodeInterface ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java Changeset: f212e8329825 Author: Danilo Ansaloni Date: 2014-11-11 15:15 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f212e8329825 Truffle: increased the default TruffleTimeThreshold from 5s to 25s. This should be backed out once we have OSR. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java Changeset: a0381103324b Author: Tom Rodriguez Date: 2014-11-11 12:45 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/a0381103324b More folding of constant classes and NodeClass references ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.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/NewObjectSnippets.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Changeset: 8169f68e9530 Author: Tom Rodriguez Date: 2014-11-11 14:30 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/8169f68e9530 Class._array_klass is not immutable ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java From doug.simon at oracle.com Thu Nov 13 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 13 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 16 new changesets Message-ID: <201411130200.sAD208qs004085@aojmv0008> Changeset: d60dd21329f2 Author: Doug Simon Date: 2014-11-12 10:36 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d60dd21329f2 implemented .equals() for CompilationResult and the objects it encapsulates ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Architecture.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/BytecodeFrame.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/BytecodePosition.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DebugInfo.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterSaveLayout.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionValidAssumption.java Changeset: 175eb3eb970f Author: Doug Simon Date: 2014-11-12 10:38 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/175eb3eb970f removed DeepFieldsEquals utility - graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/DeepFieldsEquals.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: cc291e4c5564 Author: Doug Simon Date: 2014-11-12 10:39 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/cc291e4c5564 made InvokeTarget and ForeignCallsProvider extend Remote ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ForeignCallsProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/InvokeTarget.java Changeset: 343ca85103f2 Author: Doug Simon Date: 2014-11-12 10:56 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/343ca85103f2 registered a couple more special static field values ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java Changeset: ddd7829c45b1 Author: Doug Simon Date: 2014-11-12 12:55 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ddd7829c45b1 made HotSpotCodeCacheProvider attempt to load and use the hcfdis tool ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java ! mx/mx_graal.py Changeset: 4571c14bb4ef Author: Doug Simon Date: 2014-11-12 14:37 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4571c14bb4ef fix short circuit for special classes and objects when retrieving object from a replay compilation context ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java Changeset: 8253047fe0c0 Author: Doug Simon Date: 2014-11-12 14:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8253047fe0c0 dump disassembly of non-matching CompilationResults when testing replay compilation ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 7aa6180a3486 Author: Doug Simon Date: 2014-11-12 14:41 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7aa6180a3486 fixed NullPointerException in HotSpotReferenceMap.equals ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java Changeset: 23a2faa68470 Author: Doug Simon Date: 2014-11-12 14:43 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/23a2faa68470 converted HotSpotForeignCallLinkage to an interface ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotForeignCallsProvider.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotForeignCallsProvider.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotForeignCallsProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkage.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkageImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/graal/graalCodeInstaller.cpp ! src/share/vm/graal/graalJavaAccess.hpp Changeset: 1e7b53d7489d Author: Doug Simon Date: 2014-11-12 14:49 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1e7b53d7489d fixed pylint issue ! mx/mx_graal.py Changeset: 8904705ea4a8 Author: Doug Simon Date: 2014-11-12 15:05 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8904705ea4a8 implemented hashCode() for CompilationResult.Reference subclasses ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Changeset: 12741288374c Author: Doug Simon Date: 2014-11-12 15:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/12741288374c invocations of void methods on proxies are not cacheable as void implies that have a side-effect (e.g., Formattable.formatTo) ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Handler.java Changeset: df7243c22bad Author: Doug Simon Date: 2014-11-12 15:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/df7243c22bad use separate scope for capturing and replay compilations ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 9a11c4086341 Author: Doug Simon Date: 2014-11-12 15:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9a11c4086341 size array appropriately when creating categorized register array ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java Changeset: 7c5bbe97b0d8 Author: Doug Simon Date: 2014-11-12 15:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7c5bbe97b0d8 infer stamps for graphs checked in CheckGraalInvariants ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java Changeset: 09550eb6ddfb Author: Doug Simon Date: 2014-11-12 15:33 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/09550eb6ddfb replace use of '==' with .equals() ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java From doug.simon at oracle.com Fri Nov 14 02:00:09 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 14 Nov 2014 02:00:09 +0000 Subject: hg: graal/graal: 17 new changesets Message-ID: <201411140200.sAE20975014684@aojmv0008> Changeset: 2dc0d4dcb709 Author: Roland Schatz Date: 2014-11-11 15:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2dc0d4dcb709 Separate stamp for metaspace pointers. + graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/PointerType.java ! graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/LIRKindTool.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/ObjectStamp.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/PointerStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.java ! graal/com.oracle.graal.compiler.hsail/src/com/oracle/graal/compiler/hsail/HSAILLIRGenerator.java ! graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java ! graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.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/AMD64HotSpotNodeLIRBuilder.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/HotSpotLIRKindTool.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowPointerStamp.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 Changeset: a3a2359ac88e Author: Roland Schatz Date: 2014-11-11 18:34 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a3a2359ac88e Support constant folding of pointer reads. ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.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/IllegalStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/PrimitiveStamp.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/VoidStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.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/nodes/type/NarrowPointerStamp.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Changeset: 6a5dc0bbebe7 Author: Roland Schatz Date: 2014-11-12 11:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6a5dc0bbebe7 Introduce PointerEqualsNode for metaspace pointer comparison. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.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/PointerEqualsNode.java Changeset: 6ac7e9c85be6 Author: Roland Schatz Date: 2014-11-12 16:59 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6ac7e9c85be6 Split getEncoding into two methods. ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java ! graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBytecodeLIRBuilder.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/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectGetClassNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java Changeset: ea0fbb571466 Author: Roland Schatz Date: 2014-11-13 11:12 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ea0fbb571466 Use pointer stamps in LoadHub and LoadMethod. Introduce explicit casts between Word and metaspace pointers. ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaMethod.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILNewObjectSnippets.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.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/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowPointerStamp.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/ArrayCopySnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastDynamicSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.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/MonitorSnippets.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/ObjectSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.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/TypeSwitchNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/ComparableWord.java + graal/com.oracle.graal.word/src/com/oracle/graal/word/MethodPointer.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/Pointer.java + graal/com.oracle.graal.word/src/com/oracle/graal/word/TypePointer.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java + graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/LoadIndexedPointerNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Changeset: 9cbed4622c3c Author: Roland Schatz Date: 2014-11-13 13:49 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9cbed4622c3c Fix assertion in SPARC backend. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Changeset: ad3c2cacdd1a Author: Roland Schatz Date: 2014-11-13 15:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ad3c2cacdd1a Remove StampProvider interface. - graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Changeset: a8bc8724657e Author: Doug Simon Date: 2014-11-13 16:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a8bc8724657e expanded support for shared globals (i.e., values that must be retrieved from static fields instead of being copied in replay/remote compilation) ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java Changeset: c09fc2864097 Author: Doug Simon Date: 2014-11-13 16:52 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c09fc2864097 fixed HotSpotResolvedJavaMethodImpl.equals ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Changeset: 23526af9360d Author: Doug Simon Date: 2014-11-13 16:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/23526af9360d try harder to avoid side-effects that perturb replay compilation testing ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: cb3c93857cbb Author: Doug Simon Date: 2014-11-13 17:25 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/cb3c93857cbb made compilation replay testing less strict by default ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 966034c24f0e Author: Andreas Woess Date: 2014-11-13 11:57 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/966034c24f0e Truffle: make NodeInterface a pure marker interface ! CHANGELOG.md ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeInterface.java Changeset: 6713fef8c859 Author: Christian Wimmer Date: 2014-11-13 14:23 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/6713fef8c859 Make the @Fold annotation a top-level interface in the api project. It is not tied to the Snippet class where it was located before. + graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/Fold.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILHotSpotReplacementsUtil.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/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/MonitorSnippets.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/UnsafeArrayCopySnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/DeoptimizationStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ExceptionHandlerStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UncommonTrapStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/UnwindExceptionToCallerStub.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/Snippet.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetCounter.java Changeset: 837e4c31f9d8 Author: Christian Wimmer Date: 2014-11-13 14:30 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/837e4c31f9d8 Make GraphMaker a static inner class to allow subclassing it independently from ReplacementsImpl ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 18b19a6f9851 Author: Christian Wimmer Date: 2014-11-13 14:40 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/18b19a6f9851 Add default implementation for Kind accessors of Signature and JavaField ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaField.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Signature.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotUnresolvedField.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java Changeset: 91283d4a1218 Author: Christian Wimmer Date: 2014-11-13 14:56 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/91283d4a1218 Use the base class Executable (introduced in Java 8) to unify the handling of Method and Constructor in MetaAccessProvider ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/MethodUniverse.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/FinalizableSubclassTest.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotReplacementsImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 8971259db8ed Author: Christian Wimmer Date: 2014-11-13 15:41 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/8971259db8ed Eliminated the need for Signature.getParameterSlots() ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Signature.java ! graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineFrameStateBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractFrameStateBuilder.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java From java at stefan-marr.de Fri Nov 14 07:37:56 2014 From: java at stefan-marr.de (Stefan Marr) Date: Fri, 14 Nov 2014 08:37:56 +0100 Subject: Potential compiler bug In-Reply-To: <546240C5.6080403@jku.at> References: <5F1B1726-8BCF-45DA-A67C-813C352BDC4E@stefan-marr.de> <0A89195C-8C3B-4B3A-9239-AFDD26E82AB8@stefan-marr.de> <545CCDE7.2040903@jku.at> <0BE7A402-6AE5-490E-BDE1-EFE4FC9C8750@stefan-marr.de> <546240C5.6080403@jku.at> Message-ID: Hi Andreas: > On 11 Nov 2014, at 18:00, Andreas Woess wrote: > > Should be fixed now. Had a brief look and indeed, the problem is gone on the investigated benchmark. Thanks a lot Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From me at jerven.eu Fri Nov 14 16:38:52 2014 From: me at jerven.eu (Jerven Bolleman) Date: Fri, 14 Nov 2014 17:38:52 +0100 Subject: Vectorized BitSet operations Message-ID: Hi All, My apologies in advance if I am a rather clueless. I am interested in seeing the use of SSE/AVX instructions use for some methods in java.util.Bitset. e.g. the "or" and "and" methods. For example I believe that this loop can be vectorized. My first thought was that an intrinsic/MethodSubstitution would be a good start. However, it would be even nicer if this type of code can be auto vectorized. I was wondering if anyone has worked on this or if this is already the case? Because working auto vectorization could accelerate this loop used in Lucene a lot. While the intrinsic has a smaller use case. In my specific case a bitset of 20mb or larger is not uncommon. So in these cases doing more work per tick is interesting. If I wanted to have a go at implementing the intrinsic are there any pitfalls I need to be aware of? Regards, Jerven -- Jerven Bolleman me at jerven.eu From rednaxelafx at gmail.com Fri Nov 14 19:33:36 2014 From: rednaxelafx at gmail.com (Krystal Mok) Date: Fri, 14 Nov 2014 11:33:36 -0800 Subject: Vectorized BitSet operations In-Reply-To: References: Message-ID: Hi Jerven, (I thought I was reading email from hotspot-compiler-dev and then realized it's graal-dev...but here I go anyway) If you're interested in taking HotSpot C2's auto vectorization for a reference, here's the RFE that implemented the vectorization feature: JDK-6340864: Implement vectorization optimizations in hotspot-server [1][2]. It's mostly still based on the superword algorithm described in [3]. I don't think Graal implements that algorithm now. It certainly would be useful to have it. Graal does use vector (SIMD) instructions for some intrinsics, e.g. ArrayEqualsOp and UnsafeArrayCopySnippet. If you want to improve performance for specific methods, this is the easier way to go, with good existing examples. - Kris [1]: https://bugs.openjdk.java.net/browse/JDK-6340864 [2]: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/006050192a5a [3]: Exploiting superword level parallelism with multimedia instruction sets, http://dl.acm.org/citation.cfm?id=358438.349320 On Fri, Nov 14, 2014 at 8:38 AM, Jerven Bolleman wrote: > Hi All, > > My apologies in advance if I am a rather clueless. > > I am interested in seeing the use of SSE/AVX instructions use for some > methods in java.util.Bitset. e.g. the "or" and "and" methods. > > For example I believe that this loop > < > http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/BitSet.java#681 > > > can be vectorized. > > My first thought was that an intrinsic/MethodSubstitution would be a good > start. > However, it would be even nicer if this type of code can be auto > vectorized. > I was wondering if anyone has worked on this or if this is already the > case? > > Because working auto vectorization could accelerate this loop > < > http://grepcode.com/file/repo1.maven.org/maven2/org.apache.lucene/lucene-core/3.0.1/org/apache/lucene/util/OpenBitSet.java#661 > > > used in Lucene > a lot. While the intrinsic has a smaller use case. > > In my specific case a bitset of 20mb or larger is not uncommon. So in these > cases doing more work per tick is interesting. > > If I wanted to have a go at implementing the intrinsic are there any > pitfalls I need to be aware of? > > Regards, > Jerven > > > > > > > > > > -- > Jerven Bolleman > me at jerven.eu > From vitalyd at gmail.com Fri Nov 14 19:39:34 2014 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Fri, 14 Nov 2014 14:39:34 -0500 Subject: Vectorized BitSet operations In-Reply-To: References: Message-ID: I asked about vector math support on compiler dev a while ago, and was told it's on the radar (there's a linked jira in what Kris posted) but seems like it's not being worked on. Right now, I believe only some copy operations are vectorized, but not arithmetic or logical stuff. Would be cool to have autovectorization for those things. Sent from my phone On Nov 14, 2014 2:34 PM, "Krystal Mok" wrote: > Hi Jerven, > > (I thought I was reading email from hotspot-compiler-dev and then realized > it's graal-dev...but here I go anyway) > > If you're interested in taking HotSpot C2's auto vectorization for a > reference, here's the RFE that implemented the vectorization feature: > JDK-6340864: Implement vectorization optimizations in hotspot-server > [1][2]. It's mostly still based on the superword algorithm described in > [3]. > > I don't think Graal implements that algorithm now. It certainly would be > useful to have it. > > Graal does use vector (SIMD) instructions for some intrinsics, e.g. > ArrayEqualsOp and UnsafeArrayCopySnippet. If you want to improve > performance for specific methods, this is the easier way to go, with good > existing examples. > > - Kris > > [1]: https://bugs.openjdk.java.net/browse/JDK-6340864 > [2]: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/006050192a5a > [3]: Exploiting superword level parallelism with multimedia instruction > sets, http://dl.acm.org/citation.cfm?id=358438.349320 > > On Fri, Nov 14, 2014 at 8:38 AM, Jerven Bolleman wrote: > > > Hi All, > > > > My apologies in advance if I am a rather clueless. > > > > I am interested in seeing the use of SSE/AVX instructions use for some > > methods in java.util.Bitset. e.g. the "or" and "and" methods. > > > > For example I believe that this loop > > < > > > http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/BitSet.java#681 > > > > > can be vectorized. > > > > My first thought was that an intrinsic/MethodSubstitution would be a good > > start. > > However, it would be even nicer if this type of code can be auto > > vectorized. > > I was wondering if anyone has worked on this or if this is already the > > case? > > > > Because working auto vectorization could accelerate this loop > > < > > > http://grepcode.com/file/repo1.maven.org/maven2/org.apache.lucene/lucene-core/3.0.1/org/apache/lucene/util/OpenBitSet.java#661 > > > > > used in Lucene > > a lot. While the intrinsic has a smaller use case. > > > > In my specific case a bitset of 20mb or larger is not uncommon. So in > these > > cases doing more work per tick is interesting. > > > > If I wanted to have a go at implementing the intrinsic are there any > > pitfalls I need to be aware of? > > > > Regards, > > Jerven > > > > > > > > > > > > > > > > > > > > -- > > Jerven Bolleman > > me at jerven.eu > > > From doug.simon at oracle.com Sat Nov 15 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 15 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 3 new changesets Message-ID: <201411150200.sAF2071E028743@aojmv0008> Changeset: 0866598c927f Author: Tom Rodriguez Date: 2014-11-13 18:18 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/0866598c927f BasicObjectCloneNode is always non-null ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java Changeset: e11768d6136e Author: Tom Rodriguez Date: 2014-11-13 18:18 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/e11768d6136e trust final fields in constants with default values ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/GraalOptions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java Changeset: ed0fce2e999a Author: Tom Rodriguez Date: 2014-11-14 09:32 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/ed0fce2e999a Fold klass._java_mirror._klass into klass and improve stamps from layout_helper + graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowPointerStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.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/HubGetClassNode.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/ObjectGetClassNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java From igor.veresov at oracle.com Sat Nov 15 07:30:10 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Fri, 14 Nov 2014 23:30:10 -0800 Subject: RFR: Add support of lzcnt and tzcnt Message-ID: The change adds the following: - support of lzcnt and tzcnt instructions, - unit tests for lzcnt/tzcnt, - ability to emit bsf/bsr in case lzcnt/tzcnt were turned off from the command line, - tightening the stamps produced by ScanBitForward/ReverseNode nodes. Webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.00/ Thanks! igor From duboscq at ssw.jku.at Sat Nov 15 12:06:57 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Sat, 15 Nov 2014 13:06:57 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: Message-ID: Hi Igor, -BitScanForwardNode.inferStamp: looks like firstMaybeSetBit and min can now be set outside of the if/else -BitOpsTest: You could have used UnsafeAccess The rest looks good to me. Thanks. Overall, it looks like we should rather use the Count*ZerosNode at the high level regardless of the platform and lower them in a platform-dependent way. On AMD64 without lzcnt/tzcnt we would then introduce the BitScan* nodes only during platform-dependent lowering. We should put that on the todo-list if we introduce a proper platform-specific lowering phase before LIR. -Gilles On Sat, Nov 15, 2014 at 8:30 AM, Igor Veresov wrote: > The change adds the following: > - support of lzcnt and tzcnt instructions, > - unit tests for lzcnt/tzcnt, > - ability to emit bsf/bsr in case lzcnt/tzcnt were turned off from the command line, > - tightening the stamps produced by ScanBitForward/ReverseNode nodes. > > > Webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.00/ > > Thanks! > igor From doug.simon at oracle.com Sun Nov 16 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sun, 16 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 5 new changesets Message-ID: <201411160200.sAG20ATv027160@aojmv0008> Changeset: c57c3777fa72 Author: Doug Simon Date: 2014-11-14 16:26 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c57c3777fa72 when testing replay compilation, only compare result of capturing compilation against replay compilation and ignore result of original compilation altogether ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 3aaf2747961c Author: Doug Simon Date: 2014-11-14 19:16 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3aaf2747961c use LinkedHashSets for node sets when created within the scope of a replay compilation context ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/util/HashSetNodeEventListener.java ! graal/com.oracle.graal.printer/src/com/oracle/graal/printer/IdealGraphPrinter.java Changeset: 601dfbdcc5bf Author: Doug Simon Date: 2014-11-15 14:46 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/601dfbdcc5bf added LinkedIdentityHashMap + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/LinkedIdentityHashMap.java Changeset: 53bd20792127 Author: Doug Simon Date: 2014-11-15 16:39 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/53bd20792127 Merge. - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectGetClassNode.java Changeset: 322d928a373e Author: Doug Simon Date: 2014-11-15 23:19 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/322d928a373e fixed findbug's issue ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/LinkedIdentityHashMap.java From igor.veresov at oracle.com Sun Nov 16 08:56:37 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Sun, 16 Nov 2014 00:56:37 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: Message-ID: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> Hi Gilles, Thanks for the review! Please find the replies inline. > On Nov 15, 2014, at 4:06 AM, Gilles Duboscq wrote: > > Hi Igor, > > -BitScanForwardNode.inferStamp: > looks like firstMaybeSetBit and min can now be set outside of the if/else Good point. Fixed. > -BitOpsTest: > You could have used UnsafeAccess > Aha, thanks for pointing that out. I grepped for something like it but didn?t notice UnsafeAccess. Fixed. > The rest looks good to me. Thanks. Updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.01/ > > Overall, it looks like we should rather use the Count*ZerosNode at the > high level regardless of the platform and lower them in a > platform-dependent way. On AMD64 without lzcnt/tzcnt we would then > introduce the BitScan* nodes only during platform-dependent lowering. > We should put that on the todo-list if we introduce a proper > platform-specific lowering phase before LIR. It?s a possible approach, I liked substitution guards though. They are fairly expressive. May be we can allow a form of substitution specialization, in which there is a generic implementation and then we can define a specialized version for some platform that will automatically replace it. I guess it may be achieved, for example, by prioritizing replacement providers. igor > > -Gilles > > On Sat, Nov 15, 2014 at 8:30 AM, Igor Veresov wrote: >> The change adds the following: >> - support of lzcnt and tzcnt instructions, >> - unit tests for lzcnt/tzcnt, >> - ability to emit bsf/bsr in case lzcnt/tzcnt were turned off from the command line, >> - tightening the stamps produced by ScanBitForward/ReverseNode nodes. >> >> >> Webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.00/ >> >> Thanks! >> igor From doug.simon at oracle.com Mon Nov 17 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Mon, 17 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 7 new changesets Message-ID: <201411170200.sAH208wk022558@aojmv0008> Changeset: 1518c3296cc8 Author: Doug Simon Date: 2014-11-16 09:44 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1518c3296cc8 use deterministic iteration order Set and Map data structures when in the scope of a replay compilation context ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java ! graal/com.oracle.graal.loop/src/com/oracle/graal/loop/InductionVariables.java ! graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java ! graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java ! graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopsData.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.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/FloatingReadPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/CallsiteHolderExplorable.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/ComputeInliningRelevance.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/util/HashSetNodeEventListener.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/FixedNodeProbabilityCache.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/PostOrderNodeIterator.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ReentrantBlockIterator.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ReentrantNodeIterator.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/SinglePassNodeIterator.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/GraphOrder.java ! graal/com.oracle.graal.printer/src/com/oracle/graal/printer/IdealGraphPrinter.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectsClosure.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeBlockState.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/VirtualUtil.java Changeset: 02e3feaaada1 Author: Doug Simon Date: 2014-11-16 16:15 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/02e3feaaada1 replace identity map with hash map ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Changeset: df47f69cda83 Author: Doug Simon Date: 2014-11-16 16:24 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/df47f69cda83 minor clean up of replay compilation test harness ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Changeset: 656331a61829 Author: Chris Seaton Date: 2014-11-16 15:44 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/656331a61829 Truffle: add support for setting a couple of compiler options for individual execution contexts. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CompilationPolicy.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CompilationProfile.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CounterAndTimeBasedCompilationPolicy.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CounterBasedCompilationPolicy.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/DefaultInliningPolicy.java + graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalCompilerOptions.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/InterpreterOnlyCompilationPolicy.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleInlining.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleInliningPolicy.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/CompilerOptions.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/ExecutionContext.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleRuntime.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultCompilerOptions.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultTruffleRuntime.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Changeset: 3e5ed05b7e50 Author: Chris Seaton Date: 2014-11-16 15:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/3e5ed05b7e50 Merge. - graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampProvider.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectGetClassNode.java Changeset: c1eeb1658014 Author: Chris Seaton Date: 2014-11-16 16:07 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/c1eeb1658014 Truffle: fix to error message in DefaultCompilerOptions. ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultCompilerOptions.java Changeset: 104be1322fb7 Author: Chris Seaton Date: 2014-11-16 16:08 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/104be1322fb7 Truffle: CHANGELOG entry for CompilerOptions. ! CHANGELOG.md From duboscq at ssw.jku.at Mon Nov 17 13:30:10 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Mon, 17 Nov 2014 14:30:10 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> Message-ID: Hello Igor, I tried integrating your changes but there is a dependency problem: In AMD64Guards, which is an amd64-specific project, you are trying to access HotSpotGraalRuntime which lives in a hotspot-specific project. That's not possible. It shouldn't even have built. How did you build it? I suppose you'd need a better substitution guard system, which could provide you with the Architecture object. -Gilles On Sun, Nov 16, 2014 at 9:56 AM, Igor Veresov wrote: > Hi Gilles, > > Thanks for the review! > Please find the replies inline. > >> On Nov 15, 2014, at 4:06 AM, Gilles Duboscq wrote: >> >> Hi Igor, >> >> -BitScanForwardNode.inferStamp: >> looks like firstMaybeSetBit and min can now be set outside of the if/else > > Good point. Fixed. > >> -BitOpsTest: >> You could have used UnsafeAccess >> > Aha, thanks for pointing that out. I grepped for something like it but didn?t notice UnsafeAccess. Fixed. > >> The rest looks good to me. Thanks. > > Updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.01/ > >> >> Overall, it looks like we should rather use the Count*ZerosNode at the >> high level regardless of the platform and lower them in a >> platform-dependent way. On AMD64 without lzcnt/tzcnt we would then >> introduce the BitScan* nodes only during platform-dependent lowering. >> We should put that on the todo-list if we introduce a proper >> platform-specific lowering phase before LIR. > > It?s a possible approach, I liked substitution guards though. They are fairly expressive. May be we can allow a form of substitution specialization, in which there is a generic implementation and then we can define a specialized version for some platform that will automatically replace it. I guess it may be achieved, for example, by prioritizing replacement providers. Yes, my thinking was that the Cound*ZerosNode are in general more high-level and simpler to reason about. > > igor > > >> >> -Gilles >> >> On Sat, Nov 15, 2014 at 8:30 AM, Igor Veresov wrote: >>> The change adds the following: >>> - support of lzcnt and tzcnt instructions, >>> - unit tests for lzcnt/tzcnt, >>> - ability to emit bsf/bsr in case lzcnt/tzcnt were turned off from the command line, >>> - tightening the stamps produced by ScanBitForward/ReverseNode nodes. >>> >>> >>> Webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.00/ >>> >>> Thanks! >>> igor > From me at jerven.eu Mon Nov 17 16:26:58 2014 From: me at jerven.eu (Jerven Bolleman) Date: Mon, 17 Nov 2014 17:26:58 +0100 Subject: Vectorized BitSet operations In-Reply-To: References: Message-ID: Hi Krystal, Thanks for this getting started pointer. I feel I am making good progress in the five minutes here and there. I must say I am impressed in how easy it is to read and work with Graal Compiler code as a Java dev. Its much more approachable than the C++ Hotspot code, because now I need to learn assembly. For HotSpot I would need to learn C++ and assembly. I am currently investigating code that looks like the ArrayEqualsOp and will try the snippet approach as well. To see what is nicer and more maintainable. I am quite slow because I actually am learning assembly as I go along. Which comes to the following remark, javadoc for the assembly ops would be really nice. Now I need to keep the manual open at all times. Also grouping operations to the architecture sub version they belong in will help noobs like me at this level as well. e.g. masm.andpd() could be masm.sse2().andpd(). This leads me to the next question, how should I write performance/unit tests for intrinsics? Considering that intrinsics should be removed the moment the compiler generates better/equivalent code. Regards, Jerven On Fri, Nov 14, 2014 at 8:33 PM, Krystal Mok wrote: Hi Jerven, (I thought I was reading email from hotspot-compiler-dev and then realized it's graal-dev...but here I go anyway) If you're interested in taking HotSpot C2's auto vectorization for a reference, here's the RFE that implemented the vectorization feature: JDK-6340864: Implement vectorization optimizations in hotspot-server [1][2]. It's mostly still based on the superword algorithm described in [3]. I don't think Graal implements that algorithm now. It certainly would be useful to have it. Graal does use vector (SIMD) instructions for some intrinsics, e.g. ArrayEqualsOp and UnsafeArrayCopySnippet. If you want to improve performance for specific methods, this is the easier way to go, with good existing examples. - Kris [1]: https://bugs.openjdk.java.net/browse/JDK-6340864 [2]: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/006050192a5a [3]: Exploiting superword level parallelism with multimedia instruction sets, http://dl.acm.org/citation.cfm?id=358438.349320 On Fri, Nov 14, 2014 at 8:38 AM, Jerven Bolleman wrote: Hi All, My apologies in advance if I am a rather clueless. I am interested in seeing the use of SSE/AVX instructions use for some methods in java.util.Bitset. e.g. the "or" and "and" methods. For example I believe that this loop < http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/BitSet.java#681 > can be vectorized. My first thought was that an intrinsic/MethodSubstitution would be a good start. However, it would be even nicer if this type of code can be auto vectorized. I was wondering if anyone has worked on this or if this is already the case? Because working auto vectorization could accelerate this loop < http://grepcode.com/file/repo1.maven.org/maven2/org.apache.lucene/lucene-core/3.0.1/org/apache/lucene/util/OpenBitSet.java#661 > used in Lucene a lot. While the intrinsic has a smaller use case. In my specific case a bitset of 20mb or larger is not uncommon. So in these cases doing more work per tick is interesting. If I wanted to have a go at implementing the intrinsic are there any pitfalls I need to be aware of? Regards, Jerven -- Jerven Bolleman me at jerven.eu -- Jerven Bolleman me at jerven.eu From igor.veresov at oracle.com Mon Nov 17 20:56:52 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Mon, 17 Nov 2014 12:56:52 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> Message-ID: Hm, that?s odd. It built and ran just fine for me (gate and build). The change contains the following (com.oracle.graal.hotspot depends on com.oracle.graal.replacements already) to be able to access HotSpotGraalRuntime for c.o.g.replacements.amd64: diff --git a/mx/suite.py b/mx/suite.py --- a/mx/suite.py +++ b/mx/suite.py @@ -369,7 +369,6 @@ "sourceDirs" : ["src"], "dependencies" : [ "com.oracle.graal.compiler.amd64", - "com.oracle.graal.hotspot", "com.oracle.graal.replacements.amd64", ], "checkstyle" : "com.oracle.graal.graph", @@ -632,7 +631,9 @@ "com.oracle.graal.replacements.amd64" : { "subDir" : "graal", "sourceDirs" : ["src"], - "dependencies" : ["com.oracle.graal.replacements"], + "dependencies" : [ + "com.oracle.graal.hotspot" + ], "checkstyle" : "com.oracle.graal.graph", "javaCompliance" : "1.8", "annotationProcessors" : ["com.oracle.graal.service.processor?], Just did a clean test, checked out basic-graal, applied the patch (basic-graal.patch ) - all seems to build ok. igor > On Nov 17, 2014, at 5:30 AM, Gilles Duboscq wrote: > > Hello Igor, > > I tried integrating your changes but there is a dependency problem: > In AMD64Guards, which is an amd64-specific project, you are trying to > access HotSpotGraalRuntime which lives in a hotspot-specific project. > That's not possible. It shouldn't even have built. > How did you build it? > > I suppose you'd need a better substitution guard system, which could > provide you with the Architecture object. > > -Gilles > > On Sun, Nov 16, 2014 at 9:56 AM, Igor Veresov > wrote: >> Hi Gilles, >> >> Thanks for the review! >> Please find the replies inline. >> >>> On Nov 15, 2014, at 4:06 AM, Gilles Duboscq wrote: >>> >>> Hi Igor, >>> >>> -BitScanForwardNode.inferStamp: >>> looks like firstMaybeSetBit and min can now be set outside of the if/else >> >> Good point. Fixed. >> >>> -BitOpsTest: >>> You could have used UnsafeAccess >>> >> Aha, thanks for pointing that out. I grepped for something like it but didn?t notice UnsafeAccess. Fixed. >> >>> The rest looks good to me. Thanks. >> >> Updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.01/ >> >>> >>> Overall, it looks like we should rather use the Count*ZerosNode at the >>> high level regardless of the platform and lower them in a >>> platform-dependent way. On AMD64 without lzcnt/tzcnt we would then >>> introduce the BitScan* nodes only during platform-dependent lowering. >>> We should put that on the todo-list if we introduce a proper >>> platform-specific lowering phase before LIR. >> >> It?s a possible approach, I liked substitution guards though. They are fairly expressive. May be we can allow a form of substitution specialization, in which there is a generic implementation and then we can define a specialized version for some platform that will automatically replace it. I guess it may be achieved, for example, by prioritizing replacement providers. > > Yes, my thinking was that the Cound*ZerosNode are in general more > high-level and simpler to reason about. > >> >> igor >> >> >>> >>> -Gilles >>> >>> On Sat, Nov 15, 2014 at 8:30 AM, Igor Veresov wrote: >>>> The change adds the following: >>>> - support of lzcnt and tzcnt instructions, >>>> - unit tests for lzcnt/tzcnt, >>>> - ability to emit bsf/bsr in case lzcnt/tzcnt were turned off from the command line, >>>> - tightening the stamps produced by ScanBitForward/ReverseNode nodes. >>>> >>>> >>>> Webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.00/ >>>> >>>> Thanks! >>>> igor From christian.wimmer at oracle.com Mon Nov 17 21:04:09 2014 From: christian.wimmer at oracle.com (Christian Wimmer) Date: Mon, 17 Nov 2014 13:04:09 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> Message-ID: <546A62C9.3010505@oracle.com> > "com.oracle.graal.replacements.amd64" : { > - "dependencies" : ["com.oracle.graal.replacements"], > + "dependencies" : [ > + "com.oracle.graal.hotspot" > + ], That adds a dependency from a VM-independent project to a HotSpot project - so while you can do that technically (as long as you do not introduce a cyclic dependency), it violates the Compiler-VM separation. -Christain From igor.veresov at oracle.com Mon Nov 17 21:46:12 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Mon, 17 Nov 2014 13:46:12 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <546A62C9.3010505@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> Message-ID: <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> Alright, makes sense. So, I guess, I have to propagate hotspot switches like UseCount{Leading, Trailing} ZerosInstruction into AMD64 (a subclass of Architecture), right? igor > On Nov 17, 2014, at 1:04 PM, Christian Wimmer wrote: > >> "com.oracle.graal.replacements.amd64" : { >> - "dependencies" : ["com.oracle.graal.replacements"], >> + "dependencies" : [ >> + "com.oracle.graal.hotspot" >> + ], > > That adds a dependency from a VM-independent project to a HotSpot project - so while you can do that technically (as long as you do not introduce a cyclic dependency), it violates the Compiler-VM separation. > > -Christain > From christian.thalinger at oracle.com Mon Nov 17 23:13:41 2014 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Mon, 17 Nov 2014 15:13:41 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> Message-ID: <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> > On Nov 17, 2014, at 1:46 PM, Igor Veresov wrote: > > Alright, makes sense. So, I guess, I have to propagate hotspot switches like UseCount{Leading, Trailing} ZerosInstruction into AMD64 (a subclass of Architecture), right? Correct. Like we do with other features in com.oracle.graal.hotspot.amd64.AMD64HotSpotBackendFactory.computeFeatures(HotSpotVMConfig) > > igor > > >> On Nov 17, 2014, at 1:04 PM, Christian Wimmer wrote: >> >>> "com.oracle.graal.replacements.amd64" : { >>> - "dependencies" : ["com.oracle.graal.replacements"], >>> + "dependencies" : [ >>> + "com.oracle.graal.hotspot" >>> + ], >> >> That adds a dependency from a VM-independent project to a HotSpot project - so while you can do that technically (as long as you do not introduce a cyclic dependency), it violates the Compiler-VM separation. >> >> -Christain >> > From christian.thalinger at oracle.com Mon Nov 17 23:21:44 2014 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Mon, 17 Nov 2014 15:21:44 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> Message-ID: > On Nov 16, 2014, at 12:56 AM, Igor Veresov wrote: > > Hi Gilles, > > Thanks for the review! > Please find the replies inline. > >> On Nov 15, 2014, at 4:06 AM, Gilles Duboscq wrote: >> >> Hi Igor, >> >> -BitScanForwardNode.inferStamp: >> looks like firstMaybeSetBit and min can now be set outside of the if/else > > Good point. Fixed. > >> -BitOpsTest: >> You could have used UnsafeAccess >> > Aha, thanks for pointing that out. I grepped for something like it but didn?t notice UnsafeAccess. Fixed. > >> The rest looks good to me. Thanks. > > Updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.01/ Where are the create methods used? + public static AMD64CountLeadingZerosNode create(ValueNode value) { + return new AMD64CountLeadingZerosNode(value); + } + public static AMD64CountTrailingZerosNode create(ValueNode value) { + return new AMD64CountTrailingZerosNode(value); + } > >> >> Overall, it looks like we should rather use the Count*ZerosNode at the >> high level regardless of the platform and lower them in a >> platform-dependent way. On AMD64 without lzcnt/tzcnt we would then >> introduce the BitScan* nodes only during platform-dependent lowering. >> We should put that on the todo-list if we introduce a proper >> platform-specific lowering phase before LIR. > > It?s a possible approach, I liked substitution guards though. They are fairly expressive. May be we can allow a form of substitution specialization, in which there is a generic implementation and then we can define a specialized version for some platform that will automatically replace it. I guess it may be achieved, for example, by prioritizing replacement providers. > > igor > > >> >> -Gilles >> >> On Sat, Nov 15, 2014 at 8:30 AM, Igor Veresov wrote: >>> The change adds the following: >>> - support of lzcnt and tzcnt instructions, >>> - unit tests for lzcnt/tzcnt, >>> - ability to emit bsf/bsr in case lzcnt/tzcnt were turned off from the command line, >>> - tightening the stamps produced by ScanBitForward/ReverseNode nodes. >>> >>> >>> Webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.00/ >>> >>> Thanks! >>> igor > From thomas.wuerthinger at oracle.com Mon Nov 17 23:30:16 2014 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Tue, 18 Nov 2014 00:30:16 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> Message-ID: <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> Igor, Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg. - thomas From christian.thalinger at oracle.com Mon Nov 17 23:41:14 2014 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Mon, 17 Nov 2014 15:41:14 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> Message-ID: <218C4A7F-162F-4D14-957A-1BAFDAD65999@oracle.com> > On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: > > Igor, > > Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. > > In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . Is this graph also available on the OpenJDK wiki? > > - thomas From igor.veresov at oracle.com Mon Nov 17 23:44:51 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Mon, 17 Nov 2014 15:44:51 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> Message-ID: <024B7157-0233-4087-9C40-F68E78CFC24B@oracle.com> >> >> Updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.01/ > > Where are the create methods used? > > + public static AMD64CountLeadingZerosNode create(ValueNode value) { > + return new AMD64CountLeadingZerosNode(value); > + } > + public static AMD64CountTrailingZerosNode create(ValueNode value) { > + return new AMD64CountTrailingZerosNode(value); > + } They are not used indeed. I thought it was some sort of convention (is it not?) since they are in BitScan{Froward,Reverse}Nodes but not used as well. igor From tom.rodriguez at oracle.com Mon Nov 17 23:49:12 2014 From: tom.rodriguez at oracle.com (Tom Rodriguez) Date: Mon, 17 Nov 2014 15:49:12 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <024B7157-0233-4087-9C40-F68E78CFC24B@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <024B7157-0233-4087-9C40-F68E78CFC24B@oracle.com> Message-ID: <82013817-4510-49D3-8032-EEF735240E46@oracle.com> They are used through the reflective NodeIntrinsic construction. The ?create" factory methods are leftovers from the experiment with more annotation based node generation which required factories. tom On Nov 17, 2014, at 3:44 PM, Igor Veresov wrote: > >>> >>> Updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.01/ >> >> Where are the create methods used? >> >> + public static AMD64CountLeadingZerosNode create(ValueNode value) { >> + return new AMD64CountLeadingZerosNode(value); >> + } >> + public static AMD64CountTrailingZerosNode create(ValueNode value) { >> + return new AMD64CountTrailingZerosNode(value); >> + } > > They are not used indeed. I thought it was some sort of convention (is it not?) since they are in BitScan{Froward,Reverse}Nodes but not used as well. > > igor From doug.simon at oracle.com Tue Nov 18 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 18 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 13 new changesets Message-ID: <201411180200.sAI207cx013787@aojmv0008> Changeset: ce15cc6af5fe Author: Roland Schatz Date: 2014-11-17 11:51 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ce15cc6af5fe Additional constructor for AMD64HotSpotLIRGenerator. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java Changeset: 810222d74f7c Author: Gilles Duboscq Date: 2014-11-17 14:58 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/810222d74f7c When deoptimizing on unwind, revoke biases instead of calling deoptimize_frame before returning deopt continuation ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: 3ad5d7a6adb5 Author: Gilles Duboscq Date: 2014-10-21 11:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3ad5d7a6adb5 Unalias some DeoptReasons ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/java.cpp Changeset: a4ab0b87fb34 Author: Gilles Duboscq Date: 2014-09-16 15:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a4ab0b87fb34 Make distribution dependencies also exclude libraries ! mx/projects.deprecated ! mxtool/mx.py Changeset: 973c6551dfd8 Author: Gilles Duboscq Date: 2014-09-22 10:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/973c6551dfd8 Add TrustedInterface to list of classes for tests ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TypeUniverse.java Changeset: 1cd104505b61 Author: Gilles Duboscq Date: 2014-11-12 10:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1cd104505b61 ConditionalElimination: use GuardingNode interface where possible ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Changeset: 05fde207f06c Author: Gilles Duboscq Date: 2014-11-12 13:35 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/05fde207f06c ConditionalEliminaion: some refactorings and simplifications ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Changeset: f7a98bf17185 Author: Gilles Duboscq Date: 2014-11-12 13:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f7a98bf17185 Add some javadoc to MergeableState ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/MergeableState.java Changeset: 728637aa02e6 Author: Gilles Duboscq Date: 2014-11-12 13:50 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/728637aa02e6 Rename GuardNode.negated to GuardNode.isNegated ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.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/GuardLoweringPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java Changeset: 7defd2fb3120 Author: Gilles Duboscq Date: 2014-11-17 18:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7defd2fb3120 Make sure FloatStamps have float bounds ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java Changeset: 43e0f6dfdb4e Author: Roland Schatz Date: 2014-11-17 14:59 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/43e0f6dfdb4e Remove dead code from CompressionNode. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Changeset: e7ab82e7cc37 Author: Roland Schatz Date: 2014-11-17 17:25 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e7ab82e7cc37 Move metaspace pointer handling to hotspot specific WordTypeRewriter. ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILNewObjectSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.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/NewArrayStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastDynamicSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.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/HubGetClassNode.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/MonitorSnippets.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/ObjectSubstitutions.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/NewArrayStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewInstanceStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotOperation.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/KlassPointer.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/MethodPointer.java - graal/com.oracle.graal.word/src/com/oracle/graal/word/MethodPointer.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/Pointer.java - graal/com.oracle.graal.word/src/com/oracle/graal/word/TypePointer.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java - graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/LoadIndexedPointerNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Changeset: 64c042352f00 Author: Roland Schatz Date: 2014-11-17 18:11 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/64c042352f00 Make stamp of LoadHubNode flexible. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java From igor.veresov at oracle.com Tue Nov 18 04:49:01 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Mon, 17 Nov 2014 20:49:01 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> Message-ID: <91E835AC-403D-4CA2-88A2-1BCA2134B44D@oracle.com> Thomas, Thanks for the advice! I moved the substitutions to c.o.g.hotspot. Here is the updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02/ Thanks! igor > On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: > > Igor, > > Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. > > In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . > > - thomas From doug.simon at oracle.com Tue Nov 18 07:44:07 2014 From: doug.simon at oracle.com (Doug Simon) Date: Tue, 18 Nov 2014 08:44:07 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> Message-ID: <2C6E8F56-64F8-4C36-BC0D-2EB51909008E@oracle.com> > On Nov 18, 2014, at 12:21 AM, Christian Thalinger wrote: > > >> On Nov 16, 2014, at 12:56 AM, Igor Veresov wrote: >> >> Hi Gilles, >> >> Thanks for the review! >> Please find the replies inline. >> >>> On Nov 15, 2014, at 4:06 AM, Gilles Duboscq wrote: >>> >>> Hi Igor, >>> >>> -BitScanForwardNode.inferStamp: >>> looks like firstMaybeSetBit and min can now be set outside of the if/else >> >> Good point. Fixed. >> >>> -BitOpsTest: >>> You could have used UnsafeAccess >>> >> Aha, thanks for pointing that out. I grepped for something like it but didn?t notice UnsafeAccess. Fixed. >> >>> The rest looks good to me. Thanks. >> >> Updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.01/ > > Where are the create methods used? > > + public static AMD64CountLeadingZerosNode create(ValueNode value) { > + return new AMD64CountLeadingZerosNode(value); > + } > + public static AMD64CountTrailingZerosNode create(ValueNode value) { > + return new AMD64CountTrailingZerosNode(value); > + } They are used by the NodeIntrinsificationPhase. These factory methods are an artifact of the experiment with generating source for Node classes. They may go away at some point in which case NodeIntrinsificationPhase would revert to calling the constructors directly. -Doug From josef.eisl at jku.at Tue Nov 18 10:10:27 2014 From: josef.eisl at jku.at (Josef Eisl) Date: Tue, 18 Nov 2014 11:10:27 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <218C4A7F-162F-4D14-957A-1BAFDAD65999@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> <218C4A7F-162F-4D14-957A-1BAFDAD65999@oracle.com> Message-ID: <546B1B13.8030501@jku.at> On 18/11/14 00:41, Christian Thalinger wrote: > >> On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: >> >> Igor, >> >> Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. >> >> In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . > > Is this graph also available on the OpenJDK wiki? I don't think so, there is only the Javadoc link to lafo. But you can use `mx projectgraph` to build the graph from the sources (and there is also IGV support `mx projectgraph --igv`). josef From java at stefan-marr.de Tue Nov 18 21:49:57 2014 From: java at stefan-marr.de (Stefan Marr) Date: Tue, 18 Nov 2014 22:49:57 +0100 Subject: Huge Performance Regression introduced September 18th Message-ID: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> Hi: I got a problem with a change introduced on September 18th. It introduces a >10x performance regression on my Mandelbrot benchmark. The last working and fast revision is http://hg.openjdk.java.net/graal/graal/rev/646ddd52d79a Afterwards you got http://hg.openjdk.java.net/graal/graal/rev/7716c6993546 and http://hg.openjdk.java.net/graal/graal/rev/a8eb7473d58a which just result in errors when Graal is trying to compile my benchmark. And the next working version is: http://hg.openjdk.java.net/graal/graal/rev/ac6e25901d62 [Add trusted interface concept and use it for WordBase, fix a NPE and some tests] Perhaps those changes again point out bugs in TruffleSOM, so would be good if someone could explain me what is going on there. On a recent Graal, you can see Mandelbrot being really slow by getting the source like usually: git clone --recursive https://github.com/SOM-st/TruffleSOM cd TruffleSOM ant jar ../graal/mxtool/mx ?vm server vm -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Mandelbrot 1000 0 750 Thanks Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From tom.rodriguez at oracle.com Wed Nov 19 00:17:21 2014 From: tom.rodriguez at oracle.com (Tom Rodriguez) Date: Tue, 18 Nov 2014 16:17:21 -0800 Subject: Huge Performance Regression introduced September 18th In-Reply-To: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> References: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> Message-ID: I confirmed it?s the trusted interface stuff by changing HotSpotResolvedObjectTypeImpl.isTrustedInterfaceType to always return true and I could see it speed up again. A little more tweaking indicates it?s caused by MaterializedFrame not being trusted. I don?t have a good answer for why though. Presumably it?s inlining The meaning behind the untrusted interface stuff is that the verifier treats interface types like Object, so there?s no guarantee that an argument or field with an interface type really implements that interface. You have to perform a type check of some sort to know that it really is of the expected type. The trusted interface stuff admits that by erasing interface types from our internal stamps, except in cases where we are using interface types in a slightly magical way within the WordTypeRewriter. Maybe erasing to object is being too conservative. Could the interface type provide a hint about where to search in the hierarchy for target methods, even if you need a check to use them? I would expect type profiling to help with this case but isn?t that disabled in truffle compiles? tom On Nov 18, 2014, at 1:49 PM, Stefan Marr wrote: > Hi: > > I got a problem with a change introduced on September 18th. > It introduces a >10x performance regression on my Mandelbrot benchmark. > > The last working and fast revision is > http://hg.openjdk.java.net/graal/graal/rev/646ddd52d79a > > Afterwards you got > http://hg.openjdk.java.net/graal/graal/rev/7716c6993546 > and > http://hg.openjdk.java.net/graal/graal/rev/a8eb7473d58a > which just result in errors when Graal is trying to compile my benchmark. > > And the next working version is: > http://hg.openjdk.java.net/graal/graal/rev/ac6e25901d62 > [Add trusted interface concept and use it for WordBase, fix a NPE and some tests] > > > > Perhaps those changes again point out bugs in TruffleSOM, so would be good if someone could explain me what is going on there. > > On a recent Graal, you can see Mandelbrot being really slow by getting the source like usually: > > git clone --recursive https://github.com/SOM-st/TruffleSOM > cd TruffleSOM > ant jar > ../graal/mxtool/mx ?vm server vm -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Mandelbrot 1000 0 750 > > > Thanks > Stefan > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > From doug.simon at oracle.com Wed Nov 19 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 19 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 10 new changesets Message-ID: <201411190200.sAJ20DxF024704@aojmv0008> Changeset: b9f2356c3a69 Author: Gilles Duboscq Date: 2014-11-17 21:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b9f2356c3a69 HotSpotVMConfig: use the correct deopt reason constants ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java ! src/share/vm/graal/vmStructs_graal.hpp Changeset: 03c63fd2f714 Author: Gilles Duboscq Date: 2014-11-18 10:55 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/03c63fd2f714 Backout 810222d74f7c ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: 4a1b4400bb1f Author: Gilles Duboscq Date: 2014-11-18 11:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4a1b4400bb1f SharedRuntime::compute_compiled_exc_handler: explain why it seems that we deoptimzie twice, use Deoptimization::deoptimize since we already have our hands on the frame. ! src/share/vm/runtime/sharedRuntime.cpp Changeset: 194041c3fdab Author: Andreas Woess Date: 2014-11-14 13:49 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/194041c3fdab improve path resolving in mx.sh so that it can be run from outside the repo root ! mxtool/mx Changeset: f439fdb137a3 Author: Andreas Woess Date: 2014-11-18 16:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f439fdb137a3 Truffle: initial commit of object API + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/BaseLocation.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/BooleanLocation.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DebugCounter.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DoubleLocation.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObject.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/DynamicObjectFactory.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/FinalLocationException.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/HiddenKey.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/IncompatibleLocationException.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/IntLocation.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Layout.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/LayoutBuilder.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/LayoutFactory.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Location.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/LocationFactory.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/LocationModifier.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/LongLocation.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/ObjectLocation.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/ObjectType.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Property.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Shape.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/ShapeVisitor.java + graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/TypedLocation.java ! mx/suite.py Changeset: 2c3666f44855 Author: Andreas Woess Date: 2014-11-18 23:19 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2c3666f44855 Truffle: initial commit of object API implementation + graal/com.oracle.truffle.object.basic/src/META-INF/services/com.oracle.truffle.api.object.LayoutFactory + graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicAllocator.java + graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicLayout.java + graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicLocations.java + graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/DefaultLayoutFactory.java + graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/DefaultStrategy.java + graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/DynamicObjectBasic.java + graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/ShapeBasic.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/Debug.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/DebugShapeVisitor.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/LayoutImpl.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/LayoutStrategy.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/LocationImpl.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/Locations.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ObjectStorageOptions.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyImpl.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/PropertyMap.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/Transition.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/debug/GraphvizShapeVisitor.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/debug/JSONShapeVisitor.java + graal/com.oracle.truffle.object/src/com/oracle/truffle/object/debug/ShapeProfiler.java ! mx/suite.py Changeset: d405651001d1 Author: Andreas Woess Date: 2014-11-18 23:11 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d405651001d1 Truffle: add object API to truffle distribution, update changelog ! CHANGELOG.md ! mx/suite.py Changeset: f444ef4684ec Author: Andreas Woess Date: 2014-10-21 15:11 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f444ef4684ec SL: sanitize whitespace in ATG ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguage.atg Changeset: dc2e000bed40 Author: Andreas Woess Date: 2014-11-18 23:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/dc2e000bed40 SL: add basic support for creating objects and accessing properties ! graal/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/instrument/SLInstrumentTestRunner.java + graal/com.oracle.truffle.sl.test/tests/Object.output + graal/com.oracle.truffle.sl.test/tests/Object.sl + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLNewObjectBuiltin.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLReadPropertyNode.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLWritePropertyNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SLNodeFactory.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Scanner.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguage.atg ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Changeset: 997bc9764a9a Author: Andreas Woess Date: 2014-11-18 12:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/997bc9764a9a SL: use the truffle object storage model to represent SL objects ! graal/com.oracle.truffle.sl.test/tests/Object.sl ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLNewObjectBuiltin.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLReadPropertyCacheNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLReadPropertyNode.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLWritePropertyCacheNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLWritePropertyNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java ! mx/suite.py From thomas.wuerthinger at oracle.com Wed Nov 19 02:55:32 2014 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Wed, 19 Nov 2014 03:55:32 +0100 Subject: Huge Performance Regression introduced September 18th In-Reply-To: References: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> Message-ID: Tom, I think the MaterializedFrame interface should have only one concrete implementation in a Graal-enabled VM (FrameWithoutBoxing). - thomas On 19 Nov 2014, at 01:17, Tom Rodriguez wrote: > I confirmed it?s the trusted interface stuff by changing HotSpotResolvedObjectTypeImpl.isTrustedInterfaceType to always return true and I could see it speed up again. A little more tweaking indicates it?s caused by MaterializedFrame not being trusted. I don?t have a good answer for why though. Presumably it?s inlining > > The meaning behind the untrusted interface stuff is that the verifier treats interface types like Object, so there?s no guarantee that an argument or field with an interface type really implements that interface. You have to perform a type check of some sort to know that it really is of the expected type. The trusted interface stuff admits that by erasing interface types from our internal stamps, except in cases where we are using interface types in a slightly magical way within the WordTypeRewriter. > > Maybe erasing to object is being too conservative. Could the interface type provide a hint about where to search in the hierarchy for target methods, even if you need a check to use them? I would expect type profiling to help with this case but isn?t that disabled in truffle compiles? > > tom > > On Nov 18, 2014, at 1:49 PM, Stefan Marr wrote: > >> Hi: >> >> I got a problem with a change introduced on September 18th. >> It introduces a >10x performance regression on my Mandelbrot benchmark. >> >> The last working and fast revision is >> http://hg.openjdk.java.net/graal/graal/rev/646ddd52d79a >> >> Afterwards you got >> http://hg.openjdk.java.net/graal/graal/rev/7716c6993546 >> and >> http://hg.openjdk.java.net/graal/graal/rev/a8eb7473d58a >> which just result in errors when Graal is trying to compile my benchmark. >> >> And the next working version is: >> http://hg.openjdk.java.net/graal/graal/rev/ac6e25901d62 >> [Add trusted interface concept and use it for WordBase, fix a NPE and some tests] >> >> >> >> Perhaps those changes again point out bugs in TruffleSOM, so would be good if someone could explain me what is going on there. >> >> On a recent Graal, you can see Mandelbrot being really slow by getting the source like usually: >> >> git clone --recursive https://github.com/SOM-st/TruffleSOM >> cd TruffleSOM >> ant jar >> ../graal/mxtool/mx ?vm server vm -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Mandelbrot 1000 0 750 >> >> >> Thanks >> Stefan >> >> -- >> Stefan Marr >> INRIA Lille - Nord Europe >> http://stefan-marr.de/research/ >> >> >> > From andreas.woess at jku.at Wed Nov 19 03:04:14 2014 From: andreas.woess at jku.at (Andreas Woess) Date: Wed, 19 Nov 2014 04:04:14 +0100 Subject: Huge Performance Regression introduced September 18th In-Reply-To: References: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> Message-ID: <546C08AE.6080706@jku.at> Hi Stefan, Tom: We canonicalize a checkcast of an interface with a single leaf-class implementor to a checkcast of that class, which is the case for MaterializedFrame (and safe). The problem here is that there's no such cast (in the bytecode) before the interface method calls on MaterializedFrame (and we don't have type profiles). The next complication is that the methods are defined in Frame, not MaterializedFrame, so single implementor call devirtualization doesn't trigger either. As a workaround, you can manually insert a cast. A simple "(MaterializedFrame) context" does not work, however, since javac would just remove the unnecessary cast; you have to either do MaterializedFrame.class.cast(context), or change the type of the context field to Object, or have a helper method do the cast. So this patch should help [1]. I realize this is suboptimal, and we should find a way to let Graal insert the guard. - andreas [1] > diff --git a/src/som/vmobjects/SBlock.java b/src/som/vmobjects/SBlock.java > index fb7a685..5564f57 100644 > --- a/src/som/vmobjects/SBlock.java > +++ b/src/som/vmobjects/SBlock.java > @@ -95,12 +95,11 @@ public abstract class SBlock extends SAbstractObject { > > public final MaterializedFrame getContext() { > assert context != null; > - return context; > + return MaterializedFrame.class.cast(context); > } > > public final Object getOuterSelf() { > - assert context != null; > - return SArguments.rcvr(context); > + return SArguments.rcvr(getContext()); > } > > public static SInvokable getEvaluationPrimitive(final int > numberOfArguments, On 2014-11-19 01:17, Tom Rodriguez wrote: > I confirmed it?s the trusted interface stuff by changing HotSpotResolvedObjectTypeImpl.isTrustedInterfaceType to always return true and I could see it speed up again. A little more tweaking indicates it?s caused by MaterializedFrame not being trusted. I don?t have a good answer for why though. Presumably it?s inlining > > The meaning behind the untrusted interface stuff is that the verifier treats interface types like Object, so there?s no guarantee that an argument or field with an interface type really implements that interface. You have to perform a type check of some sort to know that it really is of the expected type. The trusted interface stuff admits that by erasing interface types from our internal stamps, except in cases where we are using interface types in a slightly magical way within the WordTypeRewriter. > > Maybe erasing to object is being too conservative. Could the interface type provide a hint about where to search in the hierarchy for target methods, even if you need a check to use them? I would expect type profiling to help with this case but isn?t that disabled in truffle compiles? > > tom > > On Nov 18, 2014, at 1:49 PM, Stefan Marr wrote: > >> Hi: >> >> I got a problem with a change introduced on September 18th. >> It introduces a >10x performance regression on my Mandelbrot benchmark. >> >> The last working and fast revision is >> http://hg.openjdk.java.net/graal/graal/rev/646ddd52d79a >> >> Afterwards you got >> http://hg.openjdk.java.net/graal/graal/rev/7716c6993546 >> and >> http://hg.openjdk.java.net/graal/graal/rev/a8eb7473d58a >> which just result in errors when Graal is trying to compile my benchmark. >> >> And the next working version is: >> http://hg.openjdk.java.net/graal/graal/rev/ac6e25901d62 >> [Add trusted interface concept and use it for WordBase, fix a NPE and some tests] >> >> >> >> Perhaps those changes again point out bugs in TruffleSOM, so would be good if someone could explain me what is going on there. >> >> On a recent Graal, you can see Mandelbrot being really slow by getting the source like usually: >> >> git clone --recursive https://github.com/SOM-st/TruffleSOM >> cd TruffleSOM >> ant jar >> ../graal/mxtool/mx ?vm server vm -Xbootclasspath/a:build/classes:libs/truffle.jar som.vm.Universe -cp Smalltalk Examples/Benchmarks/BenchmarkHarness.som Mandelbrot 1000 0 750 >> >> >> Thanks >> Stefan >> >> -- >> Stefan Marr >> INRIA Lille - Nord Europe >> http://stefan-marr.de/research/ >> >> >> From igor.veresov at oracle.com Wed Nov 19 03:16:48 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Tue, 18 Nov 2014 19:16:48 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <91E835AC-403D-4CA2-88A2-1BCA2134B44D@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> <91E835AC-403D-4CA2-88A2-1BCA2134B44D@oracle.com> Message-ID: So, is this one ok? (http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 ) igor > On Nov 17, 2014, at 8:49 PM, Igor Veresov wrote: > > Thomas, > > Thanks for the advice! I moved the substitutions to c.o.g.hotspot. > Here is the updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 > > Thanks! > igor > >> On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: >> >> Igor, >> >> Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. >> >> In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . >> >> - thomas > From java at stefan-marr.de Wed Nov 19 07:01:28 2014 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 19 Nov 2014 08:01:28 +0100 Subject: Huge Performance Regression introduced September 18th In-Reply-To: <546C08AE.6080706@jku.at> References: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> <546C08AE.6080706@jku.at> Message-ID: Hi: First, thank you guys, for immediately looking into it. :) > On 19 Nov 2014, at 04:04, Andreas Woess wrote: > > We canonicalize a checkcast of an interface with a single leaf-class > implementor to a checkcast of that class, which is the case for > MaterializedFrame (and safe). The problem here is that there's no such > cast (in the bytecode) before the interface method calls on > MaterializedFrame (and we don?t have type profiles). I wonder why none of the explicit types in the rest of the code is sufficient? The return type of the method you patched is MaterializedFrame, as well as the field in which the pointer is stored. > As a workaround, you can manually insert a cast. A simple > "(MaterializedFrame) context" does not work, however, since javac would > just remove the unnecessary cast; you have to either do > MaterializedFrame.class.cast(context), or change the type of the context > field to Object, or have a helper method do the cast. So this patch > should help [1]. I realize this is suboptimal, and we should find a way > to let Graal insert the guard. How does that relate to a change that removed CompilerDirectives.unsafeFrameCast? Because, I used that helper in exactly that position before. But, I needed to remove it from the code on November 6th, because it was gone from the API. Thanks again Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From andreas.woess at jku.at Wed Nov 19 10:08:09 2014 From: andreas.woess at jku.at (Andreas Woess) Date: Wed, 19 Nov 2014 11:08:09 +0100 Subject: Huge Performance Regression introduced September 18th In-Reply-To: References: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> <546C08AE.6080706@jku.at> Message-ID: <546C6C09.4020204@jku.at> On 2014-11-19 08:01, Stefan Marr wrote: > Hi: > > First, thank you guys, for immediately looking into it. :) > >> On 19 Nov 2014, at 04:04, Andreas Woess wrote: >> >> We canonicalize a checkcast of an interface with a single leaf-class >> implementor to a checkcast of that class, which is the case for >> MaterializedFrame (and safe). The problem here is that there's no such >> cast (in the bytecode) before the interface method calls on >> MaterializedFrame (and we don?t have type profiles). > I wonder why none of the explicit types in the rest of the code is sufficient? > The return type of the method you patched is MaterializedFrame, as well as the field in which the pointer is stored. As Tom mentioned, we cannot trust interface type in signatures as they aren't verified, and that's why we (currently) erase this type information in the compiler. Maybe the solution is to not erase this information but insert the necessary runtime checks. >> As a workaround, you can manually insert a cast. A simple >> "(MaterializedFrame) context" does not work, however, since javac would >> just remove the unnecessary cast; you have to either do >> MaterializedFrame.class.cast(context), or change the type of the context >> field to Object, or have a helper method do the cast. So this patch >> should help [1]. I realize this is suboptimal, and we should find a way >> to let Graal insert the guard. > How does that relate to a change that removed CompilerDirectives.unsafeFrameCast? > Because, I used that helper in exactly that position before. But, I needed to remove it from the code on November 6th, because it was gone from the API. unsafeFrameCast did achieve the same thing, although in a potentially unsafe manner. We could put back a (safe) frameCast method, but it would be better not to need it. - andreas From duboscq at ssw.jku.at Wed Nov 19 11:15:43 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Wed, 19 Nov 2014 12:15:43 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> <91E835AC-403D-4CA2-88A2-1BCA2134B44D@oracle.com> Message-ID: It's a bit strange to put something that it platform-specific only into a vm-speific only project. It means that now other VMs will to be able to use those instructions or will need to re-implement the nodes & substitution. Can't we make hotspot just mask the CPUFeature flags like we do for the other flags (as suggested by yourself and Christian above)? -Gilles On Wed, Nov 19, 2014 at 4:16 AM, Igor Veresov wrote: > So, is this one ok? > (http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 ) > > igor > >> On Nov 17, 2014, at 8:49 PM, Igor Veresov wrote: >> >> Thomas, >> >> Thanks for the advice! I moved the substitutions to c.o.g.hotspot. >> Here is the updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 >> >> Thanks! >> igor >> >>> On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: >>> >>> Igor, >>> >>> Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. >>> >>> In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . >>> >>> - thomas >> > From duboscq at ssw.jku.at Wed Nov 19 12:15:32 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Wed, 19 Nov 2014 13:15:32 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> <91E835AC-403D-4CA2-88A2-1BCA2134B44D@oracle.com> Message-ID: I'll integrate it as-is though and we can refine this later. -Gilles On Wed, Nov 19, 2014 at 12:15 PM, Gilles Duboscq wrote: > It's a bit strange to put something that it platform-specific only > into a vm-speific only project. It means that now other VMs will to be > able to use those instructions or will need to re-implement the nodes > & substitution. > Can't we make hotspot just mask the CPUFeature flags like we do for > the other flags (as suggested by yourself and Christian above)? > > -Gilles > > On Wed, Nov 19, 2014 at 4:16 AM, Igor Veresov wrote: >> So, is this one ok? >> (http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 ) >> >> igor >> >>> On Nov 17, 2014, at 8:49 PM, Igor Veresov wrote: >>> >>> Thomas, >>> >>> Thanks for the advice! I moved the substitutions to c.o.g.hotspot. >>> Here is the updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 >>> >>> Thanks! >>> igor >>> >>>> On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: >>>> >>>> Igor, >>>> >>>> Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. >>>> >>>> In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . >>>> >>>> - thomas >>> >> From igor.veresov at oracle.com Wed Nov 19 20:17:29 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Wed, 19 Nov 2014 12:17:29 -0800 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> <91E835AC-403D-4CA2-88A2-1BCA2134B44D@oracle.com> Message-ID: <830B3F6F-5368-46A2-9864-03112760A351@oracle.com> Gilles, Thanks a lot! I?d rather proceed incrementally. I?ll add extended substitution guards and refactor this in the next change. igor > On Nov 19, 2014, at 4:15 AM, Gilles Duboscq wrote: > > I'll integrate it as-is though and we can refine this later. > > -Gilles > > On Wed, Nov 19, 2014 at 12:15 PM, Gilles Duboscq wrote: >> It's a bit strange to put something that it platform-specific only >> into a vm-speific only project. It means that now other VMs will to be >> able to use those instructions or will need to re-implement the nodes >> & substitution. >> Can't we make hotspot just mask the CPUFeature flags like we do for >> the other flags (as suggested by yourself and Christian above)? >> >> -Gilles >> >> On Wed, Nov 19, 2014 at 4:16 AM, Igor Veresov wrote: >>> So, is this one ok? >>> (http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 ) >>> >>> igor >>> >>>> On Nov 17, 2014, at 8:49 PM, Igor Veresov wrote: >>>> >>>> Thomas, >>>> >>>> Thanks for the advice! I moved the substitutions to c.o.g.hotspot. >>>> Here is the updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 >>>> >>>> Thanks! >>>> igor >>>> >>>>> On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: >>>>> >>>>> Igor, >>>>> >>>>> Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. >>>>> >>>>> In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . >>>>> >>>>> - thomas >>>> >>> From thomas.wuerthinger at oracle.com Wed Nov 19 21:51:57 2014 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Wed, 19 Nov 2014 22:51:57 +0100 Subject: RFR: Add support of lzcnt and tzcnt In-Reply-To: <830B3F6F-5368-46A2-9864-03112760A351@oracle.com> References: <7D3AA4F3-0565-4D5A-81A0-1DC77EF06872@oracle.com> <546A62C9.3010505@oracle.com> <8F142747-4ADD-46FF-8247-157B6AFD4C6A@oracle.com> <5799859F-3C12-4CA8-BA47-3FF2B62AC29E@oracle.com> <5A0CD01C-946B-4AD8-81BE-F6BAAEFA84F9@oracle.com> <91E835AC-403D-4CA2-88A2-1BCA2134B44D@oracle.com> <830B3F6F-5368-46A2-9864-03112760A351@oracle.com> Message-ID: Sounds great! Thanks for your contribution! - thomas On 19 Nov 2014, at 21:17, Igor Veresov wrote: > Gilles, > > Thanks a lot! > > I?d rather proceed incrementally. I?ll add extended substitution guards and refactor this in the next change. > > igor > >> On Nov 19, 2014, at 4:15 AM, Gilles Duboscq wrote: >> >> I'll integrate it as-is though and we can refine this later. >> >> -Gilles >> >> On Wed, Nov 19, 2014 at 12:15 PM, Gilles Duboscq wrote: >>> It's a bit strange to put something that it platform-specific only >>> into a vm-speific only project. It means that now other VMs will to be >>> able to use those instructions or will need to re-implement the nodes >>> & substitution. >>> Can't we make hotspot just mask the CPUFeature flags like we do for >>> the other flags (as suggested by yourself and Christian above)? >>> >>> -Gilles >>> >>> On Wed, Nov 19, 2014 at 4:16 AM, Igor Veresov wrote: >>>> So, is this one ok? >>>> (http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 ) >>>> >>>> igor >>>> >>>>> On Nov 17, 2014, at 8:49 PM, Igor Veresov wrote: >>>>> >>>>> Thomas, >>>>> >>>>> Thanks for the advice! I moved the substitutions to c.o.g.hotspot. >>>>> Here is the updated webrev: http://cr.openjdk.java.net/~iveresov/lztzcnt/webrev.02 >>>>> >>>>> Thanks! >>>>> igor >>>>> >>>>>> On Nov 17, 2014, at 3:30 PM, Thomas Wuerthinger wrote: >>>>>> >>>>>> Igor, >>>>>> >>>>>> Another possibility is to move the registration of AMD64IntegerSubstitutions and AMD64LongSubstitutions to the HotSpotSubstitutions class and guard these registrations with checking the flag from HotSpotVMConfig there. If I understand the patch correctly, then the substitutions themselves are independent of the VM and only the configuration whether they should be used or not depends on code specific to HotSpot. >>>>>> >>>>>> In general, we mark HotSpot specific modules with ?hotspot?, platform specific packages with ?amd64?, ?ptx?, ?sparc? or ?hsail?, and package specific to testing with ?test?. A more general module must never depend on a more specific module. A module may be specific in more than one dimension, "com.oracle.graal.hotspot.amd64.test? is for example a testing package specific to HotSpot and AMD64. A module marked with ?api? can only depend on other modules marked with ?api?. We should probably enforce these rules in the mx script. You can see our full dependency graph at http://lafo.ssw.uni-linz.ac.at/javadoc/graalvm/all/projects.jpg . >>>>>> >>>>>> - thomas >>>>> >>>> > From duboscq at ssw.jku.at Wed Nov 19 22:27:29 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Wed, 19 Nov 2014 23:27:29 +0100 Subject: Huge Performance Regression introduced September 18th In-Reply-To: <546C6C09.4020204@jku.at> References: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> <546C08AE.6080706@jku.at> <546C6C09.4020204@jku.at> Message-ID: Hi Stefan, I just commited a change that should solve your problem (it will come in the nightly push in a few hours). On my machine, the perf of your Mandelbrot example went up 10x so the regression seems to be fixed. -Gilles On Wed, Nov 19, 2014 at 11:08 AM, Andreas Woess wrote: > On 2014-11-19 08:01, Stefan Marr wrote: >> Hi: >> >> First, thank you guys, for immediately looking into it. :) >> >>> On 19 Nov 2014, at 04:04, Andreas Woess wrote: >>> >>> We canonicalize a checkcast of an interface with a single leaf-class >>> implementor to a checkcast of that class, which is the case for >>> MaterializedFrame (and safe). The problem here is that there's no such >>> cast (in the bytecode) before the interface method calls on >>> MaterializedFrame (and we don?t have type profiles). >> I wonder why none of the explicit types in the rest of the code is sufficient? >> The return type of the method you patched is MaterializedFrame, as well as the field in which the pointer is stored. > As Tom mentioned, we cannot trust interface type in signatures as they > aren't verified, and that's why we (currently) erase this type > information in the compiler. Maybe the solution is to not erase this > information but insert the necessary runtime checks. > >>> As a workaround, you can manually insert a cast. A simple >>> "(MaterializedFrame) context" does not work, however, since javac would >>> just remove the unnecessary cast; you have to either do >>> MaterializedFrame.class.cast(context), or change the type of the context >>> field to Object, or have a helper method do the cast. So this patch >>> should help [1]. I realize this is suboptimal, and we should find a way >>> to let Graal insert the guard. >> How does that relate to a change that removed CompilerDirectives.unsafeFrameCast? >> Because, I used that helper in exactly that position before. But, I needed to remove it from the code on November 6th, because it was gone from the API. > unsafeFrameCast did achieve the same thing, although in a potentially > unsafe manner. We could put back a (safe) frameCast method, but it would > be better not to need it. > > - andreas From java at stefan-marr.de Wed Nov 19 22:35:49 2014 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 19 Nov 2014 23:35:49 +0100 Subject: Huge Performance Regression introduced September 18th In-Reply-To: References: <37A88DB9-112B-49AC-B325-D3A01E893504@stefan-marr.de> <546C08AE.6080706@jku.at> <546C6C09.4020204@jku.at> Message-ID: Hi Gilles: > On 19 Nov 2014, at 23:27, Gilles Duboscq wrote: > > I just commited a change that should solve your problem (it will come > in the nightly push in a few hours). > On my machine, the perf of your Mandelbrot example went up 10x so the > regression seems to be fixed. Thanks, will try to have a look. For the moment, I went with an unsafe cast to also indicate that the field is never null, which seems to improve warmup a little on a variety of benchmarks. But since Chris mentioned that he might have seen a similar issue in JRuby, a fix in Graal is probably a good thing. Thanks Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From doug.simon at oracle.com Thu Nov 20 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 20 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 56 new changesets Message-ID: <201411200200.sAK209VJ013001@aojmv0008> Changeset: 12cae938aade Author: Doug Simon Date: 2014-11-19 09:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/12cae938aade removed projects.deprecated - mx/projects.deprecated Changeset: df8d52aba789 Author: Doug Simon Date: 2014-11-19 13:10 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/df8d52aba789 fixed support for IDE_BUILD_TARGET ! hotspot/.cproject ! hotspot/.settings/org.eclipse.cdt.core.prefs ! mx/mx_graal.py Changeset: 6dc4f0be9a70 Author: Gilles Duboscq Date: 2014-11-19 13:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6dc4f0be9a70 Add support of lzcnt and tzcnt - support of lzcnt and tzcnt instructions, - unit tests for lzcnt/tzcnt, - ability to emit bsf/bsr in case lzcnt/tzcnt were turned off from the command line, - tightening the stamps produced by ScanBitForward/ReverseNode nodes. Contributed-By: Igor Veresov ! graal/com.oracle.graal.amd64/src/com/oracle/graal/amd64/AMD64.java + graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/BitOpsTest.java ! graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java ! graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CountLeadingZerosNode.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CountTrailingZerosNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotspotGuards.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/IntegerSubstitutions.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LongSubstitutions.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64BitManipulationOp.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.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 ! src/cpu/x86/vm/vmStructs_x86.hpp Changeset: 0c6504598b65 Author: Gilles Duboscq Date: 2014-11-19 11:36 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0c6504598b65 StampTool: add more methods to create object stamps to avoid using too many boolean arguments, add some javadoc, use them. ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.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/java/CheckCastNode.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/cfs/CheckCastReduction.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Changeset: 3b7746ceb0e8 Author: Gilles Duboscq Date: 2014-11-19 12:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3b7746ceb0e8 Trust interface types comming form LoadIndexed nodes ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Changeset: 0ea607f6a680 Author: Roland Schatz Date: 2014-11-19 13:43 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0ea607f6a680 Use HotSpotWordTypeRewriterPhase in Truffle. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleReplacements.java Changeset: 0e794bf2decb Author: Josef Eisl Date: 2014-11-11 18:34 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0e794bf2decb Add CHANGELOG entry about the changed behavior of ResolvedJavaType#resolveMethod(). ! CHANGELOG.md Changeset: b7089e3d8457 Author: Josef Eisl Date: 2014-11-11 14:16 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b7089e3d8457 Print LIR after FrameMap building. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Changeset: d90c0904ff56 Author: Josef Eisl Date: 2014-10-23 10:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d90c0904ff56 Renamed FrameMapBuilderImpl to ForwardingFrameMapBuilder. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilderImpl.java Changeset: a06ab51f9196 Author: Josef Eisl Date: 2014-11-10 18:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a06ab51f9196 Add FrameMapBuilder.getCodeCache(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java Changeset: c656c5772cfa Author: Josef Eisl Date: 2014-10-23 13:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c656c5772cfa Pass LIRGenerationResult to FrameMapBuilder.buildFrameMap(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerationResult.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerationResultBase.java Changeset: 5afaa02c53dd Author: Josef Eisl Date: 2014-10-23 14:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5afaa02c53dd Introduce AMD64FrameMapBuilder to support special stack slot allocation for RBP. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java + graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java Changeset: b856446ff7e0 Author: Josef Eisl Date: 2014-10-23 14:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b856446ff7e0 Introduce StackSlotValue and VirtualStackSlot. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/StackSlot.java + graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/StackSlotValue.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ValueUtil.java + graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java ! graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java ! graal/com.oracle.graal.compiler.hsail/src/com/oracle/graal/compiler/hsail/HSAILLIRGenerator.java ! graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java ! graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/Interval.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/MoveResolver.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerationResult.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerationResult.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLockStack.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMonitorValue.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/BeginLockScopeNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64RestoreRegistersOp.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64SaveRegistersOp.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/SPARCMove.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCSaveRegistersOp.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java ! src/share/vm/graal/graalJavaAccess.hpp Changeset: b2b37b36a254 Author: Josef Eisl Date: 2014-10-23 17:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMap.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java Changeset: 9bf59aa9d8c6 Author: Josef Eisl Date: 2014-10-23 18:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9bf59aa9d8c6 Move allocateStackSlots logic from FrameMap to ForwardingFrameMapBuilder. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMap.java Changeset: 0826409daa24 Author: Josef Eisl Date: 2014-11-05 17:30 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0826409daa24 Use VirtualStackSlot for outObjectStackSlots in FrameMapBuilder.allocateStackSlots(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java Changeset: 79268cfc256a Author: Josef Eisl Date: 2014-11-05 19:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder). ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/StackSlot.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java < graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ForwardingFrameMapBuilder.java Changeset: 9c590632d079 Author: Josef Eisl Date: 2014-11-05 19:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9c590632d079 LIRVerifier: allow StackSlotValues for OperandFlag.STACK. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ValueUtil.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRVerifier.java Changeset: 84ac6a1a0dcb Author: Josef Eisl Date: 2014-11-05 20:16 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/84ac6a1a0dcb Introduce FrameMappingTool. ! graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerationResult.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java Changeset: 6b58802e45b2 Author: Josef Eisl Date: 2014-11-10 18:37 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6b58802e45b2 Revert Backend.frameMap(FrameMapBuilder) to Backend.frameMap(RegisterConfig). ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java Changeset: a0cd3a1e7d7d Author: Josef Eisl Date: 2014-11-10 18:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a0cd3a1e7d7d FrameMapFactory: create (empty) FrameMap eagerly. ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java Changeset: 06624c98ed8b Author: Josef Eisl Date: 2014-11-10 19:43 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/06624c98ed8b Handel RBP and deoptimization rescue slot in AMD64FrameMapBuilder. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.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/AMD64FrameMapBuilder.java Changeset: a84639853ea6 Author: Josef Eisl Date: 2014-11-11 14:12 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a84639853ea6 Add getId(), hashCode() toString() equals() to VirtualStackSlot. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java Changeset: 59e65d3aa2fc Author: Josef Eisl Date: 2014-11-11 14:15 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/59e65d3aa2fc Use StackSlotValue where appropriate. ! graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java ! graal/com.oracle.graal.compiler.hsail/src/com/oracle/graal/compiler/hsail/HSAILLIRGenerator.java ! graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java ! graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/Interval.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/OptimizingLinearScanWalker.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLockStack.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java ! graal/com.oracle.graal.lir.hsail/src/com/oracle/graal/lir/hsail/HSAILAddressValue.java ! graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXAddressValue.java Changeset: 7ce389a85277 Author: Josef Eisl Date: 2014-11-11 16:51 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7ce389a85277 Change VirtualStackSlot.toString(). ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java Changeset: de99ed0b18ca Author: Josef Eisl Date: 2014-11-11 16:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/de99ed0b18ca Interval: allow to change VirtualStackSlot to StackSlot. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/Interval.java Changeset: 180b55c6a189 Author: Josef Eisl Date: 2014-11-11 17:01 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/180b55c6a189 LinearScan: update VirtualStackSlot in intervals.spillSlot. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Changeset: 7aae90a0031c Author: Josef Eisl Date: 2014-11-11 17:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7aae90a0031c LIR: map all VirtualStackSlot operands to StackSlots. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java Changeset: d11ce424f09d Author: Josef Eisl Date: 2014-11-11 18:17 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d11ce424f09d Allow updating HotSpotMonitorValue.slot. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLIRFrameState.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMonitorValue.java Changeset: 758ecda76985 Author: Josef Eisl Date: 2014-11-17 16:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/758ecda76985 FrameMapBuilder: remove freeSpillSlot(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java Changeset: 1c92d437179b Author: Josef Eisl Date: 2014-11-17 16:41 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1c92d437179b FrameMapBuilder: move into package. ! graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.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/AMD64HotSpotLeaveCurrentStackFrameOp.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveUnpackFramesStackFrameOp.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerationResult.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerationResult.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotLockStack.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/AMD64FrameMapBuilder.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64SaveRegistersOp.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ZapRegistersOp.java ! graal/com.oracle.graal.lir.hsail/src/com/oracle/graal/lir/hsail/HSAILFrameMap.java ! graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXFrameMap.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/SPARCSaveRegistersOp.java - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMap.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRFrameState.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRVerifier.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/RedundantMoveElimination.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/StandardOp.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilderFactory.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java < graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.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/FrameMapBuilder.java < graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerationResult.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerationResultBase.java ! graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64OptimizedCallTargetInstrumentationFactory.java ! graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/OptimizedCallTargetInstrumentation.java Changeset: db9dd1265e61 Author: Josef Eisl Date: 2014-11-17 17:22 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/db9dd1265e61 AMD64HotSpotLIRGenerationResult does not need to be FrameMappable. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerationResult.java Changeset: 509dc57b0802 Author: Josef Eisl Date: 2014-11-17 16:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/509dc57b0802 FrameMapBuilder: outsource FrameMappable. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilder.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappable.java Changeset: 163d1a082ccc Author: Josef Eisl Date: 2014-11-17 17:39 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/163d1a082ccc FrameMapBuilder: outsource FrameMappingTool. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappable.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingTool.java Changeset: f933c2d7521b Author: Josef Eisl Date: 2014-11-17 18:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f933c2d7521b FrameBuilder: add FrameMappingToolImpl. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java Changeset: 645aa30b23a7 Author: Josef Eisl Date: 2014-11-17 18:56 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/645aa30b23a7 FrameMapBuilder: DelayedFrameMapBuilder use FrameMap.allocateStackSlots(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java Changeset: cdff1577017c Author: Josef Eisl Date: 2014-11-17 19:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/cdff1577017c FrameMapBuilder: use FrameMap.allocateSpillSlot(); ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMap.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java Changeset: 626c267521fe Author: Josef Eisl Date: 2014-11-17 19:22 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/626c267521fe FrameMapBuilder: Change visibility for TrackedVirtualStackSlot and subclasses. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java Changeset: 8538ef2ce729 Author: Josef Eisl Date: 2014-11-17 19:27 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8538ef2ce729 FrameMappingToolImpl: type switch for call to transform(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java Changeset: 94b184d89f11 Author: Josef Eisl Date: 2014-11-17 19:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/94b184d89f11 FrameMappingToolImpl: inline TrackedVirtualStackSlot.transform(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java Changeset: e3376d3e3160 Author: Josef Eisl Date: 2014-11-17 19:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e3376d3e3160 DelayedFrameMapBuilder: remove TrackedVirtualStackSlot.transform(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java Changeset: 5af19da6fae5 Author: Josef Eisl Date: 2014-11-17 19:34 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/5af19da6fae5 DelayedFrameMapBuilder: remove TrackedVirtualStackSlot. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java Changeset: ceacdac8b8b9 Author: Josef Eisl Date: 2014-11-17 19:36 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ceacdac8b8b9 DelayedFrameMapBuilder: outsource SimpleVirtualStackSlot and VirtualStackSlotRange. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java Changeset: c7fd88183eef Author: Josef Eisl Date: 2014-11-17 19:54 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c7fd88183eef FrameMappingToolImpl: store mapping internally. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java Changeset: 6c7efa29b626 Author: Josef Eisl Date: 2014-11-17 20:00 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6c7efa29b626 DelayedFrameMapBuilder: remove FrameMapFactory. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java Changeset: ff3f0bf30b2e Author: Josef Eisl Date: 2014-11-17 20:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ff3f0bf30b2e DelayedFrameMapBuilder: require non null register config. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java Changeset: 632e7c384aea Author: Josef Eisl Date: 2014-11-17 20:15 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/632e7c384aea Replace FrameMappingToolImpl by SimpleStackSlotAllocator. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleStackSlotAllocator.java Changeset: 318751159681 Author: Josef Eisl Date: 2014-11-17 20:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/318751159681 Introduce StackSlotAllocator interface. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleStackSlotAllocator.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/StackSlotAllocator.java Changeset: 3b89c08c75f7 Author: Josef Eisl Date: 2014-11-17 20:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3b89c08c75f7 Rename DelayedFrameMapBuilder to FrameMapBuilderImpl (again). ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleStackSlotAllocator.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/StackSlotAllocator.java Changeset: 3d0161947d57 Author: Josef Eisl Date: 2014-11-18 11:21 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3d0161947d57 Fix checkstyle issues. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerationResult.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappable.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingTool.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java Changeset: eeed42f7e38c Author: Josef Eisl Date: 2014-11-19 16:04 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/eeed42f7e38c Assert assumptions about the deoptimization rescue slot. ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMap.java Changeset: e6b6463c9c06 Author: Josef Eisl Date: 2014-11-19 16:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e6b6463c9c06 Merge (FrameMapBuilder). Changeset: f0a8b72315c1 Author: Andreas Woess Date: 2014-11-19 17:00 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f0a8b72315c1 Move ResolvedJavaField#read[Constant]Value and getMethodHandleAccess() to ConstantReflectionProvider ! CHANGELOG.md ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaField.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaField.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeVerificationPhase.java Changeset: 2d2fcdbae37b Author: Andreas Woess Date: 2014-11-19 17:11 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2d2fcdbae37b SL: fix javadoc of new() builtin ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/builtins/SLNewObjectBuiltin.java Changeset: 1d2e382d8259 Author: Gilles Duboscq Date: 2014-11-19 14:36 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1d2e382d8259 Add UncheckedInterfaceProvider interface for nodes that can give an unchecked hint about the interface type they are likely to return. Use it in MethodCallTargetNode to attempt single-implementor checkcast based devirtualization. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/Invoke.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.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/MethodCallTargetNode.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/UncheckedInterfaceProvider.java Changeset: 6014e40b07f8 Author: Josef Eisl Date: 2014-11-19 17:31 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6014e40b07f8 SPARC: fix deoptimization rescue slot handling. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerationResult.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerationResult.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.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/SPARCFrameMapBuilder.java From igor.veresov at oracle.com Thu Nov 20 22:55:42 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Thu, 20 Nov 2014 14:55:42 -0800 Subject: RFR: Extend substitution guards to receive Architecture Message-ID: - adds ability for substitution guards to have a constructor that has Architecture as an argument - added extra flags enum to AMD64 to drive code emission features (currently contains UseCountLeadingZerosInstruction and UseCountTrailingZerosInstruction) - moved lzcnt/tzcnt nodes and substitutions to com.oracle.graal.replacements.amd64 Webrev: http://cr.openjdk.java.net/~iveresov/subst-guard/webrev.00/ Thanks! igor From doug.simon at oracle.com Fri Nov 21 02:00:06 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 21 Nov 2014 02:00:06 +0000 Subject: hg: graal/graal: 7 new changesets Message-ID: <201411210200.sAL207aE004937@aojmv0008> Changeset: d68ab3959fec Author: Josef Eisl Date: 2014-11-20 10:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d68ab3959fec Remove static id from VirtualStackSlot. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java Changeset: eb2a8bb3c2c4 Author: Josef Eisl Date: 2014-11-20 10:42 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/eb2a8bb3c2c4 SimpleStackSlotAllocator: use an array instead of a HashMap. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleStackSlotAllocator.java Changeset: 7b60f8334af0 Author: Andreas Woess Date: 2014-11-19 17:45 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7b60f8334af0 Compare compressed flag in HotSpotObjectConstantImpl#equals and reference equality in HotSpotConstantReflectionProvider#constantEquals ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Changeset: de179c27cad3 Author: Andreas Woess Date: 2014-11-20 13:22 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/de179c27cad3 Add support for stable array constants ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Changeset: 54b0c8ab4668 Author: Andreas Woess Date: 2014-11-20 14:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/54b0c8ab4668 Refactor PartialEvaluatorCanonicalizer into custom ConstantReflectionProvider ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java + graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/StableArrayConstantNode.java Changeset: 42854d32b658 Author: Andreas Woess Date: 2014-11-20 14:15 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/42854d32b658 Remove CustomCanonicalizer ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Changeset: 96528e410fab Author: Andreas Woess Date: 2014-11-20 17:25 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/96528e410fab Backed out changeset 42854d32b658 ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java From doug.simon at oracle.com Sat Nov 22 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 22 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 9 new changesets Message-ID: <201411220200.sAM20Ckq000358@aojmv0008> Changeset: 2e2148013010 Author: Roland Schatz Date: 2014-11-19 16:52 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2e2148013010 Move nonNull and alwaysNull flags up to AbstractPointerStamp. ! 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/PointerStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowPointerStamp.java Changeset: 7b5106be0f18 Author: Roland Schatz Date: 2014-11-20 14:00 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7b5106be0f18 Use correct LIRKind in HSAIL metaspace pointer compression/uncompression op. ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java Changeset: 12dbd9a40718 Author: Roland Schatz Date: 2014-11-20 14:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/12dbd9a40718 Use floating node for casting between metaspace pointers and words. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Changeset: 16e61bb57e90 Author: Roland Schatz Date: 2014-11-20 14:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/16e61bb57e90 Introduce StampProvider to support different stamps for metadata on different VMs. ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProviders.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotStampProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringTool.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/StampProvider.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/tiers/HighTierContext.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/tiers/PhaseContext.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/Providers.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Changeset: 51c285938879 Author: Roland Schatz Date: 2014-11-20 14:57 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/51c285938879 Use StampProvider to create platform dependent stamps for LoadHub and LoadMethod nodes. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AssumptionInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/ExactInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/InlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Changeset: f91e40c4bb47 Author: Roland Schatz Date: 2014-11-20 15:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f91e40c4bb47 Create separate stamps for Klass* and Method*, and make them hotspot specific. ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/spi/LIRKindTool.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/ObjectStamp.java - graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/PointerStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.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/AMD64HotSpotNodeLIRBuilder.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILNewObjectSnippets.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.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/HotSpotStampProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/HotSpotLIRKindTool.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/MetaspacePointerStamp.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/MethodPointerStamp.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowPointerStamp.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/ClassGetHubNode.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/NewObjectSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/NewArrayStub.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/HotSpotWordTypeRewriterPhase.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/DefaultLIRKindTool.java Changeset: b8a622c3e99f Author: Roland Schatz Date: 2014-11-20 17:00 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b8a622c3e99f Move raw memory access operations to a separate interface. ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java + graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MemoryAccessProvider.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/ObjectStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/PrimitiveStamp.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/VoidStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProviderImpl.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/MethodPointerStamp.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/replacements/KlassLayoutHelperNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java Changeset: d7cc487d1325 Author: Roland Schatz Date: 2014-11-20 18:01 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d7cc487d1325 Move HotSpot specific functionality to new subinterface of ConstantReflectionProvider. ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MemoryAccessProvider.java - graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/PointerType.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/ObjectStamp.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProviderImpl.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/MethodPointerStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/NarrowOopStamp.java Changeset: e97e1f07a3d6 Author: Bernhard Urban Date: 2014-11-21 13:16 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e97e1f07a3d6 mx build: set initial heap size explicitly ! mxtool/mx.py From doug.simon at oracle.com Mon Nov 24 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Mon, 24 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 2 new changesets Message-ID: <201411240200.sAO208S6028045@aojmv0008> Changeset: e3c95cbbb50c Author: Michael Van De Vanter Date: 2014-11-23 16:07 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/e3c95cbbb50c Truffle Instrumentation: major API revision, based around the Probe and Instrument classes; add Instrumentable API for language implementors, with most details automated; reimplemented to handle AST splitting automatically; more JUnit tests. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/InstrumentationTest.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/nodes/NodeUtilTest.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/ExecutionContext.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultCallTarget.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultTruffleRuntime.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTNodeProber.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTProber.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ExecutionEvents.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrumentable.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/InstrumentationNode.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeListener.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeNode.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SourceCallback.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SourceListener.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/StandardSyntaxTag.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SyntaxTag.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SyntaxTagged.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/TruffleEventReceiver.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Wrapper.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultASTPrinter.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultEventReceiver.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/InstrumentationNode.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/LineLocationToProbeCollectionMap.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/LineLocationToSourceSectionCollectionMap.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/LineToProbesMap.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/LineToSourceSectionMap.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/ProbeManager.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/SimpleEventReceiver.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/LineLocation.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java ! graal/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/SLTestRunner.java ! graal/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/instrument/SLInstrumentTestRunner.java - graal/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/instrument/SLPrintAssigmentValueInstrument.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLMain.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/factory/SLContextFactory.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLExpressionNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLRootNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLStatementNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLASTPrinter.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLExpressionWrapper.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLExpressionWrapperNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLInstrumenter.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLStandardASTProber.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLStatementWrapper.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLStatementWrapperNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLContext.java Changeset: b9a8b2885283 Author: Michael Van De Vanter Date: 2014-11-23 16:09 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/b9a8b2885283 Truffle/Instrumentation: CHANGELOG for recent updates. ! CHANGELOG.md From duboscq at ssw.jku.at Mon Nov 24 14:40:57 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Mon, 24 Nov 2014 15:40:57 +0100 Subject: RFR: Extend substitution guards to receive Architecture In-Reply-To: References: Message-ID: Looks good. Thanks -Gilles On Thu, Nov 20, 2014 at 11:55 PM, Igor Veresov wrote: > - adds ability for substitution guards to have a constructor that has Architecture as an argument > - added extra flags enum to AMD64 to drive code emission features (currently contains UseCountLeadingZerosInstruction and UseCountTrailingZerosInstruction) > - moved lzcnt/tzcnt nodes and substitutions to com.oracle.graal.replacements.amd64 > > Webrev: http://cr.openjdk.java.net/~iveresov/subst-guard/webrev.00/ > > Thanks! > igor From doug.simon at oracle.com Mon Nov 24 15:08:23 2014 From: doug.simon at oracle.com (Doug Simon) Date: Mon, 24 Nov 2014 16:08:23 +0100 Subject: RFR: Extend substitution guards to receive Architecture In-Reply-To: References: Message-ID: <3E65E137-2403-433C-9E0F-ED2AFB7AFEA9@oracle.com> SubstitutionGuard.java: + *
  • Guard(Architecture) + *
  • Guard() (an implicit constructor is OK as well) We prefer to use {@code ...} instead of ... Otherwise, looks good to me. -Doug > On Nov 20, 2014, at 11:55 PM, Igor Veresov wrote: > > - adds ability for substitution guards to have a constructor that has Architecture as an argument > - added extra flags enum to AMD64 to drive code emission features (currently contains UseCountLeadingZerosInstruction and UseCountTrailingZerosInstruction) > - moved lzcnt/tzcnt nodes and substitutions to com.oracle.graal.replacements.amd64 > > Webrev: http://cr.openjdk.java.net/~iveresov/subst-guard/webrev.00/ > > Thanks! > igor From thomas.wuerthinger at oracle.com Mon Nov 24 15:20:49 2014 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Mon, 24 Nov 2014 16:20:49 +0100 Subject: RFR: Extend substitution guards to receive Architecture In-Reply-To: <3E65E137-2403-433C-9E0F-ED2AFB7AFEA9@oracle.com> References: <3E65E137-2403-433C-9E0F-ED2AFB7AFEA9@oracle.com> Message-ID: <4B65D15C-9EDA-48D8-89F3-011A9AC040A3@oracle.com> Looks good, thanks! Doug, can you integrate the change? - thomas On 24 Nov 2014, at 16:08, Doug Simon wrote: > SubstitutionGuard.java: > > + *
  • Guard(Architecture) > + *
  • Guard() (an implicit constructor is OK as well) > > We prefer to use {@code ...} instead of ... > > Otherwise, looks good to me. > > -Doug > > >> On Nov 20, 2014, at 11:55 PM, Igor Veresov wrote: >> >> - adds ability for substitution guards to have a constructor that has Architecture as an argument >> - added extra flags enum to AMD64 to drive code emission features (currently contains UseCountLeadingZerosInstruction and UseCountTrailingZerosInstruction) >> - moved lzcnt/tzcnt nodes and substitutions to com.oracle.graal.replacements.amd64 >> >> Webrev: http://cr.openjdk.java.net/~iveresov/subst-guard/webrev.00/ >> >> Thanks! >> igor > From igor.veresov at oracle.com Mon Nov 24 18:41:25 2014 From: igor.veresov at oracle.com (Igor Veresov) Date: Mon, 24 Nov 2014 10:41:25 -0800 Subject: RFR: Extend substitution guards to receive Architecture In-Reply-To: <3E65E137-2403-433C-9E0F-ED2AFB7AFEA9@oracle.com> References: <3E65E137-2403-433C-9E0F-ED2AFB7AFEA9@oracle.com> Message-ID: Gilles, Doug, Thomas, thanks a lot for the reviews! Here is the updated webrev with the markup fixed: http://cr.openjdk.java.net/~iveresov/subst-guard/webrev.01/ igor > On Nov 24, 2014, at 7:08 AM, Doug Simon wrote: > > SubstitutionGuard.java: > > + *
  • Guard(Architecture) > + *
  • Guard() (an implicit constructor is OK as well) > > We prefer to use {@code ...} instead of ... > > Otherwise, looks good to me. > > -Doug > > >> On Nov 20, 2014, at 11:55 PM, Igor Veresov wrote: >> >> - adds ability for substitution guards to have a constructor that has Architecture as an argument >> - added extra flags enum to AMD64 to drive code emission features (currently contains UseCountLeadingZerosInstruction and UseCountTrailingZerosInstruction) >> - moved lzcnt/tzcnt nodes and substitutions to com.oracle.graal.replacements.amd64 >> >> Webrev: http://cr.openjdk.java.net/~iveresov/subst-guard/webrev.00/ >> >> Thanks! >> igor > From doug.simon at oracle.com Mon Nov 24 21:52:49 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Mon, 24 Nov 2014 21:52:49 +0000 Subject: hg: graal/graal: 11 new changesets Message-ID: <201411242152.sAOLqn4u014354@aojmv0008> Changeset: 0f4813e0b4a9 Author: Roland Schatz Date: 2014-11-24 12:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0f4813e0b4a9 Use asConstant() instead of asJavaConstant() where possible. ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ConditionalEliminationTest.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/FlowSenReduTest.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/FlowSensitiveReductionTest.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/TypeSystemTest.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java ! graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.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/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java ! graal/com.oracle.graal.java.decompiler/src/com/oracle/graal/java/decompiler/lines/DecompilerSyntaxLine.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.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/DynamicNewInstanceNode.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/NewArrayNode.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/ConvertDeoptimizeToGuardPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IterativeConditionalEliminationPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.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/elem/InlineableGraph.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyUsageWithEquals.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Changeset: 1bac2ca1c2be Author: Doug Simon Date: 2014-11-24 13:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1bac2ca1c2be disabled additional pylint checks to workaround false positives ! mxtool/.pylintrc Changeset: 1a21e7ced544 Author: Roland Schatz Date: 2014-11-24 13:20 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1a21e7ced544 Add missing javadoc. ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/Stamp.java Changeset: ca81508f2a19 Author: Roland Schatz Date: 2014-11-24 13:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ca81508f2a19 Generalize NULL handling to work on arbitrary pointers. ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/ConstantTest.java ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestConstantReflectionProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaConstant.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NullConstant.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/ObjectStamp.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EscapeAnalysisTest.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.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/HotSpotCompressedNullConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.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/MetaspacePointerStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/MethodPointerStamp.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.lir.hsail/src/com/oracle/graal/lir/hsail/HSAILMove.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java ! graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java ! graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.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/PiNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.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/PointerEqualsNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.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/MethodCallTargetNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.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/GuardLoweringPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/CheckCastReduction.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/GuardingPiReduction.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Changeset: 8d9c1a018e77 Author: Roland Schatz Date: 2014-11-24 15:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8d9c1a018e77 Introduce isNull() method for metaspace pointers. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.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/NewObjectSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotOperation.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/KlassPointer.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/MetaspacePointer.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/MethodPointer.java Changeset: f39180e681b8 Author: Bernhard Urban Date: 2014-11-24 16:30 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f39180e681b8 ClassSubstitutions: macro for Class.isAssignable ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsAssignableFromNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.java Changeset: 11bc91bcc525 Author: Bernhard Urban Date: 2014-11-24 16:33 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/11bc91bcc525 ClassSubstitutions: use .isNull on klass pointer ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.java Changeset: 9e944c7eaded Author: Christian Humer Date: 2014-11-24 17:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9e944c7eaded Truffle-DSL: fixed bug in source ordering when compiling with JDT. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler/JDTCompiler.java Changeset: fe0db662e982 Author: Doug Simon Date: 2014-11-24 20:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fe0db662e982 adds ability for substitution guards to have a constructor with an Architecture argument added extra flags enum to AMD64 to drive code emission features (currently contains UseCountLeadingZerosInstruction and UseCountTrailingZerosInstruction) moved lzcnt/tzcnt nodes and substitutions to com.oracle.graal.replacements.amd64 Contributed-by: Igor Veresov ! graal/com.oracle.graal.amd64/src/com/oracle/graal/amd64/AMD64.java ! graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SubstitutionGuard.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CountLeadingZerosNode.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CountTrailingZerosNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotspotGuards.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/IntegerSubstitutions.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LongSubstitutions.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/AMD64Guards.java + graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64IntegerSubstitutions.java + graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64LongSubstitutions.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64Substitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! mx/suite.py Changeset: 59ffee3765ec Author: Tom Rodriguez Date: 2014-11-24 11:40 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/59ffee3765ec LoadHubNode should always use StampProvider stamp ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Changeset: 27d65fe58fef Author: Tom Rodriguez Date: 2014-11-24 11:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/27d65fe58fef Minor pointer stamp related fixes ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.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/replacements/KlassLayoutHelperNode.java From doug.simon at oracle.com Tue Nov 25 02:00:06 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 25 Nov 2014 02:00:06 +0000 Subject: hg: graal/graal: only register AMD64Substitutions if the target architecture is AMD64 Message-ID: <201411250200.sAP20679024046@aojmv0008> Changeset: a65cbe5432dd Author: Doug Simon Date: 2014-11-24 23:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a65cbe5432dd only register AMD64Substitutions if the target architecture is AMD64 ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64Substitutions.java From doug.simon at oracle.com Wed Nov 26 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 26 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 13 new changesets Message-ID: <201411260200.sAQ20928000139@aojmv0008> Changeset: bd74da0a76f3 Author: Doug Simon Date: 2014-11-25 13:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/bd74da0a76f3 implemented toString() for classes that throw UnsupportedError for hashCode() ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TargetDescription.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java Changeset: 5c5afd2c6bb3 Author: Roland Schatz Date: 2014-11-24 16:42 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/5c5afd2c6bb3 Add missing override in KlassPointerStamp. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/KlassPointerStamp.java Changeset: 9f06d9b2cc43 Author: Roland Schatz Date: 2014-11-25 13:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9f06d9b2cc43 Cache method pointer stamps. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/MethodPointerStamp.java Changeset: f38677340519 Author: Tom Rodriguez Date: 2014-11-25 08:17 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/f38677340519 Add memory operations to MetaspacePointer ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastDynamicSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.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/MonitorSnippets.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/TypeCheckSnippetUtils.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/HotSpotOperation.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/KlassPointer.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/MetaspacePointer.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Changeset: 290eb3f3d643 Author: Tom Rodriguez Date: 2014-11-25 12:24 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/290eb3f3d643 Fix stack overflow in printing ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectList.java Changeset: c2b23f6e4603 Author: Tom Rodriguez Date: 2014-11-25 12:25 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/c2b23f6e4603 Try to bind method after guarded interface invoke ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: 3356ea593672 Author: Andreas Woess Date: 2014-11-26 00:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3356ea593672 Add missing null check in readConstantArrayElement ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java Changeset: 97026ca2a86e Author: Andreas Woess Date: 2014-11-25 13:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/97026ca2a86e Truffle: allow @CompilationFinal on static fields ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java Changeset: c2b45b536677 Author: Andreas Woess Date: 2014-11-25 20:26 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c2b45b536677 Constant fold elements of switch table and enum values() arrays ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/GraalOptions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java Changeset: f56a5c4cd859 Author: Andreas Woess Date: 2014-11-25 20:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f56a5c4cd859 Treat String.value as implicit stable field ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java Changeset: 7bf2965140de Author: Andreas Woess Date: 2014-11-25 13:21 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7bf2965140de Truffle: Node#clone(): throw assertion error on CloneNotSupportedException ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java Changeset: cb4d5cc2b52b Author: Andreas Woess Date: 2014-11-25 13:21 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/cb4d5cc2b52b Truffle: clone ConditionProfile and BranchProfile node fields + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeCloneable.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/BranchProfile.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ConditionProfile.java Changeset: 62aac33db669 Author: Andreas Woess Date: 2014-11-26 01:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/62aac33db669 Truffle: refactor NodeCloneable interface to abstract class ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeCloneable.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/BranchProfile.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ConditionProfile.java From java at stefan-marr.de Wed Nov 26 14:19:43 2014 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 26 Nov 2014 15:19:43 +0100 Subject: Java 8 compatibility Message-ID: Hi: On a fresh Ubuntu, I noticed that it is not sufficient to have a Java 8 available to compile Graal. mx insists on having a Java 7 around. Is that strictly necessary? Thanks Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From christian.humer at gmail.com Wed Nov 26 15:54:02 2014 From: christian.humer at gmail.com (Christian Humer) Date: Wed, 26 Nov 2014 15:54:02 +0000 Subject: Java 8 compatibility References: Message-ID: Short answer yes. The Truffle API is still compatible to Java 7. And it has to remain compatible for some time to come because of JRuby. Cheers, Christian On Wed Nov 26 2014 at 15:50:53 Stefan Marr wrote: > Hi: > > On a fresh Ubuntu, I noticed that it is not sufficient to have a Java 8 > available to compile Graal. > > mx insists on having a Java 7 around. Is that strictly necessary? > > Thanks > Stefan > > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > > From java at stefan-marr.de Wed Nov 26 16:01:10 2014 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 26 Nov 2014 17:01:10 +0100 Subject: Java 8 compatibility In-Reply-To: References: Message-ID: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> Hi Christian: > On 26 Nov 2014, at 16:54, Christian Humer wrote: > > Short answer yes. The Truffle API is still compatible to Java 7. And it has to remain compatible for some time to come because of JRuby. Well, my understanding is that?s rather a ?no, it also works with Java 8?. I am not asking to change the minimum version that is supported, but currently, I have to change suite.py manually if I want to compile Graal without having to install Java 7 as well. Is there a way to ask mx to just interpret the check as >=1.7 instead ==1.7? Thanks Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From duboscq at ssw.jku.at Wed Nov 26 16:38:51 2014 From: duboscq at ssw.jku.at (Gilles Duboscq) Date: Wed, 26 Nov 2014 17:38:51 +0100 Subject: Java 8 compatibility In-Reply-To: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> Message-ID: Hello Stefan, the reason we do that is to ensure that Truffle is built against Java 7. This is required to make sure that the Truffle projects do not use any Java 8 API by mistake. So we really want ==1.7 and not >=1.7. Project *using* Truffle are >=1.7. -Gilles On Wed, Nov 26, 2014 at 5:01 PM, Stefan Marr wrote: > Hi Christian: > > >> On 26 Nov 2014, at 16:54, Christian Humer wrote: >> >> Short answer yes. The Truffle API is still compatible to Java 7. And it has to remain compatible for some time to come because of JRuby. > > Well, my understanding is that?s rather a ?no, it also works with Java 8?. > I am not asking to change the minimum version that is supported, but currently, I have to change suite.py manually if I want to compile Graal without having to install Java 7 as well. > > Is there a way to ask mx to just interpret the check as >=1.7 instead ==1.7? > > Thanks > Stefan > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > From doug.simon at oracle.com Thu Nov 27 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 27 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 52 new changesets Message-ID: <201411270200.sAR209A9022879@aojmv0008> Changeset: bcf66634c55c Author: Josef Eisl Date: 2014-11-25 15:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/bcf66634c55c Make LinearScan.callKillsRegisters final. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java Changeset: a21a4039ce7b Author: Josef Eisl Date: 2014-11-25 19:20 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a21a4039ce7b Add javadoc for StackSlotValue and VirtualStackSlot. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/StackSlotValue.java ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java Changeset: 7a3bba33f2b7 Author: Doug Simon Date: 2014-11-26 09:27 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7a3bba33f2b7 added support for binding arguments of arbitrary types to parameters of a SubstitutionGuard constructor used above support to remove static access to HotSpotGraalRuntime from CRC32Substitutions.Guard ! graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 8b87897f5b42 Author: Doug Simon Date: 2014-11-26 09:38 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8b87897f5b42 introduced HotSpotGraalRuntimeProvder interface ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILNewObjectSnippets.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntimeProvider.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/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.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/NewObjectSnippets.java Changeset: 91c479ed10f3 Author: Doug Simon Date: 2014-11-26 09:41 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/91c479ed10f3 converted use of HotSpotGraalRuntime to HotSpotGraalRuntimeProvider ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CRC32Substitutions.java Changeset: e846c9e2f0e5 Author: Doug Simon Date: 2014-11-26 09:50 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e846c9e2f0e5 added support for binding arguments of arbitrary types to parameters of a node intrinsic constructor (or factory method) ! graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Changeset: 5366863364e2 Author: Doug Simon Date: 2014-11-26 09:56 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/5366863364e2 removed static access to HotSpotGraalRuntime from ArrayCallCopyNode ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyCallNode.java Changeset: e888e28ac4bb Author: Doug Simon Date: 2014-11-26 09:59 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e888e28ac4bb removed static access to HotSpotGraalRuntime from ClassGetHubNode ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java Changeset: ef6076d83d17 Author: Doug Simon Date: 2014-11-26 10:00 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ef6076d83d17 removed static access to HotSpotGraalRuntime from HubGetClassNode ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java Changeset: 41208d675d3d Author: Doug Simon Date: 2014-11-26 10:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/41208d675d3d removed static access to HotSpotGraalRuntime from KlassLayoutHelperNode ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java Changeset: 2fa2460f99b3 Author: Doug Simon Date: 2014-11-26 10:26 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2fa2460f99b3 Merge. Changeset: 57880e95102e Author: Doug Simon Date: 2014-11-26 11:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/57880e95102e avoid initialization order issues when asserting array scale index invariants ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Changeset: 99e5d0a7600e Author: Gilles Duboscq Date: 2014-11-26 11:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/99e5d0a7600e Fix _trap_hist_limit after recent deoptimization reasons changes ! src/share/vm/oops/methodData.hpp Changeset: c538c2c6b7e2 Author: Doug Simon Date: 2014-11-26 11:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c538c2c6b7e2 changed most references to HotSpotGraalRuntime to use HotSpotGraalRuntimeProvider instead ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.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/AMD64HotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotCodeCacheProvider.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotForeignCallsProvider.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotCodeCacheProvider.java ! graal/com.oracle.graal.hotspot.server/src/com/oracle/graal/hotspot/server/CompilationServer.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.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/SPARCHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackend.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotHostBackend.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVmSymbols.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotDisassemblerProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.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/HotSpotMemoryAccessProviderImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSuitesProvider.java Changeset: be44c1ca8f00 Author: Doug Simon Date: 2014-11-26 12:05 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/be44c1ca8f00 removed static access to HotSpotGraalRuntime from some AMD64 HotSpot classes ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64DeoptimizationStub.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.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/AMD64HotSpotNodeLIRBuilder.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotPushInterpreterFrameOp.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotReturnOp.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotspotDirectVirtualCallOp.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64UncommonTrapStub.java Changeset: b31ae5af9fa3 Author: Doug Simon Date: 2014-11-26 12:51 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b31ae5af9fa3 Merge. Changeset: c240024b32b3 Author: Doug Simon Date: 2014-11-26 13:01 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c240024b32b3 fixed eclipseformat issues ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLoweringProvider.java Changeset: ab86fa952750 Author: Doug Simon Date: 2014-11-26 13:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ab86fa952750 removed static access to HotSpotGraalRuntime from some SPARC HotSpot classes ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.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/SPARCHotSpotReturnOp.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotspotDirectVirtualCallOp.java Changeset: 2906b3cc3e2f Author: Doug Simon Date: 2014-11-26 13:20 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2906b3cc3e2f moved application of Remote marker interface to implementation classes only ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ForeignCallsProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantPool.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ConstantReflectionProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/InvokeTarget.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaField.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaMethod.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaType.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MemoryAccessProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MethodHandleAccessProvider.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ProfilingInfo.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Signature.java ! graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkage.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotForeignCallLinkageImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntimeProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantReflectionProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProviderImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodHandleAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProfilingInfo.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.java Changeset: cdb9c605051a Author: Doug Simon Date: 2014-11-26 13:57 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/cdb9c605051a removed some static accesses to HotSpotGraalRuntime from some tests ! graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotCryptoSubstitutionTest.java + graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotGraalCompilerTest.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/MemoryUsageBenchmark.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/WriteBarrierAdditionTest.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/WriteBarrierVerificationTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSuitesProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java ! mx/suite.py Changeset: 8a2e6bc4384c Author: Doug Simon Date: 2014-11-26 14:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8a2e6bc4384c removed unused ResolvedJavaMethod.newInstance(...) ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaMethod.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Changeset: 25a21e1794ec Author: Doug Simon Date: 2014-11-26 17:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/25a21e1794ec modified SnippetReflectionProvider to support both VM-side and compiler-side constants in a compilation replay context ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestConstantReflectionProvider.java ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestMetaAccessProvider.java ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaField.java ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java ! graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/deopt/CompiledMethodTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Changeset: fa981f5bb53a Author: Lukas Stadler Date: 2014-11-23 12:58 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fa981f5bb53a reenable -XX:+GraalCountersExcludeCompiler option ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ProfileCompiledMethodsPhase.java ! src/share/vm/runtime/thread.cpp Changeset: 11f353f259ae Author: Lukas Stadler Date: 2014-11-26 11:10 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/11f353f259ae conditional elimination phase during partial evaluation ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: a2ec2beb3f08 Author: Doug Simon Date: 2014-11-26 17:33 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a2ec2beb3f08 removed unused ResolvedJavaType.newArray(...) ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Changeset: ee1b8eb230f7 Author: Doug Simon Date: 2014-11-26 17:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ee1b8eb230f7 made NamedLocationIdentity implement FormatWithToString ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java Changeset: 1b904c58f27f Author: Doug Simon Date: 2014-11-26 17:43 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1b904c58f27f removed static accesses to HotSpotGraalRuntime out of LocalImpl ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/LocalImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Changeset: 3b7dbb34bd9e Author: Doug Simon Date: 2014-11-26 17:44 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3b7dbb34bd9e replaced use of == with .equals() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledRuntimeStub.java Changeset: 1c4209b4c1be Author: Doug Simon Date: 2014-11-26 20:10 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1c4209b4c1be removed static accesses to HotSpotGraalRuntime from InstanceOfSnippets ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java Changeset: 064d2fae9821 Author: Doug Simon Date: 2014-11-26 20:12 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/064d2fae9821 removed some static accesses to HotSpotGraalRuntime from NewObjectSnippets ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Changeset: 21384a8fbb64 Author: Doug Simon Date: 2014-11-26 20:18 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/21384a8fbb64 removed static accesses to HotSpotGraalRuntime from some HotSpot meta API classes ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotConstantPool.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotForeignCallsProviderImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodUnresolved.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotUnresolvedJavaType.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java Changeset: 99bfecda9d2e Author: Doug Simon Date: 2014-11-26 20:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/99bfecda9d2e expose raw metaspace value via HotSpotMetaspaceConstant ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaspaceConstantImpl.java Changeset: 7bbc9fc1e7f9 Author: Doug Simon Date: 2014-11-26 20:38 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7bbc9fc1e7f9 removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Changeset: 0ec7e37451c7 Author: Doug Simon Date: 2014-11-26 20:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0ec7e37451c7 added HotSpotObjectConstant.getType() and restricted access to some static methods in HotSpotObjectConstantImpl ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Changeset: 17b5e453ab41 Author: Doug Simon Date: 2014-11-26 20:50 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/17b5e453ab41 replaced concrete types with interface types to support replay compilation ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java Changeset: b1a6992a0e42 Author: Doug Simon Date: 2014-11-26 20:53 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b1a6992a0e42 replaced concrete types with interface types to support replay compilation ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java Changeset: 5851c17b571e Author: Doug Simon Date: 2014-11-26 20:58 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/5851c17b571e removed usages of HotSPotGraalRuntime.unsafeReadWord() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java Changeset: 8f4945c8126a Author: Doug Simon Date: 2014-11-26 21:00 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8f4945c8126a Merge. Changeset: bbf27a6ffb52 Author: Lukas Stadler Date: 2014-11-26 11:51 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/bbf27a6ffb52 add graph to context in TruffleCacheImpl.cacheLookup ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java Changeset: 3fb1231699de Author: Lukas Stadler Date: 2014-11-26 12:36 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/3fb1231699de SelfReplacingMethodCallTargetNode does not subclass MethodCallTargetNode ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Changeset: 99c57f4c3fa3 Author: Doug Simon Date: 2014-11-26 22:24 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/99c57f4c3fa3 added HotSpotNMethod.asConstant() ! graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotNmethod.java Changeset: c716b8bc402f Author: Doug Simon Date: 2014-11-26 22:31 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c716b8bc402f (no commit message)replaced concrete types with interface types to support replay compilation ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotResolvedJavaFieldTest.java Changeset: 99ee1fa4d446 Author: Doug Simon Date: 2014-11-26 22:32 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/99ee1fa4d446 removed leftover comment ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Changeset: 3bd34b42c8c3 Author: Doug Simon Date: 2014-11-26 22:33 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3bd34b42c8c3 removed out-of-date comment ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Changeset: 2b8e460c4935 Author: Doug Simon Date: 2014-11-26 22:36 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2b8e460c4935 made HotSpotObjectConstantImpl.forObject() package-private ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Changeset: 80a6b4a23418 Author: Doug Simon Date: 2014-11-26 22:39 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/80a6b4a23418 removed a usage of HotSPotGraalRuntime.unsafeReadWord() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Changeset: 7484f5fcd41d Author: Doug Simon Date: 2014-11-26 22:58 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7484f5fcd41d removed a usages of HotSpotGraalRuntime.unsafeReadWord(); tidied up some comments ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java Changeset: a2ee2e329af8 Author: Doug Simon Date: 2014-11-26 23:02 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a2ee2e329af8 removed HotSpotGraalRuntime.unsafeReadWord() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Changeset: 1019a5d7c065 Author: Doug Simon Date: 2014-11-26 23:05 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/1019a5d7c065 widened return type of HotSpotResolvedJavaType.fromClass(Class) ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Changeset: 84bef219afc7 Author: Doug Simon Date: 2014-11-26 23:11 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/84bef219afc7 speed up replay compilation testing by re-using object pool across replay contexts ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Handler.java Changeset: 4f27e4a4b4c5 Author: Doug Simon Date: 2014-11-26 23:24 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4f27e4a4b4c5 added check that HotSpotGraalRuntimeProvider is accessed correctly within the scope of a replay compilation ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/remote/Context.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Changeset: e43065342bab Author: Doug Simon Date: 2014-11-26 23:25 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e43065342bab Merge. From doug.simon at oracle.com Fri Nov 28 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 28 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: 6 new changesets Message-ID: <201411280200.sAS207NT009177@aojmv0008> Changeset: 22217b2353b1 Author: Gilles Duboscq Date: 2014-11-26 11:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/22217b2353b1 HotSpotSignature does not need to resolve types ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSignature.java Changeset: b17e125f772f Author: Gilles Duboscq Date: 2014-11-27 16:25 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b17e125f772f Invoke.uncheckedStamp: return type of invoke is already available on MethodCallTargetNode ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/Invoke.java Changeset: b650870fe2fe Author: Gilles Duboscq Date: 2014-11-27 16:27 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b650870fe2fe Backed out changeset: 3fb1231699de ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Changeset: fb558b41d348 Author: Roland Schatz Date: 2014-11-27 16:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fb558b41d348 Propagate framestate when simplifying DynamicNewArray to NewArray. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Changeset: c91f49e8d5ac Author: Josef Eisl Date: 2014-11-26 19:12 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c91f49e8d5ac Introduce BackendTest. ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java + graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/BackendTest.java Changeset: 88a0c46687d9 Author: Josef Eisl Date: 2014-11-26 19:27 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/88a0c46687d9 Rename AllocatorTest.test to testAllocation to avoid confusion with GraalCompilerTest.test. ! graal/com.oracle.graal.compiler.amd64.test/src/com/oracle/graal/compiler/amd64/test/AMD64AllocatorTest.java ! graal/com.oracle.graal.compiler.sparc.test/src/com/oracle/graal/compiler/sparc/test/SPARCAllocatorTest.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java From doug.simon at oracle.com Sun Nov 30 02:00:07 2014 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sun, 30 Nov 2014 02:00:07 +0000 Subject: hg: graal/graal: Truffle: turn milliseconds in nanoseconds for the time threshold after options have been considered. Message-ID: <201411300200.sAU207dh001704@aojmv0008> Changeset: a65c1032f400 Author: Chris Seaton Date: 2014-11-29 06:35 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/a65c1032f400 Truffle: turn milliseconds in nanoseconds for the time threshold after options have been considered. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CounterAndTimeBasedCompilationPolicy.java