From doug.simon at oracle.com Wed Apr 1 01:00:08 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 01 Apr 2015 01:00:08 +0000 Subject: hg: graal/graal: 6 new changesets Message-ID: <201504010100.t31108vH015476@aojmv0008> Changeset: 5d069d341b7d Author: Roland Schatz Date: 2015-03-31 11:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5d069d341b7d Assert that lastLocationAccess is never null in FloatingReadPhase. ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Changeset: de3b84bf239b Author: Roland Schatz Date: 2015-03-31 11:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/de3b84bf239b Assert that lastLocationAccess is non-null for reads of mutable locations. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Changeset: 1505cfecbeed Author: Doug Simon Date: 2015-03-31 14:11 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1505cfecbeed allow satisfied compile time assertions to survive until LIR lowering ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Changeset: 178814b064a7 Author: Doug Simon Date: 2015-03-31 14:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/178814b064a7 moved use of GraphUtil.originalValue API into InvocationPlugins to avoid its overhead during canonicalization ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.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/ClassQueryNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java Changeset: 6e5df2d60fbd Author: Gilles Duboscq Date: 2015-03-31 14:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6e5df2d60fbd mx: fix compliance check for EXTRA_JAVA_HOMES, add maximum JAVA_HOME version in mx_graal ! mx/mx_graal.py ! mxtool/mx.py Changeset: 7815c4d4a07f Author: Doug Simon Date: 2015-03-31 15:15 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7815c4d4a07f removed/replaced references to non replay-serializable objects from replay-serializable objects ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java From renzetorensma at gmail.com Wed Apr 1 13:32:44 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Wed, 1 Apr 2015 15:32:44 +0200 Subject: Type hierarchy Message-ID: <5CB38E6E-DA36-4F76-B01E-76F9B9FF0880@gmail.com> Hi, Do you have any tips about dealing with a type hierarchy that has one superclass for all types? For example a Value superclass with Boolean, String, Int, List and Date subclasses. That way I can?t use the java primitives for boolean and int so I lose out on those performance gains I think.. Renze From chris.seaton at oracle.com Wed Apr 1 13:59:55 2015 From: chris.seaton at oracle.com (Chris Seaton) Date: Wed, 1 Apr 2015 14:59:55 +0100 Subject: Type hierarchy In-Reply-To: <5CB38E6E-DA36-4F76-B01E-76F9B9FF0880@gmail.com> References: <5CB38E6E-DA36-4F76-B01E-76F9B9FF0880@gmail.com> Message-ID: <3BF9C370-737D-4DE0-9B5A-050C21C47C82@oracle.com> Hello Renze, In the past when people have developed JVM languages like Jython and JRuby they have recreated the guest language?s class hierarchy in Java. So in JRuby, there is a RubyBasicObject, a RubyObject and a RubyFixnum. These Java classes have methods that correspond to the Ruby methods in the same classes. I would not recommend doing this for a Truffle language. I think instead you want to increase the level of abstraction slightly and think more about writing a Java program that represents the guest language object model, rather than recreating it in Java. In the Truffle implementation of Ruby, we use int and long for Fixnum, even though they logically extend Object and BasicObject, and there is no RubyFixnum class at all. We then add special cases for all operations that examine the class of an object to return that Fixnum is the class for an int or long - we abstract the inheritance and express it in Java code, rather than expressing it using the Java object model. To take it one stage further you can use a Truffle DyanmicObject to represent your guest language objects. Combining all of this - not using the Java class hierarchy, not writing methods in your guest language classes, and then using DyanmicObject instead, in the end you?ll find you don?t have any need for classes like RubyObject at all (we still have them in JRuby+Truffle but they?re going away soon). Is that helpful? Or do you have more specific reasons why you want the inheritance which make this not practical? Regards, Chris > On 1 Apr 2015, at 14:32, Renze Torensma wrote: > > Hi, > > Do you have any tips about dealing with a type hierarchy that has one superclass for all types? For example a Value superclass with Boolean, String, Int, List and Date subclasses. That way I can?t use the java primitives for boolean and int so I lose out on those performance gains I think.. > > Renze From doug.simon at oracle.com Thu Apr 2 01:00:09 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 02 Apr 2015 01:00:09 +0000 Subject: hg: graal/graal: 22 new changesets Message-ID: <201504020100.t32109T6006122@aojmv0008> Changeset: d7c48ee7ed4b Author: Michael Van De Vanter Date: 2015-03-31 18:56 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d7c48ee7ed4b Truffle/Instrumentation: field renaming in ProbeNode ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeNode.java Changeset: e73096245a4c Author: Michael Van De Vanter Date: 2015-03-31 18:58 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e73096245a4c Truffle/Instrumentation: the Instrument code now has access to Probe.invalidateProbeUnchanged, needed for attaching AST instrumentation. ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java Changeset: 2e3cc2a27711 Author: Michael Van De Vanter Date: 2015-03-31 19:01 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2e3cc2a27711 Truffle/Instrumentation: a new flavor of Instrument that lazily provides an AST fragment to be attached/adopted directly into a running AST, and to which execution event notifications will be routed. Important use cases so far include conditional breakpoints (with optimizeable conditions) and Ruby set_trace_func. ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/InstrumentationPartialEvaluationTest.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTest.java + graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestNodes.java + graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/ToolNodeInstrumentationTest.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/tools/TestNodes.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/ToolNode.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ToolNodeInstrumentListener.java Changeset: 2c65cac3d940 Author: Michael Van De Vanter Date: 2015-03-31 19:15 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2c65cac3d940 Merge with 7815c4d4a07f92d10d27a180f32e0dbc8ca15d44 - graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java - graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleReplacements.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCache.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleReplacements.java - graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java - src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/cfg.filter - src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/edgeColor.filter - src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/noframestate.filter - src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/slots.filter Changeset: 36fdc4af85d5 Author: Josef Eisl Date: 2015-04-01 11:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/36fdc4af85d5 LinearScan: add more detailed timers. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScan.java Changeset: 30d6b0cd1394 Author: Josef Eisl Date: 2015-04-01 13:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/30d6b0cd1394 MoveProfiling: rename LIROptMoveProfiling option to LIRProfileMoves. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/PostAllocationOptimizationStage.java Changeset: 51f2e71b57aa Author: Thomas Wuerthinger Date: 2015-04-01 16:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/51f2e71b57aa Improvements to the Stamp infrastructure. New methods Stamp#improveWith, Stamp#tryImproveWith, Stamp#isIllegal. ! 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/ArithmeticStamp.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/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/nodes/type/MetaspacePointerStamp.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Changeset: 45d46b136777 Author: Thomas Wuerthinger Date: 2015-04-01 16:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/45d46b136777 Merge. Changeset: 02a9b5d77964 Author: Doug Simon Date: 2015-04-01 13:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/02a9b5d77964 improved fsckprojects to take into account hg tracked files ! mxtool/mx.py Changeset: 92f5fdad19e3 Author: Doug Simon Date: 2015-04-01 13:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/92f5fdad19e3 removed unused BailoutNode - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java Changeset: 3f159221fe36 Author: Doug Simon Date: 2015-04-01 13:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3f159221fe36 removed unused MacroNode constructor ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Changeset: 67507ee4e8d6 Author: Doug Simon Date: 2015-04-01 13:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/67507ee4e8d6 don't allow non-recursive, non-intrinsified invokes in intrinsics or snippets ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 674a81af7992 Author: Doug Simon Date: 2015-04-01 13:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/674a81af7992 removed IntrinsificationsEnabled and IntrinsificationsDisabled options ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 20d39cfa8f1b Author: Doug Simon Date: 2015-04-01 15:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/20d39cfa8f1b improved error message for use of a macro node within a snippet that tries to lower itself to an invoke ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Changeset: 3d3e16f6077a Author: Doug Simon Date: 2015-04-01 15:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3d3e16f6077a Merge. Changeset: 1b9841bb304d Author: Doug Simon Date: 2015-04-01 16:11 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1b9841bb304d fixed pylint issues ! mxtool/mx.py Changeset: bba2b55908a1 Author: Doug Simon Date: 2015-04-01 17:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bba2b55908a1 fixed canonicalizeprojects issue ! mx/suite.py Changeset: 5f533a5c2aaf Author: Doug Simon Date: 2015-04-01 17:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5f533a5c2aaf Merge. Changeset: b9f65c441427 Author: Doug Simon Date: 2015-04-01 17:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b9f65c441427 allow lowering of UnsafeLoadNode while guards are still floating ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Changeset: 81d08c81b2a7 Author: Thomas Wuerthinger Date: 2015-04-01 17:43 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/81d08c81b2a7 Introduce TypeCheckNode. ! 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 + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeCheckNode.java Changeset: a9c8df485789 Author: Thomas Wuerthinger Date: 2015-04-01 19:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a9c8df485789 Fixes after introducing TypeCheckNode. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeCheckNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java Changeset: 374b48caeb9c Author: Thomas Wuerthinger Date: 2015-04-01 19:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/374b48caeb9c Merge. - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java From renzetorensma at gmail.com Thu Apr 2 13:01:00 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Thu, 2 Apr 2015 15:01:00 +0200 Subject: Type hierarchy In-Reply-To: <3BF9C370-737D-4DE0-9B5A-050C21C47C82@oracle.com> References: <5CB38E6E-DA36-4F76-B01E-76F9B9FF0880@gmail.com> <3BF9C370-737D-4DE0-9B5A-050C21C47C82@oracle.com> Message-ID: <23A66D35-9ED6-4F27-8F31-4C17FE0F4DCA@gmail.com> Hi Chris, Thanks for your answer! I asked this because I have an existing code base for a language and I want to use Truffle to speed it up. Comparable to JRuby I think, but it?s just a research project so not used in production. And if I want to use Java primitives I have to change a lot of code, because the Value superclass is used all over the code base. I?m going to think about it a bit more and hopefully come up with a good solution :) Renze > On 1 apr. 2015, at 15:59, Chris Seaton wrote: > > Hello Renze, > > In the past when people have developed JVM languages like Jython and JRuby they have recreated the guest language?s class hierarchy in Java. So in JRuby, there is a RubyBasicObject, a RubyObject and a RubyFixnum. These Java classes have methods that correspond to the Ruby methods in the same classes. > > I would not recommend doing this for a Truffle language. I think instead you want to increase the level of abstraction slightly and think more about writing a Java program that represents the guest language object model, rather than recreating it in Java. > > In the Truffle implementation of Ruby, we use int and long for Fixnum, even though they logically extend Object and BasicObject, and there is no RubyFixnum class at all. We then add special cases for all operations that examine the class of an object to return that Fixnum is the class for an int or long - we abstract the inheritance and express it in Java code, rather than expressing it using the Java object model. > > To take it one stage further you can use a Truffle DyanmicObject to represent your guest language objects. > > Combining all of this - not using the Java class hierarchy, not writing methods in your guest language classes, and then using DyanmicObject instead, in the end you?ll find you don?t have any need for classes like RubyObject at all (we still have them in JRuby+Truffle but they?re going away soon). > > Is that helpful? Or do you have more specific reasons why you want the inheritance which make this not practical? > > Regards, > > Chris > >> On 1 Apr 2015, at 14:32, Renze Torensma wrote: >> >> Hi, >> >> Do you have any tips about dealing with a type hierarchy that has one superclass for all types? For example a Value superclass with Boolean, String, Int, List and Date subclasses. That way I can?t use the java primitives for boolean and int so I lose out on those performance gains I think.. >> >> Renze > From chris.seaton at oracle.com Thu Apr 2 13:10:23 2015 From: chris.seaton at oracle.com (Chris Seaton) Date: Thu, 2 Apr 2015 14:10:23 +0100 Subject: Type hierarchy In-Reply-To: <23A66D35-9ED6-4F27-8F31-4C17FE0F4DCA@gmail.com> References: <5CB38E6E-DA36-4F76-B01E-76F9B9FF0880@gmail.com> <3BF9C370-737D-4DE0-9B5A-050C21C47C82@oracle.com> <23A66D35-9ED6-4F27-8F31-4C17FE0F4DCA@gmail.com> Message-ID: We?ve learned a lot through integrating Truffle into JRuby - it?s such a large mature code base, with many real users, and the Ruby language itself is also very large. We had exactly the same problem as you - IRubyObject is used everywhere in JRuby. I hope to be at the Truffle Workshop at ECOOP this year http://2015.ecoop.org/track/Truffle-2015-papers where I can say a lot more about the challenges and opportunities of integrating Truffle into an existing language. If you?re trying to do the same we?d love to have you there - there is the potential for financial assistance for people to attend and you can present your plans as a starting point for discussion. In the mean time you can contact me on Skype chrisgrahamseaton or on #jruby IRC if you want some more info about our experience. Chris > On 2 Apr 2015, at 14:01, Renze Torensma wrote: > > Hi Chris, > > Thanks for your answer! I asked this because I have an existing code base for a language and I want to use Truffle to speed it up. Comparable to JRuby I think, but it?s just a research project so not used in production. And if I want to use Java primitives I have to change a lot of code, because the Value superclass is used all over the code base. > > I?m going to think about it a bit more and hopefully come up with a good solution :) > > Renze > >> On 1 apr. 2015, at 15:59, Chris Seaton wrote: >> >> Hello Renze, >> >> In the past when people have developed JVM languages like Jython and JRuby they have recreated the guest language?s class hierarchy in Java. So in JRuby, there is a RubyBasicObject, a RubyObject and a RubyFixnum. These Java classes have methods that correspond to the Ruby methods in the same classes. >> >> I would not recommend doing this for a Truffle language. I think instead you want to increase the level of abstraction slightly and think more about writing a Java program that represents the guest language object model, rather than recreating it in Java. >> >> In the Truffle implementation of Ruby, we use int and long for Fixnum, even though they logically extend Object and BasicObject, and there is no RubyFixnum class at all. We then add special cases for all operations that examine the class of an object to return that Fixnum is the class for an int or long - we abstract the inheritance and express it in Java code, rather than expressing it using the Java object model. >> >> To take it one stage further you can use a Truffle DyanmicObject to represent your guest language objects. >> >> Combining all of this - not using the Java class hierarchy, not writing methods in your guest language classes, and then using DyanmicObject instead, in the end you?ll find you don?t have any need for classes like RubyObject at all (we still have them in JRuby+Truffle but they?re going away soon). >> >> Is that helpful? Or do you have more specific reasons why you want the inheritance which make this not practical? >> >> Regards, >> >> Chris >> >>> On 1 Apr 2015, at 14:32, Renze Torensma wrote: >>> >>> Hi, >>> >>> Do you have any tips about dealing with a type hierarchy that has one superclass for all types? For example a Value superclass with Boolean, String, Int, List and Date subclasses. That way I can?t use the java primitives for boolean and int so I lose out on those performance gains I think.. >>> >>> Renze >> > From doug.simon at oracle.com Fri Apr 3 01:00:08 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 03 Apr 2015 01:00:08 +0000 Subject: hg: graal/graal: 25 new changesets Message-ID: <201504030100.t3310Eon001211@aojmv0008> Changeset: bb575368ea01 Author: Josef Eisl Date: 2015-04-02 11:18 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bb575368ea01 BenchmarkCounters: add DynamicCountersHumanReadable option and computer readable dumper (non-default). ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Changeset: 6fa45d1d8c70 Author: Lukas Stadler Date: 2015-04-02 14:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6fa45d1d8c70 handle unsafe load and store during PEA read elimination ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EarlyReadEliminationTest.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PEAReadEliminationTest.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java Changeset: 7ad60a16bbb0 Author: Lukas Stadler Date: 2015-04-02 14:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7ad60a16bbb0 better virtualization of BasicArrayCopyNode ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java Changeset: 5b7db8941fd7 Author: Christian Humer Date: 2015-04-02 01:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5b7db8941fd7 Truffle: make NodeClass and NodeField a top-level class. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceCompilationASTListener.java ! graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/SpecializationNode.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeFailure.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/nodes/GraphPrintVisitor.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeClass.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeFieldAccessor.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/serial/PostOrderDeserializer.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLASTPrinter.java Changeset: 8dc73c226c63 Author: Christian Humer Date: 2015-04-02 01:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8dc73c226c63 Truffle: cache NodeClass lookup in Node. ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/builtins/SLDisableSplittingBuiltin.java ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/builtins/SLGetOptionBuiltin.java ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/builtins/SLGraalRuntimeBuiltin.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceCompilationASTListener.java ! graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/SpecializationNode.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/nodes/GraphPrintVisitor.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/NodeClass.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeFieldAccessor.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/serial/PostOrderDeserializer.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLASTPrinter.java Changeset: 4b12d5355811 Author: Christian Humer Date: 2015-04-02 01:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4b12d5355811 Truffle: do not use iterators for visitors. ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Changeset: b91ba8932cb6 Author: Christian Humer Date: 2015-04-02 16:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b91ba8932cb6 Truffle: use visitor for getCallNodes. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Changeset: d7d33c72fdc8 Author: Christian Humer Date: 2015-04-02 16:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d7d33c72fdc8 Truffle: cache threshold in constant to speed up defer compilation check. ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CompilationProfile.java Changeset: 9dcf9f8779c2 Author: Doug Simon Date: 2015-04-02 10:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9dcf9f8779c2 fix for replay compilation support ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java Changeset: 987b4c42aef9 Author: Doug Simon Date: 2015-04-02 11:45 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/987b4c42aef9 add GetClassNode and use it in a non-HotSpot specific InvocationPlugin for Object.getClass() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/GetClassNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: 1efae42be4f4 Author: Doug Simon Date: 2015-04-02 12:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1efae42be4f4 canonicalize 'o.getClass() == A.class' to a TypeCheckNode ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeCheckNode.java Changeset: 393ccd88c317 Author: Doug Simon Date: 2015-04-02 12:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/393ccd88c317 Merge. Changeset: 749ec6114ea0 Author: Doug Simon Date: 2015-04-02 12:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/749ec6114ea0 fix canonicalization of ObjectEqualsNode to TypeCheckNode ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Changeset: 7de9e37f368d Author: Doug Simon Date: 2015-04-02 14:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7de9e37f368d handle new nodes when gathering unscheduled usages of a node about to be lowered ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Changeset: bf4526ed41bd Author: Doug Simon Date: 2015-04-02 16:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bf4526ed41bd fix canonicalization of ObjectEqualsNode to TypeCheckNode (again) ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Changeset: 6fbf1c53feeb Author: Doug Simon Date: 2015-04-02 16:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6fbf1c53feeb Merge. Changeset: 6d51420ee69f Author: Doug Simon Date: 2015-04-02 16:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6d51420ee69f use .equals() instead of '==' ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Changeset: 3424e06e4951 Author: Doug Simon Date: 2015-04-02 16:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3424e06e4951 Merge. Changeset: 921eeb012866 Author: Roland Schatz Date: 2015-04-02 17:32 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/921eeb012866 Don't drop entry framestate in inline graph if it has more usages than just the start node. ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java Changeset: 80fda5775d0c Author: Doug Simon Date: 2015-04-02 19:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/80fda5775d0c folding a TypeCheckNode can only be done if the stamp of the input object denotes an exact type ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeCheckNode.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/InstanceOfTest.java Changeset: a927a3ccfd0d Author: Doug Simon Date: 2015-04-02 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a927a3ccfd0d fix canonicalization of ObjectEqualsNode to TypeCheckNode after fixing TypeCheckNode canonicalization ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Changeset: 46bb6e576335 Author: Doug Simon Date: 2015-04-02 19:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/46bb6e576335 fix unguarded reads resulting from lowering UnsafeLoadNode ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Changeset: 6f669b9be43c Author: Doug Simon Date: 2015-04-02 19:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6f669b9be43c lower JavaReadNode to a ReadNode that will never float ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/WordOperationPlugin.java Changeset: b1a8928fc4b9 Author: Stefan Anzinger Date: 2015-04-02 18:45 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b1a8928fc4b9 [SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver ! graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/MoveResolver.java ! graal/com.oracle.graal.sparc/src/com/oracle/graal/sparc/SPARC.java Changeset: 7bf5292dd7ad Author: Stefan Anzinger Date: 2015-04-02 21:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7bf5292dd7ad Merge From huohuohuomumu at gmail.com Fri Apr 3 02:37:53 2015 From: huohuohuomumu at gmail.com (Yanlin Wang) Date: Fri, 3 Apr 2015 10:37:53 +0800 Subject: build older version graal error Message-ID: Hi,? I?m compiling graal against an older changeset and got some errors. Could you help me fix this? Thanks! ? I?m using?OS X 10.9.5 (13F1066),?Kernel Version:?Darwin 13.4.0 In my local graal directory, I ran:? hg update -r 3a59e1411192 mx build But got these errors:? cd bsd_amd64_compiler2/product && /Applications/Xcode.app/Contents/Developer/usr/bin/make ?" LP64=1 " Rescanned ../generated/adfiles/bsd_x86_64.ad ?but encountered no changes. make[4]: Nothing to be done for `all'. make[4]: Nothing to be done for `all'. if [ -d /Users/yanlinwang/graal/agent -a "x86" != "ia64" \ ? ? ? ? ? ? ?-a "x86" != "arm" \ ? ? ? ? ? ? ?-a "x86" != "ppc" \ ? ? ? ? ? ? ?-a "x86" != "zero" ] ; then \ ? /Applications/Xcode.app/Contents/Developer/usr/bin/make -f sa.make /Users/yanlinwang/graal/build/bsd/bsd_amd64_compiler2/product/../generated/sa-jdi.jar; \ fi make[5]: `/Users/yanlinwang/graal/build/bsd/bsd_amd64_compiler2/product/../generated/sa-jdi.jar' is up to date. echo "dtrace headers generated" dtrace headers generated make[4]: `precompiled.hpp.pch' is up to date. Linking vm... Undefined symbols for architecture x86_64: ? "_GPUOffload", referenced from: ? ? ? VMStructs::initHotSpotVMConfig(oopDesc*) in vmStructs.o ? "_TraceGPUInteraction", referenced from: ? ? ? Gpu::initialized_gpu(Gpu*) in gpu.o ? ? ? Gpu::probe_gpus(JNIEnv_*) in gpu_bsd.o ? ? ? Hsail::initialize(JNIEnv_*, _jclass*) in gpu_hsail.o ? ? ? Hsail::generate_kernel(JNIEnv_*, _jclass*, _jbyteArray*, _jstring*) in gpu_hsail.o ? ? ? Hsail::execute_kernel_void_1d_internal(unsigned char*, int, _jobject*, methodHandle&, nmethod*, int, int, _jobject*, Thread*) in gpu_hsail.o ? ? ? Hsail::register_natives(JNIEnv_*) in gpu_hsail.o ? ? ? Hsail::HSAILDeoptimizationInfo::oops_do(OopClosure*) in gpu_hsail.o ? ? ? ... ? "_UseHSAILDeoptimization", referenced from: ? ? ? Hsail::execute_kernel_void_1d_internal(unsigned char*, int, _jobject*, methodHandle&, nmethod*, int, int, _jobject*, Thread*) in gpu_hsail.o ? ? ? HSAILKernelArguments::pushTrailingArgs() in hsailKernelArguments.o ? ? ? VMStructs::initHotSpotVMConfig(oopDesc*) in vmStructs.o ? "_UseHSAILSafepoints", referenced from: ? ? ? SafepointSynchronize::begin() in safepoint.o ? ? ? SafepointSynchronize::end() in safepoint.o ? ? ? VMStructs::initHotSpotVMConfig(oopDesc*) in vmStructs.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) dsymutil libjvm.dylib error: unable to open executable 'libjvm.dylib' make[4]: *** [libjvm.dylib] Error 1 make[3]: *** [the_vm] Error 2 make[2]: *** [product] Error 2 make[1]: *** [generic_build2] Error 2 make: *** [product] Error 2 Regards, Yanlin Wang From doug.simon at oracle.com Fri Apr 3 16:21:35 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 03 Apr 2015 16:21:35 +0000 Subject: hg: graal/graal: 11 new changesets Message-ID: <201504031621.t33GLa77007158@aojmv0008> Changeset: bdd5ad8ce088 Author: Tom Rodriguez Date: 2015-04-02 17:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/bdd5ad8ce088 DebugTimers should be static final when possible ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScan.java Changeset: cfd1c99206b9 Author: Doug Simon Date: 2015-04-03 10:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/cfd1c99206b9 replace non-ASCII characters with unicode encoding ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java Changeset: 96acaee06302 Author: Doug Simon Date: 2015-04-03 10:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/96acaee06302 added Checkstyle rule to prevent non-ASCII characters in Java source files ! graal/com.oracle.graal.graph/.checkstyle_checks.xml ! graal/com.oracle.truffle.api/.checkstyle_checks.xml Changeset: 5b2fd4cd7b8f Author: Lukas Stadler Date: 2015-04-02 14:33 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5b2fd4cd7b8f LoadFieldNode and StoreFieldNode don't need to be VirtualizableRoots ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizableAllocation.java - graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizableRoot.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Changeset: 6a84da35bc84 Author: Lukas Stadler Date: 2015-04-02 14:33 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6a84da35bc84 take replacements into account in NewArrayNode.virtualize ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Changeset: 33be8eb8cbd5 Author: Lukas Stadler Date: 2015-04-02 14:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/33be8eb8cbd5 test for PEA canonicalization ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java Changeset: 8ff9e165002b Author: Lukas Stadler Date: 2015-04-02 14:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8ff9e165002b canonicalize during PEA ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectList.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectsBlockState.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/GraphEffectList.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/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/ReadEliminationClosure.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java Changeset: ad1ef31ba0c1 Author: Lukas Stadler Date: 2015-04-02 14:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ad1ef31ba0c1 non-iterative PEA during partial evaluation ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: 81a34c9d6e17 Author: Roland Schatz Date: 2015-04-02 18:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/81a34c9d6e17 IGV: Improve text contrast. ! src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/FigureWidget.java Changeset: 90b5605032bc Author: Roland Schatz Date: 2015-04-03 13:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/90b5605032bc Run input type verification only when assertions are enabled. ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultGenericInvocationPlugin.java Changeset: 6adad2a0a24d Author: Stefan Anzinger Date: 2015-04-03 17:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6adad2a0a24d Ignore ResolvedJavaMethod.canBeInlined when parsing Snippets or Replacements ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java From christian.thalinger at oracle.com Fri Apr 3 20:47:25 2015 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Fri, 3 Apr 2015 13:47:25 -0700 Subject: RFR: add getAddress/putAddress to Unsafe plugin Message-ID: <0A953230-17B1-448D-B5B5-4F0FB7A00B97@oracle.com> getAddress and putAddress are missing: diff -r 6adad2a0a24d graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 17:49:43 2015 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 13:45:34 2015 -0700 @@ -104,6 +104,10 @@ public class StandardGraphBuilderPlugins } } + // Accesses to native memory addresses. + r.register2("getAddress", Receiver.class, long.class, new UnsafeGetPlugin(Kind.Long, false)); + r.register3("putAddress", Receiver.class, long.class, long.class, new UnsafePutPlugin(Kind.Long, false)); + for (Kind kind : new Kind[]{Kind.Int, Kind.Long, Kind.Object}) { Class javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass(); r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() { From java at stefan-marr.de Sat Apr 4 07:24:38 2015 From: java at stefan-marr.de (Stefan Marr) Date: Sat, 4 Apr 2015 09:24:38 +0200 Subject: Java 8 compatibility In-Reply-To: References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> Message-ID: Dear all: I would like to add one more thing to this topic. The current state of Java versions Graal and Truffle run on is, well, ?complex?. I submitted TruffleSOM and related artifacts to the PLDI artifact evaluation committee, and while those volunteers evaluating the artifacts probably could not spend unlimited time on doing their work, I would have hoped they succeed in building everything from scratch. But, with the complexity of the required Java versions, they failed. I guess, my instructions where not precise enough. So, what I would like to ask, is to consider the possibility to reduce the requirements exposed to _users_ to a bare minimum. While I understand the concerns for distribution and the desire to ship jars for Java 1.7, I do not understand why this should be any concern for someone downloading Truffle and Graal for rerunning experiments, or even starting to use those systems. I also understand that it is hard to support all versions of Java. So, I would like to suggest that everything is working with exactly _one_ specific version of Java. Your users will thank you, I am sure. Best regards Stefan > On 26 Nov 2014, at 17:38, Gilles Duboscq wrote: > > 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/ >> >> >> -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From doug.simon at oracle.com Sat Apr 4 10:59:43 2015 From: doug.simon at oracle.com (Doug Simon) Date: Sat, 4 Apr 2015 12:59:43 +0200 Subject: RFR: add getAddress/putAddress to Unsafe plugin In-Reply-To: <0A953230-17B1-448D-B5B5-4F0FB7A00B97@oracle.com> References: <0A953230-17B1-448D-B5B5-4F0FB7A00B97@oracle.com> Message-ID: Looks good. Can you please also add tests for these methods to UnsafeSubstitutionsTest? > On Apr 3, 2015, at 10:47 PM, Christian Thalinger wrote: > > getAddress and putAddress are missing: > > diff -r 6adad2a0a24d graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java > --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 17:49:43 2015 +0200 > +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 13:45:34 2015 -0700 > @@ -104,6 +104,10 @@ public class StandardGraphBuilderPlugins > } > } > > + // Accesses to native memory addresses. > + r.register2("getAddress", Receiver.class, long.class, new UnsafeGetPlugin(Kind.Long, false)); > + r.register3("putAddress", Receiver.class, long.class, long.class, new UnsafePutPlugin(Kind.Long, false)); > + > for (Kind kind : new Kind[]{Kind.Int, Kind.Long, Kind.Object}) { > Class javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass(); > r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() { > From thomas.wuerthinger at oracle.com Sat Apr 4 13:15:56 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Sat, 4 Apr 2015 15:15:56 +0200 Subject: Java 8 compatibility In-Reply-To: References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> Message-ID: <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> Stefan, The mx tool and its related requirements (i.e., a Java 7 and a Java 8 version installed) are only relevant for Graal developers. Graal users and Truffle language developers do not have any exposure to this implementation detail and can use binaries provided either by third parties [1] or via the Oracle technology network [2]. We are happy to assist academic artefact evaluation committee members in case they run into issues when building Graal from its sources. Regards, thomas [1] http://lafo.ssw.uni-linz.ac.at/builds [2] http://www.oracle.com/technetwork/oracle-labs/program-languages/overview/index-2301583.html > On 04 Apr 2015, at 09:24, Stefan Marr wrote: > > Dear all: > > I would like to add one more thing to this topic. > > The current state of Java versions Graal and Truffle run on is, well, ?complex?. > > I submitted TruffleSOM and related artifacts to the PLDI artifact evaluation committee, and while those volunteers evaluating the artifacts probably could not spend unlimited time on doing their work, I would have hoped they succeed in building everything from scratch. > > But, with the complexity of the required Java versions, they failed. > I guess, my instructions where not precise enough. > > So, what I would like to ask, is to consider the possibility to reduce the requirements exposed to _users_ to a bare minimum. > While I understand the concerns for distribution and the desire to ship jars for Java 1.7, I do not understand why this should be any concern for someone downloading Truffle and Graal for rerunning experiments, or even starting to use those systems. > > I also understand that it is hard to support all versions of Java. > So, I would like to suggest that everything is working with exactly _one_ specific version of Java. > > Your users will thank you, I am sure. > > Best regards > Stefan > > >> On 26 Nov 2014, at 17:38, Gilles Duboscq wrote: >> >> 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/ >>> >>> >>> > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > From java at stefan-marr.de Sat Apr 4 13:55:13 2015 From: java at stefan-marr.de (Stefan Marr) Date: Sat, 4 Apr 2015 15:55:13 +0200 Subject: Java 8 compatibility In-Reply-To: <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> Message-ID: <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> Hi Thomas: > On 04 Apr 2015, at 15:15, Thomas Wuerthinger wrote: > > The mx tool and its related requirements (i.e., a Java 7 and a Java 8 version installed) are only relevant for Graal developers. Graal users and Truffle language developers do not have any exposure to this implementation detail and can use binaries provided either by third parties [1] or via the Oracle technology network [2]. Perhaps, that?s a cultural clash here. I understand Graal and Truffle as open source projects. And, as such, the source is the relevant artifact. Making it easy to build for users seems to me something very worthwhile. So far, I only heard arguments I cannot really follow, because I don?t see why the requirements for a release build should make building on a user machine harder. But specifically, for my situation, I can?t just point to prebuilt binaries for all platforms. While I didn?t have to patch Graal for the last paper, at some point in the paper writing process, I selected a specific version of Graal. One that worked well, because bugs were fixed. But, it is one between releases, so there is no binary. And, later changes to Truffle would require re-testing, and perhaps changes to my experiments. So, using a later release might or might not work. > We are happy to assist academic artefact evaluation committee members in case they run into issues when building Graal from its sources. Unfortunately, that?s not how it works. If they can?t build it, they?ll fall back to the provided binaries (in this case they got a VirtualBox image with everything prebuilt). But, the problem here is actually one you should be worried about: it is a bad first impression. If the reviewers where thinking of further looking into Graal/Truffle, they might get discouraged by not being able to build it easily. So, let me restate the question: Would you accept patches that makes it possible to build Graal/Truffle with a single specific version of JDK8 that works? Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From cjbeyer at gmail.com Sat Apr 4 14:13:09 2015 From: cjbeyer at gmail.com (Charles Beyer) Date: Sat, 4 Apr 2015 07:13:09 -0700 Subject: Java 8 compatibility In-Reply-To: <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> Message-ID: To add data to the point I think Stefan is trying to make, I refrained from starting a Truffle/Graal project recently because of this bad first impression. It was a yellow flag that I needed an old JDK7 installed but a red flag that I need an old JDK8. Also, I needed a different version of JDK8 for IGV than for building graal - another red flag. With a software system this complex, a big part in evaluating its use (for me) is trying to measure how professional the development team behind the project is. Things like test coverage and how much technical debt has accumulated in the build system is a natural measure of that. The current dependency requirements didn't leave me with a warm fuzzy feeling. That aside, I'm very excited about where the project is going so don't take this as trolling. Rather, I just decided to wait until the JDK8 dependency issue is resolved. -Charles On Sat, Apr 4, 2015 at 6:55 AM, Stefan Marr wrote: > Hi Thomas: > > > On 04 Apr 2015, at 15:15, Thomas Wuerthinger < > thomas.wuerthinger at oracle.com> wrote: > > > > The mx tool and its related requirements (i.e., a Java 7 and a Java 8 > version installed) are only relevant for Graal developers. Graal users and > Truffle language developers do not have any exposure to this implementation > detail and can use binaries provided either by third parties [1] or via the > Oracle technology network [2]. > > Perhaps, that?s a cultural clash here. > I understand Graal and Truffle as open source projects. > And, as such, the source is the relevant artifact. Making it easy to build > for users seems to me something very worthwhile. > > So far, I only heard arguments I cannot really follow, because I don?t see > why the requirements for a release build should make building on a user > machine harder. > > But specifically, for my situation, I can?t just point to prebuilt > binaries for all platforms. While I didn?t have to patch Graal for the last > paper, at some point in the paper writing process, I selected a specific > version of Graal. One that worked well, because bugs were fixed. But, it is > one between releases, so there is no binary. And, later changes to Truffle > would require re-testing, and perhaps changes to my experiments. So, using > a later release might or might not work. > > > > We are happy to assist academic artefact evaluation committee members in > case they run into issues when building Graal from its sources. > > Unfortunately, that?s not how it works. If they can?t build it, they?ll > fall back to the provided binaries (in this case they got a VirtualBox > image with everything prebuilt). > > But, the problem here is actually one you should be worried about: it is a > bad first impression. If the reviewers where thinking of further looking > into Graal/Truffle, they might get discouraged by not being able to build > it easily. > > So, let me restate the question: Would you accept patches that makes it > possible to build Graal/Truffle with a single specific version of JDK8 that > works? > > Best regards > Stefan > > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > > -- Charles Beyer, cjbeyer at gmail.com Seattle, WA From thomas.wuerthinger at oracle.com Sat Apr 4 21:59:39 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Sat, 4 Apr 2015 23:59:39 +0200 Subject: Java 8 compatibility In-Reply-To: <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> Message-ID: Stefan, Graal and Truffle are open source projects and as such we are of course very open to outside contributions. We would be interested in a patch like you specify below. The only hard requirement we have is that our gate checks (?mx gate?) need to continue to make sure that projects related to the Truffle API can be built with Java 7. This is a requirement, because the JRuby open source project [1] has a Truffle branch that depends on the Truffle API and needs to build with Java 7. In general, we do not want to force all Truffle language implementors to build their own projects with Java 8. - thomas [1] https://github.com/jruby/jruby > On 04 Apr 2015, at 15:55, Stefan Marr wrote: > > Hi Thomas: > >> On 04 Apr 2015, at 15:15, Thomas Wuerthinger wrote: >> >> The mx tool and its related requirements (i.e., a Java 7 and a Java 8 version installed) are only relevant for Graal developers. Graal users and Truffle language developers do not have any exposure to this implementation detail and can use binaries provided either by third parties [1] or via the Oracle technology network [2]. > > Perhaps, that?s a cultural clash here. > I understand Graal and Truffle as open source projects. > And, as such, the source is the relevant artifact. Making it easy to build for users seems to me something very worthwhile. > > So far, I only heard arguments I cannot really follow, because I don?t see why the requirements for a release build should make building on a user machine harder. > > But specifically, for my situation, I can?t just point to prebuilt binaries for all platforms. While I didn?t have to patch Graal for the last paper, at some point in the paper writing process, I selected a specific version of Graal. One that worked well, because bugs were fixed. But, it is one between releases, so there is no binary. And, later changes to Truffle would require re-testing, and perhaps changes to my experiments. So, using a later release might or might not work. > > >> We are happy to assist academic artefact evaluation committee members in case they run into issues when building Graal from its sources. > > Unfortunately, that?s not how it works. If they can?t build it, they?ll fall back to the provided binaries (in this case they got a VirtualBox image with everything prebuilt). > > But, the problem here is actually one you should be worried about: it is a bad first impression. If the reviewers where thinking of further looking into Graal/Truffle, they might get discouraged by not being able to build it easily. > > So, let me restate the question: Would you accept patches that makes it possible to build Graal/Truffle with a single specific version of JDK8 that works? > > Best regards > Stefan > > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > From thomas.wuerthinger at oracle.com Sat Apr 4 22:23:25 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Sun, 5 Apr 2015 00:23:25 +0200 Subject: Java 8 compatibility In-Reply-To: References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> Message-ID: <3797F407-C238-433E-912F-4D2C72373C2B@oracle.com> Charles, Sorry to hear that the initial building process gave you a bad impression and thanks for your input. I agree that test coverage is a very important aspect of a project and we therefore have an extensive gate system that includes thousands of unittests ?mx unittest?, bug detection tools ?mx findbugs?, formatting checking tools ?mx eclipseformat?, and tools for checking module dependencies ?mx canonicalizeprojects?. We also create JaCoCo test coverage reports for every push. The reason behind our dependency on JDK7 when building Graal is not technical debt, but the requirement that the Truffle API must be usable for language implementations that require Java 7 for backwards compatibility. JRuby is the most prominent example for this at the moment. Building with JDK7 is the only way for us to ensure 100% that we do not break these language projects depending on Truffle. There are points of interaction between the compiler and the JDK in particular around compiler intrinsics where we replace JDK methods with more efficient representations in the compiler?s IR. Additionally, the compiler itself uses large part of the standard library. The differences a JDK version makes are usually not big and often none at all. However, fixing the JDK version Graal is built with makes sure that this is also the exact same version we run our extensive testing and benchmark structure with. That all said, we will investigate how we can make the initial build step for people new to Graal simpler. I hope with Graal becoming now more mature and stable, there will be a larger incentive for people to experiment with the technology (both in source and binary form). - thomas > On 04 Apr 2015, at 16:13, Charles Beyer wrote: > > To add data to the point I think Stefan is trying to make, I refrained from starting a Truffle/Graal project recently because of this bad first impression. > > It was a yellow flag that I needed an old JDK7 installed but a red flag that I need an old JDK8. Also, I needed a different version of JDK8 for IGV than for building graal - another red flag. > > With a software system this complex, a big part in evaluating its use (for me) is trying to measure how professional the development team behind the project is. Things like test coverage and how much technical debt has accumulated in the build system is a natural measure of that. The current dependency requirements didn't leave me with a warm fuzzy feeling. > > That aside, I'm very excited about where the project is going so don't take this as trolling. Rather, I just decided to wait until the JDK8 dependency issue is resolved. > > -Charles From mario.wolczko at oracle.com Sat Apr 4 22:47:22 2015 From: mario.wolczko at oracle.com (Mario Wolczko) Date: Sat, 4 Apr 2015 23:47:22 +0100 Subject: Java 8 compatibility In-Reply-To: <3797F407-C238-433E-912F-4D2C72373C2B@oracle.com> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> <3797F407-C238-433E-912F-4D2C72373C2B@oracle.com> Message-ID: I can't help but wonder if there would be value in providing a VM image, say for VirtualBox, preloaded with all the tools and components for people to get started. You probably wouldn't want to do anything serious or long-term this way, but it's an easy way to try things out. That said, there may be licensing issues which make this impractical. > On Apr 4, 2015, at 11:23 PM, Thomas Wuerthinger wrote: > > Charles, > > Sorry to hear that the initial building process gave you a bad impression and thanks for your input. I agree that test coverage is a very important aspect of a project and we therefore have an extensive gate system that includes thousands of unittests ?mx unittest?, bug detection tools ?mx findbugs?, formatting checking tools ?mx eclipseformat?, and tools for checking module dependencies ?mx canonicalizeprojects?. We also create JaCoCo test coverage reports for every push. > > The reason behind our dependency on JDK7 when building Graal is not technical debt, but the requirement that the Truffle API must be usable for language implementations that require Java 7 for backwards compatibility. JRuby is the most prominent example for this at the moment. Building with JDK7 is the only way for us to ensure 100% that we do not break these language projects depending on Truffle. > > There are points of interaction between the compiler and the JDK in particular around compiler intrinsics where we replace JDK methods with more efficient representations in the compiler?s IR. Additionally, the compiler itself uses large part of the standard library. The differences a JDK version makes are usually not big and often none at all. However, fixing the JDK version Graal is built with makes sure that this is also the exact same version we run our extensive testing and benchmark structure with. > > That all said, we will investigate how we can make the initial build step for people new to Graal simpler. I hope with Graal becoming now more mature and stable, there will be a larger incentive for people to experiment with the technology (both in source and binary form). > > - thomas > > >> On 04 Apr 2015, at 16:13, Charles Beyer wrote: >> >> To add data to the point I think Stefan is trying to make, I refrained from starting a Truffle/Graal project recently because of this bad first impression. >> >> It was a yellow flag that I needed an old JDK7 installed but a red flag that I need an old JDK8. Also, I needed a different version of JDK8 for IGV than for building graal - another red flag. >> >> With a software system this complex, a big part in evaluating its use (for me) is trying to measure how professional the development team behind the project is. Things like test coverage and how much technical debt has accumulated in the build system is a natural measure of that. The current dependency requirements didn't leave me with a warm fuzzy feeling. >> >> That aside, I'm very excited about where the project is going so don't take this as trolling. Rather, I just decided to wait until the JDK8 dependency issue is resolved. >> >> -Charles > From thomas.wuerthinger at oracle.com Sat Apr 4 22:58:28 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Sun, 5 Apr 2015 00:58:28 +0200 Subject: build older version graal error In-Reply-To: References: Message-ID: <6196938C-C5C7-4E24-94C7-89EB82B690B0@oracle.com> This error looks similar to the one happening when object files and the sources are out of sync. Did you try a ?mx clean? before your ?mx build?? - thomas > On 03 Apr 2015, at 04:37, Yanlin Wang wrote: > > Hi, > > I?m compiling graal against an older changeset and got some errors. Could you help me fix this? Thanks! > > I?m using OS X 10.9.5 (13F1066), Kernel Version: Darwin 13.4.0 > > In my local graal directory, I ran: > > hg update -r 3a59e1411192 > mx build > But got these errors: > > cd bsd_amd64_compiler2/product && /Applications/Xcode.app/Contents/Developer/usr/bin/make " LP64=1 " > Rescanned ../generated/adfiles/bsd_x86_64.ad but encountered no changes. > make[4]: Nothing to be done for `all'. > make[4]: Nothing to be done for `all'. > if [ -d /Users/yanlinwang/graal/agent -a "x86" != "ia64" \ > -a "x86" != "arm" \ > -a "x86" != "ppc" \ > -a "x86" != "zero" ] ; then \ > /Applications/Xcode.app/Contents/Developer/usr/bin/make -f sa.make /Users/yanlinwang/graal/build/bsd/bsd_amd64_compiler2/product/../generated/sa-jdi.jar; \ > fi > make[5]: `/Users/yanlinwang/graal/build/bsd/bsd_amd64_compiler2/product/../generated/sa-jdi.jar' is up to date. > echo "dtrace headers generated" > dtrace headers generated > make[4]: `precompiled.hpp.pch' is up to date. > Linking vm... > Undefined symbols for architecture x86_64: > > "_GPUOffload", referenced from: > > VMStructs::initHotSpotVMConfig(oopDesc*) in vmStructs.o > > "_TraceGPUInteraction", referenced from: > > Gpu::initialized_gpu(Gpu*) in gpu.o > > Gpu::probe_gpus(JNIEnv_*) in gpu_bsd.o > > Hsail::initialize(JNIEnv_*, _jclass*) in gpu_hsail.o > > Hsail::generate_kernel(JNIEnv_*, _jclass*, _jbyteArray*, _jstring*) in gpu_hsail.o > > Hsail::execute_kernel_void_1d_internal(unsigned char*, int, _jobject*, methodHandle&, nmethod*, int, int, _jobject*, Thread*) in gpu_hsail.o > > Hsail::register_natives(JNIEnv_*) in gpu_hsail.o > > Hsail::HSAILDeoptimizationInfo::oops_do(OopClosure*) in gpu_hsail.o > > ... > > "_UseHSAILDeoptimization", referenced from: > > Hsail::execute_kernel_void_1d_internal(unsigned char*, int, _jobject*, methodHandle&, nmethod*, int, int, _jobject*, Thread*) in gpu_hsail.o > > HSAILKernelArguments::pushTrailingArgs() in hsailKernelArguments.o > > VMStructs::initHotSpotVMConfig(oopDesc*) in vmStructs.o > > "_UseHSAILSafepoints", referenced from: > > SafepointSynchronize::begin() in safepoint.o > > SafepointSynchronize::end() in safepoint.o > > VMStructs::initHotSpotVMConfig(oopDesc*) in vmStructs.o > > ld: symbol(s) not found for architecture x86_64 > > clang: error: linker command failed with exit code 1 (use -v to see invocation) > > dsymutil libjvm.dylib > error: unable to open executable 'libjvm.dylib' > > make[4]: *** [libjvm.dylib] Error 1 > > make[3]: *** [the_vm] Error 2 > > make[2]: *** [product] Error 2 > > make[1]: *** [generic_build2] Error 2 > > make: *** [product] Error 2 > > > > Regards, > Yanlin Wang > > > > > > From thomas.wuerthinger at oracle.com Sat Apr 4 23:03:02 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Sun, 5 Apr 2015 01:03:02 +0200 Subject: Java 8 compatibility In-Reply-To: References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> <3797F407-C238-433E-912F-4D2C72373C2B@oracle.com> Message-ID: Yes, this could be a good way to get people started without any installation issues. Stefan, you already created such an image for the artefact evaluation? Maybe one could prepare one that includes also some Java test programs, a pre-built IGV, and some example IGV graphs. - thomas > On 05 Apr 2015, at 00:47, Mario Wolczko wrote: > > I can't help but wonder if there would be value in providing a VM image, say for VirtualBox, preloaded with all the tools and components for people to get started. You probably wouldn't want to do anything serious or long-term this way, but it's an easy way to try things out. > That said, there may be licensing issues which make this impractical. > >> On Apr 4, 2015, at 11:23 PM, Thomas Wuerthinger wrote: >> >> Charles, >> >> Sorry to hear that the initial building process gave you a bad impression and thanks for your input. I agree that test coverage is a very important aspect of a project and we therefore have an extensive gate system that includes thousands of unittests ?mx unittest?, bug detection tools ?mx findbugs?, formatting checking tools ?mx eclipseformat?, and tools for checking module dependencies ?mx canonicalizeprojects?. We also create JaCoCo test coverage reports for every push. >> >> The reason behind our dependency on JDK7 when building Graal is not technical debt, but the requirement that the Truffle API must be usable for language implementations that require Java 7 for backwards compatibility. JRuby is the most prominent example for this at the moment. Building with JDK7 is the only way for us to ensure 100% that we do not break these language projects depending on Truffle. >> >> There are points of interaction between the compiler and the JDK in particular around compiler intrinsics where we replace JDK methods with more efficient representations in the compiler?s IR. Additionally, the compiler itself uses large part of the standard library. The differences a JDK version makes are usually not big and often none at all. However, fixing the JDK version Graal is built with makes sure that this is also the exact same version we run our extensive testing and benchmark structure with. >> >> That all said, we will investigate how we can make the initial build step for people new to Graal simpler. I hope with Graal becoming now more mature and stable, there will be a larger incentive for people to experiment with the technology (both in source and binary form). >> >> - thomas >> >> >>> On 04 Apr 2015, at 16:13, Charles Beyer wrote: >>> >>> To add data to the point I think Stefan is trying to make, I refrained from starting a Truffle/Graal project recently because of this bad first impression. >>> >>> It was a yellow flag that I needed an old JDK7 installed but a red flag that I need an old JDK8. Also, I needed a different version of JDK8 for IGV than for building graal - another red flag. >>> >>> With a software system this complex, a big part in evaluating its use (for me) is trying to measure how professional the development team behind the project is. Things like test coverage and how much technical debt has accumulated in the build system is a natural measure of that. The current dependency requirements didn't leave me with a warm fuzzy feeling. >>> >>> That aside, I'm very excited about where the project is going so don't take this as trolling. Rather, I just decided to wait until the JDK8 dependency issue is resolved. >>> >>> -Charles >> > From cjbeyer at gmail.com Sun Apr 5 01:30:10 2015 From: cjbeyer at gmail.com (Charles Beyer) Date: Sat, 4 Apr 2015 18:30:10 -0700 Subject: Java 8 compatibility In-Reply-To: <3797F407-C238-433E-912F-4D2C72373C2B@oracle.com> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> <3797F407-C238-433E-912F-4D2C72373C2B@oracle.com> Message-ID: Thomas, Thank you for the thorough response. I appreciate your reasoning behind wanting to preserve JDK7 compatibility. However, Java 7 becomes an unsupported product this month. It might be worth thinking about a migration plan for the Truffle API and client projects. As a concrete example of why this is a problem, I have a very difficult time keeping JDK7 and JDK 1.8.0_31 installed on some of my machines because of corporate bots that automatically remove versions with security vulnerabilities. Regards, Charles On Sat, Apr 4, 2015 at 3:23 PM, Thomas Wuerthinger < thomas.wuerthinger at oracle.com> wrote: > Charles, > > Sorry to hear that the initial building process gave you a bad impression > and thanks for your input. I agree that test coverage is a very important > aspect of a project and we therefore have an extensive gate system that > includes thousands of unittests ?mx unittest?, bug detection tools ?mx > findbugs?, formatting checking tools ?mx eclipseformat?, and tools for > checking module dependencies ?mx canonicalizeprojects?. We also create > JaCoCo test coverage reports for every push. > > The reason behind our dependency on JDK7 when building Graal is not > technical debt, but the requirement that the Truffle API must be usable for > language implementations that require Java 7 for backwards compatibility. > JRuby is the most prominent example for this at the moment. Building with > JDK7 is the only way for us to ensure 100% that we do not break these > language projects depending on Truffle. > > There are points of interaction between the compiler and the JDK in > particular around compiler intrinsics where we replace JDK methods with > more efficient representations in the compiler?s IR. Additionally, the > compiler itself uses large part of the standard library. The differences a > JDK version makes are usually not big and often none at all. However, > fixing the JDK version Graal is built with makes sure that this is also the > exact same version we run our extensive testing and benchmark structure > with. > > That all said, we will investigate how we can make the initial build step > for people new to Graal simpler. I hope with Graal becoming now more mature > and stable, there will be a larger incentive for people to experiment with > the technology (both in source and binary form). > > - thomas > > > > On 04 Apr 2015, at 16:13, Charles Beyer wrote: > > > > To add data to the point I think Stefan is trying to make, I refrained > from starting a Truffle/Graal project recently because of this bad first > impression. > > > > It was a yellow flag that I needed an old JDK7 installed but a red flag > that I need an old JDK8. Also, I needed a different version of JDK8 for > IGV than for building graal - another red flag. > > > > With a software system this complex, a big part in evaluating its use > (for me) is trying to measure how professional the development team behind > the project is. Things like test coverage and how much technical debt has > accumulated in the build system is a natural measure of that. The current > dependency requirements didn't leave me with a warm fuzzy feeling. > > > > That aside, I'm very excited about where the project is going so don't > take this as trolling. Rather, I just decided to wait until the JDK8 > dependency issue is resolved. > > > > -Charles > > -- Charles Beyer, cjbeyer at gmail.com Seattle, WA From christian.thalinger at oracle.com Sun Apr 5 03:37:37 2015 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Sat, 4 Apr 2015 20:37:37 -0700 Subject: RFR: add getAddress/putAddress to Unsafe plugin In-Reply-To: References: <0A953230-17B1-448D-B5B5-4F0FB7A00B97@oracle.com> Message-ID: Sure. Also, I noticed that unsafePutLong isn?t tested so I added it too: diff -r 6adad2a0a24d graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java Fri Apr 03 17:49:43 2015 +0200 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java Sat Apr 04 20:35:43 2015 -0700 @@ -101,10 +101,14 @@ public class UnsafeSubstitutionsTest ext testGraph("unsafePutShort"); testGraph("unsafePutChar"); testGraph("unsafePutInt"); + testGraph("unsafePutLong"); testGraph("unsafePutFloat"); testGraph("unsafePutDouble"); testGraph("unsafePutObject"); + testGraph("unsafeGetAddress"); + testGraph("unsafePutAddress"); + testGraph("unsafeDirectMemoryRead"); testGraph("unsafeDirectMemoryWrite"); @@ -129,12 +133,16 @@ public class UnsafeSubstitutionsTest ext test("unsafePutShort", unsafeArg, supply(() -> new Foo()), fooOffset("s"), (short) -93); test("unsafePutChar", unsafeArg, supply(() -> new Foo()), fooOffset("c"), 'A'); test("unsafePutInt", unsafeArg, supply(() -> new Foo()), fooOffset("i"), 42); + test("unsafePutLong", unsafeArg, supply(() -> new Foo()), fooOffset("l"), 4711L); test("unsafePutFloat", unsafeArg, supply(() -> new Foo()), fooOffset("f"), 58.0F); test("unsafePutDouble", unsafeArg, supply(() -> new Foo()), fooOffset("d"), -28736.243465D); test("unsafePutObject", unsafeArg, supply(() -> new Foo()), fooOffset("i"), "value1", "value2", "value3"); + test("unsafeGetAddress", unsafeArg, address); + test("unsafePutAddress", unsafeArg, address, 0xDEAD_BEEF_DEAD_BABEL); + test("unsafeDirectMemoryRead", unsafeArg, address); - test("unsafeDirectMemoryWrite", unsafeArg, address, 0xCAFEBABEDEADBABEL); + test("unsafeDirectMemoryWrite", unsafeArg, address, 0xCAFE_BABE_DEAD_BABEL); } unsafe.freeMemory(address); } @@ -304,6 +312,19 @@ public class UnsafeSubstitutionsTest ext } @SuppressWarnings("all") + public static long unsafeGetAddress(Unsafe unsafe, long offset) { + return unsafe.getAddress(offset); + } + + @SuppressWarnings("all") + public static long unsafePutAddress(Unsafe unsafe, long offset, long value) { + long res = 1; + unsafe.putAddress(offset, value); + res += unsafe.getAddress(offset); + return res; + } + + @SuppressWarnings("all") public static double unsafeDirectMemoryRead(Unsafe unsafe, long address) { // Unsafe.getBoolean(long) and Unsafe.getObject(long) do not exist // @formatter:off > On Apr 4, 2015, at 3:59 AM, Doug Simon wrote: > > Looks good. Can you please also add tests for these methods to UnsafeSubstitutionsTest? > >> On Apr 3, 2015, at 10:47 PM, Christian Thalinger wrote: >> >> getAddress and putAddress are missing: >> >> diff -r 6adad2a0a24d graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java >> --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 17:49:43 2015 +0200 >> +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 13:45:34 2015 -0700 >> @@ -104,6 +104,10 @@ public class StandardGraphBuilderPlugins >> } >> } >> >> + // Accesses to native memory addresses. >> + r.register2("getAddress", Receiver.class, long.class, new UnsafeGetPlugin(Kind.Long, false)); >> + r.register3("putAddress", Receiver.class, long.class, long.class, new UnsafePutPlugin(Kind.Long, false)); >> + >> for (Kind kind : new Kind[]{Kind.Int, Kind.Long, Kind.Object}) { >> Class javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass(); >> r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() { >> > From doug.simon at oracle.com Sun Apr 5 07:44:20 2015 From: doug.simon at oracle.com (Doug Simon) Date: Sun, 5 Apr 2015 09:44:20 +0200 Subject: RFR: add getAddress/putAddress to Unsafe plugin In-Reply-To: References: <0A953230-17B1-448D-B5B5-4F0FB7A00B97@oracle.com> Message-ID: Looks good to me. > On Apr 5, 2015, at 5:37 AM, Christian Thalinger wrote: > > Sure. Also, I noticed that unsafePutLong isn?t tested so I added it too: > > diff -r 6adad2a0a24d graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java > --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java Fri Apr 03 17:49:43 2015 +0200 > +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java Sat Apr 04 20:35:43 2015 -0700 > @@ -101,10 +101,14 @@ public class UnsafeSubstitutionsTest ext > testGraph("unsafePutShort"); > testGraph("unsafePutChar"); > testGraph("unsafePutInt"); > + testGraph("unsafePutLong"); > testGraph("unsafePutFloat"); > testGraph("unsafePutDouble"); > testGraph("unsafePutObject"); > > + testGraph("unsafeGetAddress"); > + testGraph("unsafePutAddress"); > + > testGraph("unsafeDirectMemoryRead"); > testGraph("unsafeDirectMemoryWrite"); > > @@ -129,12 +133,16 @@ public class UnsafeSubstitutionsTest ext > test("unsafePutShort", unsafeArg, supply(() -> new Foo()), fooOffset("s"), (short) -93); > test("unsafePutChar", unsafeArg, supply(() -> new Foo()), fooOffset("c"), 'A'); > test("unsafePutInt", unsafeArg, supply(() -> new Foo()), fooOffset("i"), 42); > + test("unsafePutLong", unsafeArg, supply(() -> new Foo()), fooOffset("l"), 4711L); > test("unsafePutFloat", unsafeArg, supply(() -> new Foo()), fooOffset("f"), 58.0F); > test("unsafePutDouble", unsafeArg, supply(() -> new Foo()), fooOffset("d"), -28736.243465D); > test("unsafePutObject", unsafeArg, supply(() -> new Foo()), fooOffset("i"), "value1", "value2", "value3"); > > + test("unsafeGetAddress", unsafeArg, address); > + test("unsafePutAddress", unsafeArg, address, 0xDEAD_BEEF_DEAD_BABEL); > + > test("unsafeDirectMemoryRead", unsafeArg, address); > - test("unsafeDirectMemoryWrite", unsafeArg, address, 0xCAFEBABEDEADBABEL); > + test("unsafeDirectMemoryWrite", unsafeArg, address, 0xCAFE_BABE_DEAD_BABEL); > } > unsafe.freeMemory(address); > } > @@ -304,6 +312,19 @@ public class UnsafeSubstitutionsTest ext > } > > @SuppressWarnings("all") > + public static long unsafeGetAddress(Unsafe unsafe, long offset) { > + return unsafe.getAddress(offset); > + } > + > + @SuppressWarnings("all") > + public static long unsafePutAddress(Unsafe unsafe, long offset, long value) { > + long res = 1; > + unsafe.putAddress(offset, value); > + res += unsafe.getAddress(offset); > + return res; > + } > + > + @SuppressWarnings("all") > public static double unsafeDirectMemoryRead(Unsafe unsafe, long address) { > // Unsafe.getBoolean(long) and Unsafe.getObject(long) do not exist > // @formatter:off > >> On Apr 4, 2015, at 3:59 AM, Doug Simon wrote: >> >> Looks good. Can you please also add tests for these methods to UnsafeSubstitutionsTest? >> >>> On Apr 3, 2015, at 10:47 PM, Christian Thalinger wrote: >>> >>> getAddress and putAddress are missing: >>> >>> diff -r 6adad2a0a24d graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java >>> --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 17:49:43 2015 +0200 >>> +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 13:45:34 2015 -0700 >>> @@ -104,6 +104,10 @@ public class StandardGraphBuilderPlugins >>> } >>> } >>> >>> + // Accesses to native memory addresses. >>> + r.register2("getAddress", Receiver.class, long.class, new UnsafeGetPlugin(Kind.Long, false)); >>> + r.register3("putAddress", Receiver.class, long.class, long.class, new UnsafePutPlugin(Kind.Long, false)); >>> + >>> for (Kind kind : new Kind[]{Kind.Int, Kind.Long, Kind.Object}) { >>> Class javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass(); >>> r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() { >>> >> > From java at stefan-marr.de Sun Apr 5 08:23:12 2015 From: java at stefan-marr.de (Stefan Marr) Date: Sun, 5 Apr 2015 10:23:12 +0200 Subject: Java 8 compatibility In-Reply-To: References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> <3797F407-C238-433E-912F-4D2C72373C2B@oracle.com> Message-ID: <6EA87B46-3354-4C0A-8F37-3DD83F72B226@stefan-marr.de> Hi: > On 05 Apr 2015, at 01:03, Thomas Wuerthinger wrote: > > Yes, this could be a good way to get people started without any installation issues. Stefan, you already created such an image for the artefact evaluation? Maybe one could prepare one that includes also some Java test programs, a pre-built IGV, and some example IGV graphs. Yes, preparing such an image isn?t really an issue. Links to the image for the PLDI paper are here [1]. It would probably be ?nice-to-have? also for tutorial/hands-on sessions. However, I guess that?s mostly a one-shot thing, because who would maintain the image and keep it up to date? For improving the ?first impression? effect, in my experience, reducing the complexity of build-dependencies is the only longterm option. For instance, the PLDI instructions for setting up the experiments on a new system are already outdated. And the paper hasn?t even been presented yet :( Since the latest JDK8u40 can?t be use to build Graal, just following my current instructions will fail with an obscure JNI-related build error. Not that there is anything one could now do about it, except changing the setup instructions, but well, this is less than ideal? Best regards Stefan [1] http://stefan-marr.de/papers/pldi-marr-et-al-zero-overhead-metaprogramming-artifacts/ -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From doug.simon at oracle.com Mon Apr 6 01:00:13 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Mon, 06 Apr 2015 01:00:13 +0000 Subject: hg: graal/graal: 9 new changesets Message-ID: <201504060100.t3610DiY015542@aojmv0008> Changeset: ba0f264a71cf Author: Doug Simon Date: 2015-04-04 19:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ba0f264a71cf added support for inlining graphs derived from InvocationPlugins ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.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/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Changeset: c77b80772500 Author: Doug Simon Date: 2015-04-04 19:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c77b80772500 removed commented out code ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Changeset: c36ab3cd360c Author: Doug Simon Date: 2015-04-04 19:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c36ab3cd360c removed GraphBuilderContext.getRootMethod() ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultGenericInvocationPlugin.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: a100c22edc32 Author: Doug Simon Date: 2015-04-04 21:43 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a100c22edc32 removed some redundant GraphBuilderContext methods or gave them default implementations ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java Changeset: 28a85fa57b27 Author: Doug Simon Date: 2015-04-04 21:57 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/28a85fa57b27 renamed getMethodSubstitution to getSubstitution in Replacements API and removed getMethodSubstitutionMethod ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotCryptoSubstitutionTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotHostBackend.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.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/policy/InlineMethodSubstitutionsPolicy.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/MethodSubstitutionTest.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StringSubstitutionsTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java Changeset: 6b119b6362de Author: Doug Simon Date: 2015-04-04 22:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6b119b6362de more robust error handling ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java Changeset: f0f725496f2a Author: Doug Simon Date: 2015-04-05 09:45 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f0f725496f2a account for InvocationPlugins that don't return true when using them for late inlining ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 65d29fa81397 Author: Chris Seaton Date: 2015-04-05 19:51 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/65d29fa81397 DSL: add support for hex, oct and binary integer literals. + graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/IntegerLiteralGuardsTest.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpressionResolver.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/Expression.atg ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/Scanner.java Changeset: 953c813b8e7a Author: Chris Seaton Date: 2015-04-05 20:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/953c813b8e7a DSL: allow comparison of different integral types. ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MethodGuardsTest.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpressionResolver.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java From christian.thalinger at oracle.com Mon Apr 6 16:21:40 2015 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Mon, 6 Apr 2015 09:21:40 -0700 Subject: RFR: add getAddress/putAddress to Unsafe plugin In-Reply-To: References: <0A953230-17B1-448D-B5B5-4F0FB7A00B97@oracle.com> Message-ID: Thanks, pushing. > On Apr 5, 2015, at 12:44 AM, Doug Simon wrote: > > Looks good to me. > >> On Apr 5, 2015, at 5:37 AM, Christian Thalinger wrote: >> >> Sure. Also, I noticed that unsafePutLong isn?t tested so I added it too: >> >> diff -r 6adad2a0a24d graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java >> --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java Fri Apr 03 17:49:43 2015 +0200 >> +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java Sat Apr 04 20:35:43 2015 -0700 >> @@ -101,10 +101,14 @@ public class UnsafeSubstitutionsTest ext >> testGraph("unsafePutShort"); >> testGraph("unsafePutChar"); >> testGraph("unsafePutInt"); >> + testGraph("unsafePutLong"); >> testGraph("unsafePutFloat"); >> testGraph("unsafePutDouble"); >> testGraph("unsafePutObject"); >> >> + testGraph("unsafeGetAddress"); >> + testGraph("unsafePutAddress"); >> + >> testGraph("unsafeDirectMemoryRead"); >> testGraph("unsafeDirectMemoryWrite"); >> >> @@ -129,12 +133,16 @@ public class UnsafeSubstitutionsTest ext >> test("unsafePutShort", unsafeArg, supply(() -> new Foo()), fooOffset("s"), (short) -93); >> test("unsafePutChar", unsafeArg, supply(() -> new Foo()), fooOffset("c"), 'A'); >> test("unsafePutInt", unsafeArg, supply(() -> new Foo()), fooOffset("i"), 42); >> + test("unsafePutLong", unsafeArg, supply(() -> new Foo()), fooOffset("l"), 4711L); >> test("unsafePutFloat", unsafeArg, supply(() -> new Foo()), fooOffset("f"), 58.0F); >> test("unsafePutDouble", unsafeArg, supply(() -> new Foo()), fooOffset("d"), -28736.243465D); >> test("unsafePutObject", unsafeArg, supply(() -> new Foo()), fooOffset("i"), "value1", "value2", "value3"); >> >> + test("unsafeGetAddress", unsafeArg, address); >> + test("unsafePutAddress", unsafeArg, address, 0xDEAD_BEEF_DEAD_BABEL); >> + >> test("unsafeDirectMemoryRead", unsafeArg, address); >> - test("unsafeDirectMemoryWrite", unsafeArg, address, 0xCAFEBABEDEADBABEL); >> + test("unsafeDirectMemoryWrite", unsafeArg, address, 0xCAFE_BABE_DEAD_BABEL); >> } >> unsafe.freeMemory(address); >> } >> @@ -304,6 +312,19 @@ public class UnsafeSubstitutionsTest ext >> } >> >> @SuppressWarnings("all") >> + public static long unsafeGetAddress(Unsafe unsafe, long offset) { >> + return unsafe.getAddress(offset); >> + } >> + >> + @SuppressWarnings("all") >> + public static long unsafePutAddress(Unsafe unsafe, long offset, long value) { >> + long res = 1; >> + unsafe.putAddress(offset, value); >> + res += unsafe.getAddress(offset); >> + return res; >> + } >> + >> + @SuppressWarnings("all") >> public static double unsafeDirectMemoryRead(Unsafe unsafe, long address) { >> // Unsafe.getBoolean(long) and Unsafe.getObject(long) do not exist >> // @formatter:off >> >>> On Apr 4, 2015, at 3:59 AM, Doug Simon wrote: >>> >>> Looks good. Can you please also add tests for these methods to UnsafeSubstitutionsTest? >>> >>>> On Apr 3, 2015, at 10:47 PM, Christian Thalinger wrote: >>>> >>>> getAddress and putAddress are missing: >>>> >>>> diff -r 6adad2a0a24d graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java >>>> --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 17:49:43 2015 +0200 >>>> +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Fri Apr 03 13:45:34 2015 -0700 >>>> @@ -104,6 +104,10 @@ public class StandardGraphBuilderPlugins >>>> } >>>> } >>>> >>>> + // Accesses to native memory addresses. >>>> + r.register2("getAddress", Receiver.class, long.class, new UnsafeGetPlugin(Kind.Long, false)); >>>> + r.register3("putAddress", Receiver.class, long.class, long.class, new UnsafePutPlugin(Kind.Long, false)); >>>> + >>>> for (Kind kind : new Kind[]{Kind.Int, Kind.Long, Kind.Object}) { >>>> Class javaClass = kind == Kind.Object ? Object.class : kind.toJavaClass(); >>>> r.register5("compareAndSwap" + kind.name(), Receiver.class, Object.class, long.class, javaClass, javaClass, new InvocationPlugin() { >>>> >>> >> > From doug.simon at oracle.com Tue Apr 7 01:00:08 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 07 Apr 2015 01:00:08 +0000 Subject: hg: graal/graal: 3 new changesets Message-ID: <201504070100.t3710DIc015000@aojmv0008> Changeset: 9ca538e3e46e Author: Chris Seaton Date: 2015-04-06 13:43 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9ca538e3e46e DSL: add tests for comparing against a byte and a short in guards. ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MethodGuardsTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemTest.java Changeset: 3648df587223 Author: Chris Seaton Date: 2015-04-06 13:45 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3648df587223 DSL: rename ElementUtils.typeCompatible to areTypesCompatible. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpressionResolver.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Changeset: c6ba61a3d05a Author: twisti Date: 2015-04-06 08:48 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c6ba61a3d05a Add getAddress/putAddress to Unsafe plugin. ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsafeSubstitutionsTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java From renzetorensma at gmail.com Tue Apr 7 15:01:10 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Tue, 7 Apr 2015 17:01:10 +0200 Subject: Type hierarchy In-Reply-To: References: <5CB38E6E-DA36-4F76-B01E-76F9B9FF0880@gmail.com> <3BF9C370-737D-4DE0-9B5A-050C21C47C82@oracle.com> <23A66D35-9ED6-4F27-8F31-4C17FE0F4DCA@gmail.com> Message-ID: <7FE086A1-5B89-4085-A161-71FEEEA419B1@gmail.com> I don?t think I have time to attend, but it sounds great! > On 2 apr. 2015, at 15:10, Chris Seaton wrote: > > We?ve learned a lot through integrating Truffle into JRuby - it?s such a large mature code base, with many real users, and the Ruby language itself is also very large. We had exactly the same problem as you - IRubyObject is used everywhere in JRuby. > > I hope to be at the Truffle Workshop at ECOOP this year http://2015.ecoop.org/track/Truffle-2015-papers where I can say a lot more about the challenges and opportunities of integrating Truffle into an existing language. > > If you?re trying to do the same we?d love to have you there - there is the potential for financial assistance for people to attend and you can present your plans as a starting point for discussion. > > In the mean time you can contact me on Skype chrisgrahamseaton or on #jruby IRC if you want some more info about our experience. > > Chris > >> On 2 Apr 2015, at 14:01, Renze Torensma > wrote: >> >> Hi Chris, >> >> Thanks for your answer! I asked this because I have an existing code base for a language and I want to use Truffle to speed it up. Comparable to JRuby I think, but it?s just a research project so not used in production. And if I want to use Java primitives I have to change a lot of code, because the Value superclass is used all over the code base. >> >> I?m going to think about it a bit more and hopefully come up with a good solution :) >> >> Renze >> >>> On 1 apr. 2015, at 15:59, Chris Seaton > wrote: >>> >>> Hello Renze, >>> >>> In the past when people have developed JVM languages like Jython and JRuby they have recreated the guest language?s class hierarchy in Java. So in JRuby, there is a RubyBasicObject, a RubyObject and a RubyFixnum. These Java classes have methods that correspond to the Ruby methods in the same classes. >>> >>> I would not recommend doing this for a Truffle language. I think instead you want to increase the level of abstraction slightly and think more about writing a Java program that represents the guest language object model, rather than recreating it in Java. >>> >>> In the Truffle implementation of Ruby, we use int and long for Fixnum, even though they logically extend Object and BasicObject, and there is no RubyFixnum class at all. We then add special cases for all operations that examine the class of an object to return that Fixnum is the class for an int or long - we abstract the inheritance and express it in Java code, rather than expressing it using the Java object model. >>> >>> To take it one stage further you can use a Truffle DyanmicObject to represent your guest language objects. >>> >>> Combining all of this - not using the Java class hierarchy, not writing methods in your guest language classes, and then using DyanmicObject instead, in the end you?ll find you don?t have any need for classes like RubyObject at all (we still have them in JRuby+Truffle but they?re going away soon). >>> >>> Is that helpful? Or do you have more specific reasons why you want the inheritance which make this not practical? >>> >>> Regards, >>> >>> Chris >>> >>>> On 1 Apr 2015, at 14:32, Renze Torensma > wrote: >>>> >>>> Hi, >>>> >>>> Do you have any tips about dealing with a type hierarchy that has one superclass for all types? For example a Value superclass with Boolean, String, Int, List and Date subclasses. That way I can?t use the java primitives for boolean and int so I lose out on those performance gains I think.. >>>> >>>> Renze >>> >> > From renzetorensma at gmail.com Tue Apr 7 15:08:29 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Tue, 7 Apr 2015 17:08:29 +0200 Subject: Bug reports Message-ID: <96B8768F-AF9A-43E6-81BF-B9BB1E7D1AA5@gmail.com> Is there a place where we can file or discuss bugs? For example, when I change something in my type system all nodes that use that type system produce the error "The used type system 'truffle.types.RascalTypes' is invalid. Fix errors in the type system first.?. Changing something in the file and reverting that change and save the file fixes the problem, but doing this for all node files takes a long time and can become frustrating.. From christian.humer at gmail.com Tue Apr 7 15:17:39 2015 From: christian.humer at gmail.com (Christian Humer) Date: Tue, 07 Apr 2015 17:17:39 +0200 Subject: Bug reports In-Reply-To: <96B8768F-AF9A-43E6-81BF-B9BB1E7D1AA5@gmail.com> References: <96B8768F-AF9A-43E6-81BF-B9BB1E7D1AA5@gmail.com> Message-ID: <0881427a-5996-4379-a5c3-b45fe6d16d6c@getmailbird.com> Hi Renze, Bugs may be reported here:?https://bugs.openjdk.java.net/browse/graal Alternatively we can also skip the bug system and I can directly help you here on the mailing list. Regarding your issue: this looks very much like a bug. Usually cleaning and rebuilding your project should lead to the same result as building your project incrementally (change a single file). Are your sources available somewhere? - Christian Humer On 07.04.2015 17:09:27, Renze Torensma wrote: Is there a place where we can file or discuss bugs? For example, when I change something in my type system all nodes that use that type system produce the error "The used type system 'truffle.types.RascalTypes' is invalid. Fix errors in the type system first.?. Changing something in the file and reverting that change and save the file fixes the problem, but doing this for all node files takes a long time and can become frustrating.. From renzetorensma at gmail.com Tue Apr 7 17:12:02 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Tue, 7 Apr 2015 19:12:02 +0200 Subject: Bug reports In-Reply-To: <0881427a-5996-4379-a5c3-b45fe6d16d6c@getmailbird.com> References: <96B8768F-AF9A-43E6-81BF-B9BB1E7D1AA5@gmail.com> <0881427a-5996-4379-a5c3-b45fe6d16d6c@getmailbird.com> Message-ID: <871DB761-61DF-4914-AB83-E02A53767C9F@gmail.com> Hi Christian, Cleaning the project solves the errors, so that workaround is okay for me. These errors can also be triggered when changing the names of NodeChildren, for example in SLBinaryNode. I recently started fresh with the latest revision of Graal etc so I just set up the repo at https://github.com/renzet/TruffleRascal , but as I said I can also trigger it in SimpleLanguage. Thanks, Renze > On 7 apr. 2015, at 17:17, Christian Humer wrote: > > Hi Renze, > > Bugs may be reported here: https://bugs.openjdk.java.net/browse/graal > Alternatively we can also skip the bug system and I can directly help you here on the mailing list. > > Regarding your issue: this looks very much like a bug. Usually cleaning and rebuilding your project should lead to the same result as building your project incrementally (change a single file). Are your sources available somewhere? > > - Christian Humer >> On 07.04.2015 17:09:27, Renze Torensma wrote: >> >> Is there a place where we can file or discuss bugs? >> >> For example, when I change something in my type system all nodes that use that type system produce the error "The used type system 'truffle.types.RascalTypes' is invalid. Fix errors in the type system first.?. Changing something in the file and reverting that change and save the file fixes the problem, but doing this for all node files takes a long time and can become frustrating.. From doug.simon at oracle.com Tue Apr 7 17:34:48 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 07 Apr 2015 17:34:48 +0000 Subject: hg: graal/graal: 6 new changesets Message-ID: <201504071735.t37HZ37N007073@aojmv0008> Changeset: 56f721367c0d Author: Andreas Woess Date: 2015-04-07 02:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/56f721367c0d conditional elimination: use begin node from guard anchor instead of node to block map ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Changeset: 655e05ece0f5 Author: Doug Simon Date: 2015-04-07 12:19 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/655e05ece0f5 only force fix an unguarded JavaReadNode ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Changeset: 03b4fa99eff8 Author: Doug Simon Date: 2015-04-07 12:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/03b4fa99eff8 rename CompilerToVM.readUnsafeOop to readUncompressedOop and only use it for reading oops in VM data structures since Unsafe.getObject() can be used for other cases ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVM.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProviderImpl.java ! src/share/vm/graal/graalCompilerToVM.cpp Changeset: 617943492e00 Author: Roland Schatz Date: 2015-04-07 13:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/617943492e00 UnsafeArrayCopyNode is a MemoryAccess. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java Changeset: 7ba8fb19d56d Author: Roland Schatz Date: 2015-04-07 14:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7ba8fb19d56d Check that snippets only access locations that are either accessed by the replacee, or are private to the snippet. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastDynamicSnippets.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/LoadExceptionObjectSnippets.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.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Changeset: ca29dc4ffab0 Author: Lukas Stadler Date: 2015-04-07 17:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ca29dc4ffab0 handle ControlSinks in PEA canonicalization ! 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/GraphEffectList.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java From christian.humer at gmail.com Tue Apr 7 17:35:38 2015 From: christian.humer at gmail.com (Christian Humer) Date: Tue, 07 Apr 2015 19:35:38 +0200 Subject: Bug reports In-Reply-To: <871DB761-61DF-4914-AB83-E02A53767C9F@gmail.com> References: <96B8768F-AF9A-43E6-81BF-B9BB1E7D1AA5@gmail.com> <0881427a-5996-4379-a5c3-b45fe6d16d6c@getmailbird.com> <871DB761-61DF-4914-AB83-E02A53767C9F@gmail.com> Message-ID: <04826544-6151-40b0-8c32-cb6fe93b7465@getmailbird.com> Hi Renze, As you realized some changes are not propagated in the eclipse Java compiler properly. For example changing the type system does not automatically rebuild all nodes that use the type system. Or changing annotations in a base class does not always trigger a rebuild of derived nodes.? Since there is no API to force recompilation for other Java classes in the annotation processor API we would need to hack eclipse JDT to solve this. Its likely that a full solution to this would be rather complex and hacky. So at least for the short term we have to live with the clean and rebuild workaround. Thanks for the report. Good luck with your project. Let us know about your progress. - Christian Humer On 07.04.2015 19:12:05, Renze Torensma wrote: Hi Christian, Cleaning the project solves the errors, so that workaround is okay for me. These errors can also be triggered when changing the names of NodeChildren, for example in SLBinaryNode. I recently started fresh with the latest revision of Graal etc so I just set up the repo at?https://github.com/renzet/TruffleRascal [https://github.com/renzet/TruffleRascal],?but as I said I can also trigger it in SimpleLanguage. Thanks, Renze On 7 apr. 2015, at 17:17, Christian Humer wrote: Hi Renze, Bugs may be reported here:?https://bugs.openjdk.java.net/browse/graal [https://bugs.openjdk.java.net/browse/graal] Alternatively we can also skip the bug system and I can directly help you here on the mailing list. Regarding your issue: this looks very much like a bug. Usually cleaning and rebuilding your project should lead to the same result as building your project incrementally (change a single file). Are your sources available somewhere? - Christian Humer On 07.04.2015 17:09:27, Renze Torensma wrote: Is there a place where we can file or discuss bugs? For example, when I change something in my type system all nodes that use that type system produce the error "The used type system 'truffle.types.RascalTypes' is invalid. Fix errors in the type system first.?. Changing something in the file and reverting that change and save the file fixes the problem, but doing this for all node files takes a long time and can become frustrating.. From renzetorensma at gmail.com Tue Apr 7 17:48:19 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Tue, 7 Apr 2015 19:48:19 +0200 Subject: Use java.util.List in type system Message-ID: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> Hi, I want to implement a List datatype, but since SimpleLanguage doesn?t implement that I am a bit puzzled about how I should do it. I tried adding List.class to my type system (without the because that results in an error) and creating specializations like @Specialization public List add(List left, List right) This all compiles well, but the generated code in the src_gen folder generates an error: The method add(long, long) in the type AdditionNode is not applicable for the arguments (List, List) The add(long, long) is the first specialization of this node, my type system begins with long and List is the last type so far. I?m not sure it is possible to use generic classes in the type system, and if I use a concrete class like ArrayList instead of the List interface it results in the same error so List being an interface and not a class isn?t the problem I think. So how should I implement a list type? Am I on the right track or should I try a different approach? Renze From christian.humer at gmail.com Tue Apr 7 18:09:22 2015 From: christian.humer at gmail.com (Christian Humer) Date: Tue, 07 Apr 2015 20:09:22 +0200 Subject: Use java.util.List in type system In-Reply-To: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> References: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> Message-ID: <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> Hi, I have to admit, that support for generics in the DSL is a bit rough. So you should rather avoid using them for now (I've put proper support for generics higher on my TODO list).? I would not recommend you to use List as a type, but rather define your own list interface that is more to the point. I would also not recommend you to use ArrayList or other existing list implementations because they are not written for Truffle partial evaluation and may produce way to much code (or even worse, contain recursions). Please note that Truffle partial evaluation inlines everything until it sees a @TruffleBoundary or a virtual call.? You can get some inspiration on the array implementation of JRuby: https://github.com/jruby/jruby/blob/master/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java For your first implementation I'd suggest that you start with a simple representation that uses an object array as store. In a next step you can explore using primitive array representations to avoid boxing. Hope this helps. - Christian Humer On 07.04.2015 19:49:25, Renze Torensma wrote: Hi, I want to implement a List datatype, but since SimpleLanguage doesn?t implement that I am a bit puzzled about how I should do it. I tried adding List.class to my type system (without the because that results in an error) and creating specializations like @Specialization public List add(List left, List right) This all compiles well, but the generated code in the src_gen folder generates an error: The method add(long, long) in the type AdditionNode is not applicable for the arguments (List, List) The add(long, long) is the first specialization of this node, my type system begins with long and List is the last type so far. I?m not sure it is possible to use generic classes in the type system, and if I use a concrete class like ArrayList instead of the List interface it results in the same error so List being an interface and not a class isn?t the problem I think. So how should I implement a list type? Am I on the right track or should I try a different approach? Renze From java at stefan-marr.de Tue Apr 7 18:17:44 2015 From: java at stefan-marr.de (Stefan Marr) Date: Tue, 7 Apr 2015 20:17:44 +0200 Subject: Use java.util.List in type system In-Reply-To: <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> References: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> Message-ID: <057604A3-4657-4574-8B78-75BF7EA5D71F@stefan-marr.de> Hi Renze: > On 07 Apr 2015, at 20:09, Christian Humer wrote: > > You can get some inspiration on the array implementation of JRuby: > https://github.com/jruby/jruby/blob/master/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java Also interesting might be ZipPy?s solution: https://bitbucket.org/ssllab/zippy/src/03c969e32efd9dd6f2949f71b5a8ecd79b962741/edu.uci.python.runtime/src/edu/uci/python/runtime/sequence/?at=default Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From java at stefan-marr.de Tue Apr 7 20:39:48 2015 From: java at stefan-marr.de (Stefan Marr) Date: Tue, 7 Apr 2015 22:39:48 +0200 Subject: mx clean failing on .gitignore files Message-ID: <0DBAA1BF-798D-496B-A4E3-588905B594DA@stefan-marr.de> Hi: I had it already a couple if times the issue that `mx clean` failed with a stack trace like the one at the end of the mail. The problem is that the used shutil.rmtree() function only works for proper directories. But for clean iterates over all files likes this: `f in os.listdir(genDir):`. So, perhaps something like the patch below would be better to avoid such errors. Best regards Stefan Patch: diff --git a/mxtool/mx.py b/mxtool/mx.py index d5fbf14..6f2b6a4 100755 --- a/mxtool/mx.py +++ b/mxtool/mx.py @@ -3349,7 +3349,11 @@ def clean(args, parser=None): if genDir != '' and exists(genDir): log('Clearing {0}...'.format(genDir)) for f in os.listdir(genDir): - _rmtree(join(genDir, f)) + f_path = join(genDir, f) + if os.path.isdir(f_path): + _rmtree(f_path) + else: + _rmIfExists(f_path) outputDir = p.output_dir() Stack Trace: File "/Users/smarr/Projects/PostDoc/Truffle/graal/mx/mx_graal.py", line 170, in clean opts = mx.clean(args, parser=ArgumentParser(prog='mx clean')) File "/Users/smarr/Projects/PostDoc/Truffle/graal/mxtool/mx.py", line 3352, in clean _rmtree(join(genDir, f)) File "/Users/smarr/Projects/PostDoc/Truffle/graal/mxtool/mx.py", line 3336, in _rmtree shutil.rmtree(path) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 239, in rmtree onerror(os.listdir, path, sys.exc_info()) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 237, in rmtree names = os.listdir(path) OSError: [Errno 20] Not a directory: '../graal/graal/com.oracle.graal.compiler/src_gen/.gitignore? -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From renzetorensma at gmail.com Tue Apr 7 21:46:31 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Tue, 7 Apr 2015 23:46:31 +0200 Subject: Use java.util.List in type system In-Reply-To: <057604A3-4657-4574-8B78-75BF7EA5D71F@stefan-marr.de> References: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> <057604A3-4657-4574-8B78-75BF7EA5D71F@stefan-marr.de> Message-ID: Thanks for your suggestions! Now I know why no current implementation uses the java.util.List subclasses :) I will have a look at the implementations of jRuby and ZipPy, and I will start with a minimal version of my own List class. Renze > On 7 apr. 2015, at 20:17, Stefan Marr wrote: > > Hi Renze: > >> On 07 Apr 2015, at 20:09, Christian Humer wrote: >> >> You can get some inspiration on the array implementation of JRuby: >> https://github.com/jruby/jruby/blob/master/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java > > Also interesting might be ZipPy?s solution: > > https://bitbucket.org/ssllab/zippy/src/03c969e32efd9dd6f2949f71b5a8ecd79b962741/edu.uci.python.runtime/src/edu/uci/python/runtime/sequence/?at=default > > Best regards > Stefan > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > From renzetorensma at gmail.com Tue Apr 7 22:04:53 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Wed, 8 Apr 2015 00:04:53 +0200 Subject: Bug reports In-Reply-To: <04826544-6151-40b0-8c32-cb6fe93b7465@getmailbird.com> References: <96B8768F-AF9A-43E6-81BF-B9BB1E7D1AA5@gmail.com> <0881427a-5996-4379-a5c3-b45fe6d16d6c@getmailbird.com> <871DB761-61DF-4914-AB83-E02A53767C9F@gmail.com> <04826544-6151-40b0-8c32-cb6fe93b7465@getmailbird.com> Message-ID: Hi Christian, I understand the issue and cleaning the project isn?t a big of a deal, only downside is that a new build takes quite long because of all the project I have in my workspace.. I will keep you informed about my progress, I expect to post to the mailinglist quite often from now on because I find it very helpful (and definately better than thinking about it for hours without really making progress) Renze > On 7 apr. 2015, at 19:35, Christian Humer wrote: > > Hi Renze, > > As you realized some changes are not propagated in the eclipse Java compiler properly. For example changing the type system does not automatically rebuild all nodes that use the type system. Or changing annotations in a base class does not always trigger a rebuild of derived nodes. > > Since there is no API to force recompilation for other Java classes in the annotation processor API we would need to hack eclipse JDT to solve this. Its likely that a full solution to this would be rather complex and hacky. So at least for the short term we have to live with the clean and rebuild workaround. > > Thanks for the report. > > Good luck with your project. Let us know about your progress. > > - Christian Humer >> On 07.04.2015 19:12:05, Renze Torensma wrote: >> >> Hi Christian, >> >> Cleaning the project solves the errors, so that workaround is okay for me. These errors can also be triggered when changing the names of NodeChildren, for example in SLBinaryNode. >> >> I recently started fresh with the latest revision of Graal etc so I just set up the repo at https://github.com/renzet/TruffleRascal , but as I said I can also trigger it in SimpleLanguage. >> >> Thanks, >> Renze >> >>> On 7 apr. 2015, at 17:17, Christian Humer > wrote: >>> >>> Hi Renze, >>> >>> Bugs may be reported here: https://bugs.openjdk.java.net/browse/graal >>> Alternatively we can also skip the bug system and I can directly help you here on the mailing list. >>> >>> Regarding your issue: this looks very much like a bug. Usually cleaning and rebuilding your project should lead to the same result as building your project incrementally (change a single file). Are your sources available somewhere? >>> >>> - Christian Humer >>>> On 07.04.2015 17:09:27, Renze Torensma > wrote: >>>> >>>> Is there a place where we can file or discuss bugs? >>>> >>>> For example, when I change something in my type system all nodes that use that type system produce the error "The used type system 'truffle.types.RascalTypes' is invalid. Fix errors in the type system first.?. Changing something in the file and reverting that change and save the file fixes the problem, but doing this for all node files takes a long time and can become frustrating.. >> From christian.wimmer at oracle.com Tue Apr 7 22:30:17 2015 From: christian.wimmer at oracle.com (Christian Wimmer) Date: Tue, 07 Apr 2015 15:30:17 -0700 Subject: Bug reports In-Reply-To: References: <96B8768F-AF9A-43E6-81BF-B9BB1E7D1AA5@gmail.com> <0881427a-5996-4379-a5c3-b45fe6d16d6c@getmailbird.com> <871DB761-61DF-4914-AB83-E02A53767C9F@gmail.com> <04826544-6151-40b0-8c32-cb6fe93b7465@getmailbird.com> Message-ID: <55245A79.7000007@oracle.com> There are a few workarounds in Eclipse that allows you to avoid a full rebuild most of the times (but not always): * Delete the src_gen folder of your project from within Eclipse, i.e., the folder that contains the files generated by the annotation processor. Eclipse immediately runs a build to regenerate these files. * Clean just the affected project in Eclipse. -Christian On 04/07/2015 03:04 PM, Renze Torensma wrote: > Hi Christian, > > I understand the issue and cleaning the project isn?t a big of a deal, only downside is that a new build takes quite long because of all the project I have in my workspace.. > > I will keep you informed about my progress, I expect to post to the mailinglist quite often from now on because I find it very helpful (and definately better than thinking about it for hours without really making progress) > > Renze > >> On 7 apr. 2015, at 19:35, Christian Humer wrote: >> >> Hi Renze, >> >> As you realized some changes are not propagated in the eclipse Java compiler properly. For example changing the type system does not automatically rebuild all nodes that use the type system. Or changing annotations in a base class does not always trigger a rebuild of derived nodes. >> >> Since there is no API to force recompilation for other Java classes in the annotation processor API we would need to hack eclipse JDT to solve this. Its likely that a full solution to this would be rather complex and hacky. So at least for the short term we have to live with the clean and rebuild workaround. >> >> Thanks for the report. >> >> Good luck with your project. Let us know about your progress. >> >> - Christian Humer >>> On 07.04.2015 19:12:05, Renze Torensma wrote: >>> >>> Hi Christian, >>> >>> Cleaning the project solves the errors, so that workaround is okay for me. These errors can also be triggered when changing the names of NodeChildren, for example in SLBinaryNode. >>> >>> I recently started fresh with the latest revision of Graal etc so I just set up the repo at https://github.com/renzet/TruffleRascal , but as I said I can also trigger it in SimpleLanguage. >>> >>> Thanks, >>> Renze >>> >>>> On 7 apr. 2015, at 17:17, Christian Humer > wrote: >>>> >>>> Hi Renze, >>>> >>>> Bugs may be reported here: https://bugs.openjdk.java.net/browse/graal >>>> Alternatively we can also skip the bug system and I can directly help you here on the mailing list. >>>> >>>> Regarding your issue: this looks very much like a bug. Usually cleaning and rebuilding your project should lead to the same result as building your project incrementally (change a single file). Are your sources available somewhere? >>>> >>>> - Christian Humer >>>>> On 07.04.2015 17:09:27, Renze Torensma > wrote: >>>>> >>>>> Is there a place where we can file or discuss bugs? >>>>> >>>>> For example, when I change something in my type system all nodes that use that type system produce the error "The used type system 'truffle.types.RascalTypes' is invalid. Fix errors in the type system first.?. Changing something in the file and reverting that change and save the file fixes the problem, but doing this for all node files takes a long time and can become frustrating.. >>> > From renzetorensma at gmail.com Wed Apr 8 20:03:30 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Wed, 8 Apr 2015 22:03:30 +0200 Subject: Use java.util.List in type system In-Reply-To: References: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> <057604A3-4657-4574-8B78-75BF7EA5D71F@stefan-marr.de> Message-ID: <56342B49-74F1-4F78-B486-6DEE9529E9FE@gmail.com> Hi Christian, I created a basic List interface so I can swap the current basic implementation for a more optimized one later on without changing the type system and execute functions. Is this considered good practice in Truffle or should I just use the implementation class? And you noted that Truffle inlines everything until it sees a virtual call, so if I understand correctly using the List interface in the type system creates virtual calls when methods on those List interface are called? For example, in ?@Specialization concat(List a, List b) { a.add(b); }" a and b would actually be of class BasicList but specified with interface List, so the add method would be a virtual call and stop inlining even though it should be inlined? Also all logic of the list operations like concatenation and insertion is implemented in the BasicList class that implements the List interface, and the addition node simply calls the concat method of the list interface to do the work for it. But Chris Seaton advised me to not implement logic in the type classes like I did now but in the node classes where the operation is specialized (see http://mail.openjdk.java.net/pipermail/graal-dev/2015-April/003015.html ). If I apply his advise I think I should limit the List interface to getting and putting objects and use those methods to implement the concat and other operations in the node classes directly? Sorry for the long post, Renze > On 7 apr. 2015, at 23:46, Renze Torensma wrote: > > Thanks for your suggestions! Now I know why no current implementation uses the java.util.List subclasses :) > > I will have a look at the implementations of jRuby and ZipPy, and I will start with a minimal version of my own List class. > > Renze >> On 7 apr. 2015, at 20:17, Stefan Marr wrote: >> >> Hi Renze: >> >>> On 07 Apr 2015, at 20:09, Christian Humer wrote: >>> >>> You can get some inspiration on the array implementation of JRuby: >>> https://github.com/jruby/jruby/blob/master/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java >> >> Also interesting might be ZipPy?s solution: >> >> https://bitbucket.org/ssllab/zippy/src/03c969e32efd9dd6f2949f71b5a8ecd79b962741/edu.uci.python.runtime/src/edu/uci/python/runtime/sequence/?at=default >> >> Best regards >> Stefan >> >> -- >> Stefan Marr >> INRIA Lille - Nord Europe >> http://stefan-marr.de/research/ >> >> >> > From christian.humer at gmail.com Wed Apr 8 21:53:32 2015 From: christian.humer at gmail.com (Christian Humer) Date: Wed, 08 Apr 2015 23:53:32 +0200 Subject: Use java.util.List in type system In-Reply-To: <56342B49-74F1-4F78-B486-6DEE9529E9FE@gmail.com> References: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> <057604A3-4657-4574-8B78-75BF7EA5D71F@stefan-marr.de> <56342B49-74F1-4F78-B486-6DEE9529E9FE@gmail.com> Message-ID: <5af713e9-992e-4e47-bfc7-ec889fd74140@getmailbird.com> Hi Renze, I created a basic List interface so I can swap the current basic implementation for a more optimized one later on without changing the type system and execute functions.? Is this considered good practice in Truffle or should I just use the implementation class? And you noted that Truffle inlines everything until it sees a virtual call, so if I understand correctly using the List interface in the type system creates virtual calls when methods on those List interface are called? For example, in ?@Specialization concat(List a, List b) { a.add(b); }" a and b would actually be of class BasicList but specified with interface List, so the add method would be a virtual call and stop inlining even though it should be inlined?? That's exactly where you should add a type profile in order to ensure that the class of a and b is known to the compiler. If you leave it as it is now it might also work because there is just one implementation of List loaded at runtime. Also there are automatic type profiles on CallTarget arguments but this are things you should normally not depend on too much. For a quick solution you could add some type profiles for all specializations of the operation like this private final ValueProfile aProfile = ValueProfile.createClassProfile(); private final ValueProfile bProfile = ValueProfile.createClassProfile(); @Specialization List concat(List a, List b) { return aProfile.profile(a).add(bProfile.profile(b)); } Or using the @Cached annotation just for one specialization like this: @Specialization List concat(List a, List b,? @Cached("createClassProfile()") ValueProfile aProfile,? @Cached("createClassProfile()") ValueProfile bProfile) { return aProfile.profile(a).add(bProfile.profile(b)); } I can recommend you to have a look at the ExactClassValueProfile class which implements the ValueProfile you are using here. Its interesting to see that these profiles just use low-level Truffle API. It basically just injects the constant type information into the value using Class#cast. You might also want to think of adding type profiles to your variable reads and global lookups. If this is a good idea depends on the guest language you are implementing and how many types and specialized types are flowing through the interpreter. As you go further along with your array operations you might have several specialized data types that implement List. For instance one version that uses an int[] as backing store another that uses an Object[]. This way its likely that you hit the case where having just one type profile is not good enough because the operation is polymorphic. To be fast even in these cases you can implement a type cache that looks roughly like this: ? ? ? ?@Specialization(limit = "3", guards = {"a.getClass() == aClass", "b.getClass() == bClass"}) ? ? ? ? public Object doCached(List a, List b,? ? ? ? ? ? ? ? ? ? ? ? ? @Cached("a.getClass()") Class aClass,? ? ? ? ? ? ? ? ? ? ? ? ? @Cached("b.getClass()") Class bClass) { ? ? ? ? ? ? return aClass.cast(a).add(bClass.cast(b)); ? ? ? ? } ? ? ? ? @Specialization(contains = "doCached") ? ? ? ? public Object doGeneric(List a, List b) { ? ? ? ? ? ? // might produce a virtual call ? ? ? ? ? ? return a.add(b); ? ? ? ? } This operation caches for 3 combinations of classes that might occur at this place in the guest language. To avoid generating code for all possible combinations of types the node rewrites to the doGeneric specialization as soon as the limit of 3 instantiations of the doCached specialization is reached (specified by contains="doCached" and limit ="3"). Please also see the javadoc of @Cached for further details. I'd like to add that you can also use these kind of type caches in a generic way by passing in a node that implements your operation from the outside or alternatively create it dynamically using the @Cached annotation again.? Also all logic of the list operations like concatenation and insertion is implemented in the BasicList class that implements the List interface, and the addition node simply calls? the concat method of the list interface to do the work for it. But Chris Seaton advised me to not implement logic in the type classes like I did now but in the node classes? where the operation is specialized (see http://mail.openjdk.java.net/pipermail/graal-dev/2015-April/003015.html?). If I apply his advise I think I should limit the List interface? to getting and putting objects and use those methods to implement the concat and other operations in the node classes directly?? The main problem with implementing everything in the BasicList class is that you can only store runtime feedback in nodes. Storing runtime feedback (like type profiles or caches) is an essential capability when dealing with complex operations. You have two options here. Either you always pass the runtime feedback into your list methods or you implement your operations inside of nodes. The first option has the advantage that you can implement your operation in the implementation class and hide the details from your nodes (although the runtime profile you have to pass could be seen as an implementation detail). I would recommend this option for the basic primitive operations of your list, those which are essential to hide the inner workings of your datastructure like random access set or get. The second option gives you the full power to express specializations with Truffle. ?Be careful not to duplicate your logic over multiple nodes and reuse your Nodes as much as possible just like methods. Hope this helps. - Christian Humer On 08.04.2015 22:05:14, Renze Torensma wrote: Hi Christian, I created a basic List interface so I can swap the current basic implementation for a more optimized one later on without changing the type system and execute functions. Is this considered good practice in Truffle or should I just use the implementation class? And you noted that Truffle inlines everything until it sees a virtual call, so if I understand correctly using the List interface in the type system creates virtual calls when methods on those List interface are called? For example, in ?@Specialization concat(List a, List b) { a.add(b); }" a and b would actually be of class BasicList but specified with interface List, so the add method would be a virtual call and stop inlining even though it should be inlined? Also all logic of the list operations like concatenation and insertion is implemented in the BasicList class that implements the List interface, and the addition node simply calls the concat method of the list interface to do the work for it. But Chris Seaton advised me to not implement logic in the type classes like I did now but in the node classes where the operation is specialized (see http://mail.openjdk.java.net/pipermail/graal-dev/2015-April/003015.html ). If I apply his advise I think I should limit the List interface to getting and putting objects and use those methods to implement the concat and other operations in the node classes directly? Sorry for the long post, Renze > On 7 apr. 2015, at 23:46, Renze Torensma wrote: > > Thanks for your suggestions! Now I know why no current implementation uses the java.util.List subclasses :) > > I will have a look at the implementations of jRuby and ZipPy, and I will start with a minimal version of my own List class. > > Renze >> On 7 apr. 2015, at 20:17, Stefan Marr wrote: >> >> Hi Renze: >> >>> On 07 Apr 2015, at 20:09, Christian Humer wrote: >>> >>> You can get some inspiration on the array implementation of JRuby: >>> https://github.com/jruby/jruby/blob/master/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java >> >> Also interesting might be ZipPy?s solution: >> >> https://bitbucket.org/ssllab/zippy/src/03c969e32efd9dd6f2949f71b5a8ecd79b962741/edu.uci.python.runtime/src/edu/uci/python/runtime/sequence/?at=default >> >> Best regards >> Stefan >> >> -- >> Stefan Marr >> INRIA Lille - Nord Europe >> http://stefan-marr.de/research/ >> >> >> > From doug.simon at oracle.com Thu Apr 9 01:00:22 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 09 Apr 2015 01:00:22 +0000 Subject: hg: graal/graal: 641 new changesets Message-ID: <201504090100.t3910R6N011659@aojmv0008> Changeset: 2c6fb59b484f Author: Roland Schatz Date: 2015-04-08 11:29 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2c6fb59b484f Ensure ControlSinkNodes are added to the graph in PartialEscapeClosure. ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/GraphEffectList.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Changeset: 8dec9eea3186 Author: Gilles Duboscq Date: 2015-04-07 11:19 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8dec9eea3186 mx: Avoid listing directories that do not exist while looking for JDKs ! mxtool/mx.py Changeset: c5ae0424f822 Author: Gilles Duboscq Date: 2015-04-07 11:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c5ae0424f822 Move special arithemtic nodes from graal.truffle to graal and use them to inrinsify some of the JDK8 Math methods ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerAddExactNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerAddExactSplitNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerExactArithmeticNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerExactArithmeticSplitNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulExactNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulExactSplitNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulHighNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerSubExactNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerSubExactSplitNode.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/UnsignedMulHighNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java ! mx/suite.py Changeset: 9dc78dc645e5 Author: Gilles Duboscq Date: 2015-04-02 14:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9dc78dc645e5 Integer exact arithmetic: make sure non-exact stamp logic is not used ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerAddExactNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerMulExactNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/arithmetic/IntegerSubExactNode.java Changeset: 84105dcdb05b Author: Gilles Duboscq Date: 2015-04-07 11:20 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/84105dcdb05b Add some Math exact tests + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/lang/Math_exact.java Changeset: b67a3f81b630 Author: coffeys Date: 2014-06-27 11:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b67a3f81b630 Added tag jdk8u40-b00 for changeset 4828415ebbf1 ! .hgtags Changeset: 0be2b9eb0a62 Author: amurillo Date: 2014-06-20 12:39 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0be2b9eb0a62 8047732: new hotspot build - hs25.20-b21 Reviewed-by: jcoomes ! make/hotspot_version Changeset: fc25d8f6c466 Author: coleenp Date: 2014-06-20 10:48 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/fc25d8f6c466 8039150: host_klass invariant fails when verifying newly loaded JSR-292 anonymous classes Summary: Initialize host_klass while parsing the class with the other initializations. Reviewed-by: sspitsyn, stefank ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/systemDictionary.cpp Changeset: fcef32387025 Author: coleenp Date: 2014-06-21 01:56 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/fcef32387025 Merge Changeset: 5d855d021755 Author: amurillo Date: 2014-06-25 15:51 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5d855d021755 8048141: Update the Hotspot version numbers in Hotspot for JDK 8u40 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 0982ec23da03 Author: brutisso Date: 2014-06-19 13:31 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0982ec23da03 8043607: Add a GC id as a log decoration similar to PrintGCTimeStamps Reviewed-by: jwilhelm, ehelin, tschatzl ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/g1/vm_operations_g1.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp + src/share/vm/gc_implementation/shared/gcId.cpp + src/share/vm/gc_implementation/shared/gcId.hpp ! src/share/vm/gc_implementation/shared/gcTrace.cpp ! src/share/vm/gc_implementation/shared/gcTrace.hpp ! src/share/vm/gc_implementation/shared/gcTraceSend.cpp ! src/share/vm/gc_implementation/shared/gcTraceTime.cpp ! src/share/vm/gc_implementation/shared/gcTraceTime.hpp ! src/share/vm/gc_implementation/shared/objectCountEventSender.cpp ! src/share/vm/gc_interface/collectedHeap.cpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/referenceProcessor.cpp ! src/share/vm/memory/referenceProcessor.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/utilities/ostream.cpp ! src/share/vm/utilities/ostream.hpp + test/gc/logging/TestGCId.java Changeset: fd81a5764900 Author: pliden Date: 2014-06-23 16:43 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/fd81a5764900 8046231: G1: Code root location ... from nmethod ... not in strong code roots for region Reviewed-by: tschatzl, ehelin ! src/share/vm/code/nmethod.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: 581e70386ec9 Author: pliden Date: 2014-04-11 12:29 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/581e70386ec9 8039147: Cleanup SuspendibleThreadSet Reviewed-by: brutisso, tschatzl, mgerdin ! src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp ! src/share/vm/gc_implementation/g1/concurrentG1RefineThread.hpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp ! src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1StringDedupThread.cpp ! src/share/vm/gc_implementation/shared/concurrentGCThread.cpp ! src/share/vm/gc_implementation/shared/concurrentGCThread.hpp + src/share/vm/gc_implementation/shared/suspendibleThreadSet.cpp + src/share/vm/gc_implementation/shared/suspendibleThreadSet.hpp ! src/share/vm/runtime/mutexLocker.cpp ! src/share/vm/runtime/mutexLocker.hpp ! src/share/vm/runtime/safepoint.cpp Changeset: bc61effc5298 Author: mgronlun Date: 2014-07-01 10:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bc61effc5298 8047812: Ensure ClassLoaderDataGraph::classes_unloading_do only delivers klasses from CLDs with non-reclaimed class loader oops Reviewed-by: coleenp, sspitsyn, ehelin ! src/share/vm/classfile/classLoaderData.cpp ! src/share/vm/classfile/classLoaderData.hpp Changeset: a0ea36509b7b Author: mikael Date: 2014-06-16 16:27 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a0ea36509b7b 8046769: Set T family feature bit on Niagara systems Reviewed-by: kvn, iveresov ! src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp Changeset: 418bb2c2b55a Author: brutisso Date: 2014-07-07 14:44 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/418bb2c2b55a 8049327: [TESTBUG] gc/logging/TestGCId.java assumes default PrintGCID value is true Reviewed-by: ehelin, tschatzl ! test/gc/logging/TestGCId.java Changeset: c8dd4f65cc76 Author: roland Date: 2014-07-02 22:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c8dd4f65cc76 8046542: [I.finalize() calls from methods compiled by C1 do not cause IllegalAccessError on Sparc Summary: call to Object.finalize() sometimes allowed by compilers on array type Reviewed-by: iveresov, vlivanov ! src/share/vm/c1/c1_GraphBuilder.cpp ! src/share/vm/opto/callGenerator.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/doCall.cpp Changeset: ce8f6bb717c9 Author: goetz Date: 2014-04-29 15:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ce8f6bb717c9 8042195: Introduce umbrella header orderAccess.inline.hpp. Reviewed-by: dholmes, kvn, stefank, twisti ! src/cpu/zero/vm/cppInterpreter_zero.cpp ! src/os/aix/vm/os_aix.cpp ! src/os/aix/vm/os_aix.inline.hpp ! src/os/aix/vm/thread_aix.inline.hpp ! src/os/bsd/vm/os_bsd.cpp ! src/os/bsd/vm/os_bsd.inline.hpp ! src/os/bsd/vm/thread_bsd.inline.hpp ! src/os/linux/vm/os_linux.cpp ! src/os/linux/vm/os_linux.inline.hpp ! src/os/linux/vm/thread_linux.inline.hpp ! src/os/solaris/vm/os_solaris.cpp ! src/os/solaris/vm/os_solaris.inline.hpp ! src/os/solaris/vm/thread_solaris.inline.hpp ! src/os/windows/vm/os_windows.cpp ! src/os/windows/vm/os_windows.inline.hpp ! src/os/windows/vm/thread_windows.inline.hpp ! src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp ! src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/g1/g1AllocRegion.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp ! src/share/vm/interpreter/bytecodeInterpreter.cpp ! src/share/vm/memory/gcLocker.cpp ! src/share/vm/memory/metaspace.cpp ! src/share/vm/memory/space.cpp ! src/share/vm/oops/cpCache.cpp ! src/share/vm/oops/cpCache.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/method.cpp ! src/share/vm/oops/methodData.cpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/oops/typeArrayKlass.cpp ! src/share/vm/oops/typeArrayOop.hpp ! src/share/vm/precompiled/precompiled.hpp ! src/share/vm/prims/forte.cpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jniCheck.cpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/jvmtiEnvBase.cpp ! src/share/vm/prims/jvmtiExport.cpp ! src/share/vm/prims/jvmtiRawMonitor.cpp ! src/share/vm/prims/jvmtiThreadState.inline.hpp ! src/share/vm/prims/unsafe.cpp ! src/share/vm/runtime/fprofiler.cpp ! src/share/vm/runtime/interfaceSupport.cpp ! src/share/vm/runtime/javaFrameAnchor.hpp ! src/share/vm/runtime/mutex.cpp ! src/share/vm/runtime/objectMonitor.cpp + src/share/vm/runtime/orderAccess.inline.hpp ! src/share/vm/runtime/perfMemory.cpp ! src/share/vm/runtime/safepoint.cpp ! src/share/vm/runtime/sweeper.cpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp ! src/share/vm/runtime/thread.inline.hpp ! src/share/vm/services/management.cpp ! src/share/vm/services/memTracker.cpp ! src/share/vm/services/memoryManager.cpp ! src/share/vm/services/memoryPool.cpp ! src/share/vm/services/threadService.cpp ! src/share/vm/utilities/array.hpp ! src/share/vm/utilities/hashtable.inline.hpp ! src/share/vm/utilities/taskqueue.hpp ! src/share/vm/utilities/vmError.cpp Changeset: c49dcaf78a65 Author: goetz Date: 2014-05-08 15:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c49dcaf78a65 8042737: Introduce umbrella header prefetch.inline.hpp Reviewed-by: twisti, stefank ! src/os/aix/vm/thread_aix.inline.hpp ! src/os/bsd/vm/thread_bsd.inline.hpp ! src/os/linux/vm/thread_linux.inline.hpp ! src/os/solaris/vm/thread_solaris.inline.hpp ! src/os/windows/vm/thread_windows.inline.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp ! src/share/vm/memory/space.inline.hpp ! src/share/vm/oops/klass.hpp ! src/share/vm/precompiled/precompiled.hpp ! src/share/vm/prims/unsafe.cpp + src/share/vm/runtime/prefetch.inline.hpp Changeset: 5fbeae2a02d3 Author: vlivanov Date: 2014-07-10 12:04 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5fbeae2a02d3 8043546: C1 optimizes @Stable instance fields with default values Reviewed-by: kvn, jrose ! src/share/vm/c1/c1_GraphBuilder.cpp + test/compiler/stable/StableConfiguration.java ! test/compiler/stable/TestStableBoolean.java ! test/compiler/stable/TestStableByte.java ! test/compiler/stable/TestStableChar.java ! test/compiler/stable/TestStableDouble.java ! test/compiler/stable/TestStableFloat.java ! test/compiler/stable/TestStableInt.java ! test/compiler/stable/TestStableLong.java ! test/compiler/stable/TestStableObject.java ! test/compiler/stable/TestStableShort.java Changeset: d952af8cf67d Author: amurillo Date: 2014-07-11 00:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d952af8cf67d Merge Changeset: c55d012dd067 Author: amurillo Date: 2014-07-11 00:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c55d012dd067 Added tag hs25.40-b01 for changeset d952af8cf67d ! .hgtags Changeset: 637e659fb097 Author: mikael Date: 2014-05-12 06:17 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/637e659fb097 8042804: Support invoking Hotspot tests from top level Reviewed-by: sla, erikj ! test/Makefile Changeset: 4ca77b815015 Author: amurillo Date: 2014-07-16 16:45 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/4ca77b815015 Merge Changeset: d22136881b85 Author: robm Date: 2014-07-17 18:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d22136881b85 Merge ! .hgtags ! make/hotspot_version ! src/os/bsd/vm/os_bsd.cpp ! src/os/linux/vm/os_linux.cpp ! src/os/solaris/vm/os_solaris.cpp ! src/os/windows/vm/os_windows.cpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/utilities/vmError.cpp Changeset: e248acd6cfcf Author: simonis Date: 2014-07-18 19:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e248acd6cfcf 8051378: AIX: Change "8030763: Validate global memory allocation" breaks the HotSpot build Reviewed-by: kvn ! src/os/aix/vm/os_aix.cpp Changeset: 1cddf026d2cc Author: zgu Date: 2014-07-18 11:14 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1cddf026d2cc 8050165: linux-sparcv9: NMT detail causes assert((intptr_t*)younger_sp[FP->sp_offset_in_saved_window()] == (intptr_t*)((intptr_t)sp - STACK_BIAS)) failed: younger_sp must be valid Summary: Fixed native memory tracking stack walking Reviewed-by: coleenp, mikael ! src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Changeset: fbc0575cc9e4 Author: zgu Date: 2014-07-21 06:00 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fbc0575cc9e4 8050167: linux-sparcv9: hs_err file does not show any stack information Summary: Fixed creation of starting stack frame for stack walking in error handler Reviewed-by: coleenp, mikael ! src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Changeset: 4aabe6c45b56 Author: jeff Date: 2014-07-21 21:46 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/4aabe6c45b56 8051005: Third Party License Readme update for 8u20 Reviewed-by: coffeys ! THIRD_PARTY_README Changeset: c48151572b21 Author: amurillo Date: 2014-07-11 00:25 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c48151572b21 8049916: new hotspot build - hs25.40-b02 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 3a62cd59c8d8 Author: jcoomes Date: 2014-05-20 10:04 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3a62cd59c8d8 8042255: make gc src file exclusion more automatic Reviewed-by: brutisso, stefank, dholmes, rdurbin ! make/excludeSrc.make Changeset: 82693fb204a5 Author: tschatzl Date: 2014-04-16 10:14 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/82693fb204a5 8038930: G1CodeRootSet::test fails with assert(_num_chunks_handed_out == 0) failed: No elements must have been handed out yet Summary: The test incorrectly assumed that it had been started with no other previous compilation activity. Fix this by allowing multiple code root free chunk lists, and use one separate from the global one to perform the test. Reviewed-by: brutisso ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.cpp ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Changeset: d7e2d5f2846b Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d7e2d5f2846b 8027553: Change the in_cset_fast_test functionality to use the G1BiasedArray abstraction Summary: Instead of using a manually managed array for the in_cset_fast_test array, use a G1BiasedArray instance. Reviewed-by: brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp Changeset: ff7b317d2af8 Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ff7b317d2af8 8037344: Use the "next" field to iterate over fine remembered instead of using the hash table Summary: After changes to the PerRegionTable where all these PRTs are linked together in an additional field, simplify iterating over all PRTs by using these links instead of walki Reviewed-by: mgerdin, jwilhelm, brutisso ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Changeset: 8cc89a893545 Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8cc89a893545 8039596: Remove HeapRegionRemSet::clear_incoming_entry Summary: The mentioned method is never used and out of date. So it is removed. Reviewed-by: mgerdin, brutisso ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Changeset: 983092f35ff7 Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/983092f35ff7 8028710: G1 does not retire allocation buffers after reference processing work Summary: G1 does not retire allocation buffers after reference processing work when -XX:+ParallelRefProcEnabled is enabled. This causes wrong calculation of PLAB sizes, as the amount of space wasted is not updated correctly. Reviewed-by: brutisso ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp Changeset: 570cb6369f17 Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/570cb6369f17 8019342: G1: High "Other" time most likely due to card redirtying Summary: Parallelize card redirtying to decrease the time it takes. Reviewed-by: brutisso ! src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp ! src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp ! src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp ! src/share/vm/gc_implementation/g1/concurrentG1RefineThread.hpp ! src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp ! src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.hpp ! test/gc/g1/TestGCLogMessages.java Changeset: 6b52700a896b Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6b52700a896b 8040002: Clean up code and code duplication in re-diryting cards for verification Summary: Card re-dirtying code for verification and actual redirtying uses two different, almost completely identical card closures. Also the verification code still assumes a perm gen. Reviewed-by: brutisso, jmasa ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: 828056cf311f Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/828056cf311f 8040792: G1: Memory usage calculation uses sizeof(this) instead of sizeof(classname) Summary: A few locations in the code use sizeof(this) which returns the size of the pointer instead of sizeof(classname) which returns the size of the sum of its members. This change fixes these errors and adds a few tests. Reviewed-by: mgerdin, brutisso ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.cpp ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp ! src/share/vm/gc_implementation/g1/sparsePRT.cpp Changeset: f40816c5e359 Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f40816c5e359 8026784: Error message in AdaptiveFreeList::verify_stats is wrong Summary: Changed faulty error message in the verification code Reviewed-by: stefank, tschatzl Contributed-by: Andreas Sjoberg ! src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp Changeset: d15367d92f0d Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d15367d92f0d 8043723: max_heap_for_compressed_oops() declared with size_t, but defined with uintx Summary: The mismatch in declaration and definition has been encountered when compiling on a platform where the sizes are different. Change the method definition to match the declaration. Reviewed-by: tschatzl, sjohanss Contributed-by: Dan Horak ! src/share/vm/runtime/arguments.cpp Changeset: ab5fbf410512 Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ab5fbf410512 8043722: Swapped usage of idx_t and bm_word_t types in parMarkBitMap.cpp Summary: Clean up usage of idx_t and uintptr_t when using it in conjunction with BitMap::set_map(), casting to the appropriate type. Fixes compilation on S390. Reviewed-by: tschatzl Contributed-by: Dan Horak ! src/share/vm/compiler/methodLiveness.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp Changeset: 0abcece2ee27 Author: tschatzl Date: 2014-07-21 09:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0abcece2ee27 8026847: [TESTBUG] gc/g1/TestSummarizeRSetStats* tests launch 32bit jvm with UseCompressedOops Summary: The test launched a 32 bit VM with UseCompressedOops enabled. This is not supported on 32 bit VMs, causing a test failure. Investigation showed that the use of this flag is not required at all, so simply remove it. Reviewed-by: tschatzl, jwilhelm Contributed-by: Andrey Zakharov ! test/gc/g1/TestSummarizeRSetStatsTools.java Changeset: b0c374311c4e Author: tschatzl Date: 2014-07-21 09:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b0c374311c4e 8035400: Move G1ParScanThreadState into its own files Summary: Extract the G1ParScanThreadState class from G1CollectedHeap.?pp into its own files. Reviewed-by: brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1OopClosures.cpp ! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp + src/share/vm/gc_implementation/g1/g1ParScanThreadState.cpp + src/share/vm/gc_implementation/g1/g1ParScanThreadState.hpp + src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp Changeset: a2328cbebb23 Author: tschatzl Date: 2014-07-21 09:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a2328cbebb23 8035401: Fix visibility of G1ParScanThreadState members Summary: After JDK-8035400 there were several opportunities to fix the visibility of several members of the G1ParScanThreadState class. Reviewed-by: brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.cpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.hpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp Changeset: cd43876f692e Author: tschatzl Date: 2014-07-21 09:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/cd43876f692e 8040977: G1 crashes when run with -XX:-G1DeferredRSUpdate Summary: When G1 is run with -XX:-G1DeferredRSUpdate, the VM crashes because of wrong initialization order of member variables. The change makes the initalization explicit, not relying on initialization order any more. Reviewed-by: brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1OopClosures.cpp ! src/share/vm/gc_implementation/g1/g1OopClosures.hpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.cpp + test/gc/g1/TestDeferredRSUpdate.java Changeset: 6ad19ab94176 Author: morris Date: 2014-07-22 07:35 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6ad19ab94176 8050229: Uninitialised memory in hotspot/src/share/vm/compiler/oopMap.cpp Summary: Parfait refactoring in OopMapSet::update_register_map Reviewed-by: kvn, twisti ! src/share/vm/compiler/oopMap.cpp Changeset: 63e0c47ca943 Author: mdoerr Date: 2014-07-17 10:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/63e0c47ca943 8050972: Concurrency problem in PcDesc cache Summary: The entries of the PcDesc cache in nmethods are not declared as volatile, but they are accessed and modified by several threads concurrently. Reviewed-by: kvn, dholmes, dcubed ! src/share/vm/code/nmethod.hpp Changeset: f72d8917322a Author: goetz Date: 2014-07-18 09:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f72d8917322a 8050978: Fix bad field access check in C1 and C2 Summary: JCK8 test vm/constantpool/accessControl/accessControl004/accessControl00402m3/accessControl00402m3.html fails with -Xbatch -Xcomp due to bad field access check in C1 and C2. Fix: In ciField::ciField(), just before the canonical holder is stored into the _holder variable (and which is used by ciField::will_link()) perform an additional access check with the holder declared in the class file. If this check fails, store the declared holder instead and ciField::will_link() will bail out compilation for this field later on. Then, the interpreter will throw an PrivilegedAccessException at runtime. Reviewed-by: kvn, vlivanov Contributed-by: andreas.schoesser at sap.com ! src/share/vm/ci/ciField.cpp Changeset: 55fbdf0799ae Author: drchase Date: 2014-03-11 13:38 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/55fbdf0799ae 8028037: [parfait] warnings from b114 for hotspot.src.share.vm Summary: Insert null check for one warning; other warning handled in parfait config Reviewed-by: kvn ! src/share/vm/opto/multnode.cpp Changeset: f619b069f2ca Author: drchase Date: 2014-07-24 18:46 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/f619b069f2ca Merge Changeset: f0afba33c928 Author: amurillo Date: 2014-07-25 10:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f0afba33c928 Merge ! make/hotspot_version Changeset: 872e9c4548bf Author: amurillo Date: 2014-07-25 10:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/872e9c4548bf Added tag hs25.40-b02 for changeset f0afba33c928 ! .hgtags Changeset: b69c268f95b7 Author: amurillo Date: 2014-07-25 10:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b69c268f95b7 8051910: new hotspot build - hs25.40-b03 Reviewed-by: jcoomes ! make/hotspot_version Changeset: fd94cbe7c5da Author: kevinw Date: 2014-07-21 10:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fd94cbe7c5da 8049684: pstack crashes on java core dump Reviewed-by: sundar, sspitsyn ! src/os/bsd/dtrace/libjvm_db.c ! src/os/solaris/dtrace/libjvm_db.c Changeset: 80dd07540dde Author: egahlin Date: 2014-06-25 21:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/80dd07540dde 8046783: Add hidden field to methods for event based tracing Reviewed-by: sla, mgronlun ! src/share/vm/trace/tracetypes.xml Changeset: 6e1f418b39c3 Author: jmasa Date: 2014-05-11 16:35 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6e1f418b39c3 8038928: gc/g1/TestGCLogMessages.java fail with "[Evacuation Failure' Reviewed-by: ysr, brutisso, tschatzl ! test/gc/g1/TestGCLogMessages.java Changeset: 99dbb9cd9521 Author: jwilhelm Date: 2014-07-28 20:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/99dbb9cd9521 8046715: Add a way to verify an extended set of command line options Summary: Added arguments_ext.cpp to make place for initialization of extended features Reviewed-by: sla, mgronlun ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp + src/share/vm/runtime/arguments_ext.cpp Changeset: e2976043eac3 Author: dfazunen Date: 2014-05-20 18:25 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/e2976043eac3 8039489: Refactor test framework for dynamic VM options Reviewed-by: jmasa, ehelin, jwilhelm ! test/gc/arguments/TestDynMaxHeapFreeRatio.java ! test/gc/arguments/TestDynMinHeapFreeRatio.java + test/testlibrary/com/oracle/java/testlibrary/DynamicVMOption.java - test/testlibrary/com/oracle/java/testlibrary/DynamicVMOptionChecker.java - test/testlibrary/com/oracle/java/testlibrary/TestDynamicVMOption.java Changeset: 5c633530172d Author: amurillo Date: 2014-08-01 11:17 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5c633530172d Added tag hs25.40-b03 for changeset e2976043eac3 ! .hgtags Changeset: eee19efa6c0f Author: amurillo Date: 2014-08-01 11:23 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/eee19efa6c0f 8054159: new hotspot build - hs25.40-b04 Reviewed-by: jcoomes ! make/hotspot_version Changeset: bcd72ab4d91f Author: jmasa Date: 2014-01-16 13:25 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/bcd72ab4d91f 8024366: Make UseNUMA enable UseNUMAInterleaving Reviewed-by: mgerdin Contributed-by: shrinivas.joshi at oracle.com ! src/share/vm/runtime/arguments.cpp Changeset: d14a18794c90 Author: hseigel Date: 2014-08-02 16:28 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/d14a18794c90 8051012: Regression in verifier for method call from inside of a branch Summary: Fix stackmap matching for branches. Reviewed-by: coleenp, lfoltan, acorn ! src/share/vm/classfile/stackMapTable.cpp ! src/share/vm/classfile/stackMapTable.hpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/classfile/verifier.hpp Changeset: e0c6fadce66e Author: kvn Date: 2014-07-29 13:40 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e0c6fadce66e 8049252: VerifyStack logic in Deoptimization::unpack_frames does not expect to see invoke bc at the top frame during normal deoptimization Summary: Add missing check for reexecute flag to VerifyStack code. Reviewed-by: roland ! src/share/vm/runtime/deoptimization.cpp Changeset: d04cb4166be7 Author: morris Date: 2014-08-06 14:22 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d04cb4166be7 8040921: Uninitialised memory in hotspot/src/share/vm/c1/c1_LinearScan.cpp Summary: Fixed parfait initialization issue. Reviewed-by: kvn, twisti ! src/share/vm/c1/c1_LinearScan.cpp Changeset: 5a061b65b00b Author: morris Date: 2014-08-06 21:37 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/5a061b65b00b Merge Changeset: b2daaf70fab2 Author: hseigel Date: 2014-08-05 09:11 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/b2daaf70fab2 8046233: VerifyError on backward branch Summary: Remove check that causes the VerifyError Reviewed-by: dholmes, coleenp, acorn ! src/share/vm/classfile/stackMapFrame.cpp ! src/share/vm/classfile/stackMapFrame.hpp ! src/share/vm/classfile/stackMapTable.cpp ! src/share/vm/classfile/stackMapTable.hpp ! test/runtime/7116786/Test7116786.java Changeset: edfa5ba8609e Author: hseigel Date: 2014-08-07 09:18 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/edfa5ba8609e Merge Changeset: 009de2b033fc Author: iignatyev Date: 2013-12-23 20:56 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/009de2b033fc 8029070: memory leak in jmm_SetVMGlobal Reviewed-by: kvn, dholmes ! src/share/vm/runtime/globals.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/globals_extension.hpp ! src/share/vm/services/management.cpp Changeset: 0c48231c5c84 Author: iignatyev Date: 2014-05-30 17:20 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/0c48231c5c84 8038756: new WB API :: get/setVMFlag Reviewed-by: vlivanov, sla ! src/share/vm/prims/whitebox.cpp ! src/share/vm/runtime/globals.cpp ! src/share/vm/runtime/globals.hpp ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java + test/testlibrary_tests/whitebox/vm_flags/BooleanTest.java + test/testlibrary_tests/whitebox/vm_flags/DoubleTest.java + test/testlibrary_tests/whitebox/vm_flags/IntxTest.java + test/testlibrary_tests/whitebox/vm_flags/StringTest.java + test/testlibrary_tests/whitebox/vm_flags/Uint64Test.java + test/testlibrary_tests/whitebox/vm_flags/UintxTest.java + test/testlibrary_tests/whitebox/vm_flags/VmFlagTest.java Changeset: cb95655ef06f Author: iignatyev Date: 2014-08-07 21:10 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/cb95655ef06f Merge Changeset: dc06b830ea95 Author: amurillo Date: 2014-08-07 14:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/dc06b830ea95 Added tag hs25.40-b04 for changeset cb95655ef06f ! .hgtags Changeset: afac3987537e Author: katleman Date: 2014-08-13 14:49 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/afac3987537e Added tag jdk8u40-b01 for changeset dc06b830ea95 ! .hgtags Changeset: 731e8175d53f Author: amurillo Date: 2014-08-07 15:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/731e8175d53f 8054550: new hotspot build - hs25.40-b05 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 9fec19bb0659 Author: mgerdin Date: 2014-01-14 16:40 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9fec19bb0659 8032379: Remove the is_scavenging flag to process_strong_roots Summary: Refactor the strong root processing to avoid using a boolean in addition to the ScanOption enum. Reviewed-by: stefank, tschatzl, ehelin, jmasa ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/memory/sharedHeap.hpp Changeset: 02e61cf08ab3 Author: stefank Date: 2014-02-10 12:51 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/02e61cf08ab3 8033764: Remove the usage of StarTask from BufferingOopClosure Reviewed-by: mgerdin, brutisso, tschatzl + src/share/vm/gc_implementation/g1/bufferingOopClosure.cpp ! src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.cpp ! src/share/vm/gc_implementation/g1/g1RemSet.hpp ! src/share/vm/prims/jni.cpp Changeset: b0b97602393a Author: stefank Date: 2014-02-10 12:58 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b0b97602393a 8033923: Use BufferingOopClosure for G1 code root scanning Reviewed-by: mgerdin, brutisso ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: 7426d8d76305 Author: stefank Date: 2014-02-13 17:44 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/7426d8d76305 8034761: Remove the do_code_roots parameter from process_strong_roots Reviewed-by: tschatzl, mgerdin, jmasa ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/shared/markSweep.cpp ! src/share/vm/gc_implementation/shared/markSweep.hpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/memory/sharedHeap.hpp Changeset: 64ac9c55d666 Author: stefank Date: 2014-02-14 09:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/64ac9c55d666 8034764: Use process_strong_roots to adjust the StringTable Reviewed-by: tschatzl, brutisso ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/memory/sharedHeap.hpp Changeset: 4af19b914f53 Author: stefank Date: 2014-02-21 10:01 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4af19b914f53 8035393: Use CLDClosure instead of CLDToOopClosure in frame::oops_interpreted_do Reviewed-by: tschatzl, coleenp ! src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp ! src/share/vm/memory/iterator.hpp ! src/share/vm/runtime/frame.cpp ! src/share/vm/runtime/frame.hpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp ! src/share/vm/runtime/vmThread.cpp ! src/share/vm/runtime/vmThread.hpp Changeset: 556a06aec3fa Author: stefank Date: 2014-02-21 10:19 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/556a06aec3fa 8035412: Cleanup ClassLoaderData::is_alive Reviewed-by: coleenp, mgerdin ! src/share/vm/classfile/classLoaderData.cpp ! src/share/vm/classfile/classLoaderData.hpp Changeset: 27188ae8bbbb Author: stefank Date: 2014-02-27 10:34 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/27188ae8bbbb 8035648: Don't use Handle in java_lang_String::print Reviewed-by: coleenp, pliden ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/oops/instanceKlass.cpp Changeset: 76b588255908 Author: stefank Date: 2014-02-27 10:36 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/76b588255908 8035746: Add missing Klass::oop_is_instanceClassLoader() function Reviewed-by: mgerdin, coleenp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/prims/jni.cpp Changeset: 4dfab3faf5e7 Author: mgerdin Date: 2014-03-26 10:54 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4dfab3faf5e7 8037958: ConcurrentMark::cleanup leaks BitMaps if VerifyDuringGC is enabled Summary: Allocate temporary BitMaps in the VMThread's resource area Reviewed-by: stefank, sjohanss ! src/share/vm/gc_implementation/g1/concurrentMark.cpp Changeset: 30c99d8e0f02 Author: mgerdin Date: 2014-03-06 09:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/30c99d8e0f02 8038399: Remove dead oop_iterate MemRegion variants from SharedHeap, Generation and Space classes Reviewed-by: tschatzl, stefank ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/generation.cpp ! src/share/vm/memory/generation.hpp ! src/share/vm/memory/sharedHeap.hpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp Changeset: 5255b195f828 Author: mgerdin Date: 2014-03-12 15:22 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/5255b195f828 8038404: Move object_iterate_mem from Space to CMS since it is only ever used by CMS Reviewed-by: brutisso, tschatzl, stefank ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/memory/iterator.hpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp Changeset: 6c523f5d5440 Author: mgerdin Date: 2014-03-12 17:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6c523f5d5440 8038412: Move object_iterate_careful down from Space to ContigousSpace and CFLSpace Summary: Only declare the functions where they are actually needed. Reviewed-by: tschatzl, stefank ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp Changeset: ff1e37e7eb83 Author: mgerdin Date: 2014-03-12 15:25 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ff1e37e7eb83 8038405: Clean up some virtual fucntions in Space class hierarchy Summary: Get rid of some duplicated implementations and change nonsense implementations to pure virtuals Reviewed-by: stefank, jmasa ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp Changeset: 4c1b88a53c74 Author: stefank Date: 2014-06-24 16:20 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4c1b88a53c74 8046670: Make CMS metadata aware closures applicable for other collectors Reviewed-by: ehelin, mgerdin ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/memory/iterator.cpp ! src/share/vm/memory/iterator.hpp + src/share/vm/memory/iterator.inline.hpp ! src/share/vm/oops/instanceClassLoaderKlass.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceMirrorKlass.cpp ! src/share/vm/oops/objArrayKlass.cpp Changeset: 9717199cb8de Author: stefank Date: 2014-06-24 17:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9717199cb8de 8047373: Clean the ExceptionCache in one pass Summary: Also-reviewed-by: kim.barrett at oracle.com Reviewed-by: jmasa, jwilhelm ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp Changeset: b7d24d2bc8be Author: stefank Date: 2014-06-25 08:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b7d24d2bc8be 8047323: Remove unused _copy_metadata_obj_cl in G1CopyingKeepAliveClosure Reviewed-by: mgerdin, tschatzl ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: c64b6b0c40c8 Author: stefank Date: 2014-06-25 08:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c64b6b0c40c8 8047326: Consolidate all CompiledIC::CompiledIC implementations and move it to compiledIC.cpp Reviewed-by: vlivanov, ehelin ! src/cpu/ppc/vm/compiledIC_ppc.cpp ! src/cpu/sparc/vm/compiledIC_sparc.cpp ! src/cpu/x86/vm/compiledIC_x86.cpp ! src/cpu/zero/vm/compiledIC_zero.cpp ! src/share/vm/code/compiledIC.cpp Changeset: e635a728f9da Author: mgerdin Date: 2014-06-25 10:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e635a728f9da 8047819: G1 HeapRegionDCTOC does not need to inherit ContiguousSpaceDCTOC Reviewed-by: stefank, tschatzl ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp Changeset: 9441d22e429a Author: mgerdin Date: 2014-06-25 16:53 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9441d22e429a 8047820: G1 Block offset table does not need to support generic Space classes Reviewed-by: tschatzl, stefank ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/heapRegion.inline.hpp Changeset: a8137787acfe Author: mgerdin Date: 2014-06-26 10:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a8137787acfe 8047821: G1 Does not use the save_marks functionality as intended Summary: Rename save_marks to record_top_and_timestamp and remove som unused but related methods Reviewed-by: stefank, ehelin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp Changeset: e5035defa3c4 Author: mgerdin Date: 2014-06-26 13:20 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e5035defa3c4 8048214: Linker error when compiling G1SATBCardTableModRefBS after include order changes Reviewed-by: stefank, brutisso, tschatzl ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp Changeset: 1526a938e670 Author: mgerdin Date: 2014-06-26 11:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1526a938e670 8047818: G1 HeapRegions can no longer be ContiguousSpaces Summary: Change parent of G1OffsetTableContigSpace to CompactibleSpace, reimplement missing functionality Reviewed-by: stefank, jmasa, tschatzl ! agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegion.java ! src/share/vm/gc_implementation/g1/g1AllocRegion.inline.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/heapRegion.inline.hpp ! src/share/vm/gc_implementation/g1/vmStructs_g1.hpp ! src/share/vm/memory/space.cpp Changeset: 882004b9e7e1 Author: stefank Date: 2014-07-01 09:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/882004b9e7e1 8047362: Add a version of CompiledIC_at that doesn't create a new RelocIterator Reviewed-by: iveresov, mgerdin ! src/share/vm/code/codeCache.cpp ! src/share/vm/code/compiledIC.cpp ! src/share/vm/code/compiledIC.hpp ! src/share/vm/code/nmethod.cpp Changeset: 2c6ef90f030a Author: stefank Date: 2014-07-07 10:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2c6ef90f030a 8049421: G1 Class Unloading after completing a concurrent mark cycle Reviewed-by: tschatzl, ehelin, brutisso, coleenp, roland, iveresov Contributed-by: stefan.karlsson at oracle.com, mikael.gerdin at oracle.com ! src/share/vm/c1/c1_Runtime1.cpp ! src/share/vm/ci/ciEnv.hpp ! src/share/vm/ci/ciKlass.hpp ! src/share/vm/ci/ciMethodData.cpp ! src/share/vm/ci/ciMethodData.hpp ! src/share/vm/ci/ciObjectFactory.cpp ! src/share/vm/ci/ciObjectFactory.hpp ! src/share/vm/classfile/classLoaderData.cpp ! src/share/vm/classfile/classLoaderData.hpp ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/classfile/dictionary.hpp ! src/share/vm/classfile/metadataOnStackMark.cpp ! src/share/vm/classfile/symbolTable.cpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/code/codeCache.cpp ! src/share/vm/code/codeCache.hpp ! src/share/vm/code/compiledIC.cpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.cpp ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1EvacFailure.hpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.hpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/g1/g1OopClosures.hpp ! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp ! src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/heapRegion.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/satbQueue.cpp ! src/share/vm/gc_implementation/g1/satbQueue.hpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.hpp ! src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp ! src/share/vm/gc_implementation/shared/markSweep.cpp ! src/share/vm/gc_implementation/shared/markSweep.hpp ! src/share/vm/gc_implementation/shared/vmGCOperations.cpp ! src/share/vm/gc_implementation/shared/vmGCOperations.hpp ! src/share/vm/memory/cardTableModRefBS.cpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/iterator.cpp ! src/share/vm/memory/iterator.hpp ! src/share/vm/memory/metadataFactory.hpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/memory/sharedHeap.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/prims/jvmtiTagMap.cpp ! src/share/vm/prims/whitebox.cpp ! src/share/vm/prims/whitebox.hpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp ! src/share/vm/utilities/array.hpp ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: 870c03421152 Author: ehelin Date: 2014-07-09 16:44 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/870c03421152 8049426: Minor cleanups after G1 class unloading Reviewed-by: stefank, brutisso ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/utilities/array.hpp Changeset: bac98749fe00 Author: stefank Date: 2014-07-11 09:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bac98749fe00 8049831: Metadata Full GCs are not triggered when CMSClassUnloadingEnabled is turned off Reviewed-by: brutisso, tschatzl, ehelin, jmasa, dfazunen ! src/share/vm/gc_implementation/shared/vmGCOperations.cpp ! test/TEST.groups Changeset: 684a5dec6072 Author: stefank Date: 2014-08-04 15:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/684a5dec6072 8051883: TEST.groups references missing test: gc/class_unloading/TestCMSClassUnloadingDisabledHWM.java Reviewed-by: brutisso, tschatzl, ehelin, jmasa, dfazunen + test/gc/class_unloading/TestCMSClassUnloadingDisabledHWM.java Changeset: f3aeae1f9fc5 Author: stefank Date: 2014-08-06 09:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f3aeae1f9fc5 8048269: Add flag to turn off class unloading after G1 concurrent mark Summary: Added -XX:+/-ClassUnloadingWithConcurrentMark Reviewed-by: jmasa, brutisso, mgerdin ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/heapRegion.inline.hpp ! src/share/vm/gc_implementation/shared/vmGCOperations.cpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/runtime/globals.hpp ! test/TEST.groups + test/gc/class_unloading/AllocateBeyondMetaspaceSize.java - test/gc/class_unloading/TestCMSClassUnloadingDisabledHWM.java + test/gc/class_unloading/TestCMSClassUnloadingEnabledHWM.java + test/gc/class_unloading/TestG1ClassUnloadingHWM.java Changeset: dbb05f6d93c4 Author: fzhinkin Date: 2014-07-28 15:06 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/dbb05f6d93c4 8051344: JVM crashed in Compile::start() during method parsing w/ UseRTMDeopt turned on Summary: call rtm_deopt() only if there were no compilation bailouts before. Reviewed-by: kvn ! src/share/vm/opto/parse1.cpp + test/compiler/osr/TestOSRWithNonEmptyStack.java Changeset: dac61d838654 Author: kvn Date: 2014-08-11 11:43 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/dac61d838654 8054376: Move RTM flags from Experimental to Product Reviewed-by: roland ! src/cpu/x86/vm/globals_x86.hpp Changeset: cabe05c85665 Author: fzhinkin Date: 2014-08-11 19:19 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/cabe05c85665 8054805: Update CLI tests on RTM options to reflect changes in JDK-8054376 Reviewed-by: kvn ! test/compiler/rtm/cli/TestRTMRetryCountOption.java ! test/compiler/rtm/cli/TestUseRTMDeoptOptionOnSupportedConfig.java ! test/compiler/rtm/cli/TestUseRTMDeoptOptionOnUnsupportedConfig.java ! test/compiler/rtm/cli/TestUseRTMLockingOptionOnSupportedConfig.java ! test/compiler/rtm/cli/TestUseRTMLockingOptionOnUnsupportedCPU.java ! test/compiler/rtm/cli/TestUseRTMLockingOptionOnUnsupportedVM.java ! test/compiler/rtm/cli/TestUseRTMLockingOptionWithBiasedLocking.java Changeset: 631c3a4ea10c Author: lfoltan Date: 2014-05-22 11:36 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/631c3a4ea10c 8043301: Duplicate definitions in vm/runtime/sharedRuntimeTrans.cpp versus math.h in VS2013 Summary: Factor out definitions of copysignA and scalbnA into new file sharedRuntimeMath.hpp Reviewed-by: kvn + src/share/vm/runtime/sharedRuntimeMath.hpp ! src/share/vm/runtime/sharedRuntimeTrans.cpp ! src/share/vm/runtime/sharedRuntimeTrig.cpp Changeset: b6a8cc1e0d92 Author: thartmann Date: 2014-07-29 13:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b6a8cc1e0d92 8040121: Load variable through a pointer of an incompatible type in src/hotspot/src/share/vm: opto/output.cpp, runtime/sharedRuntimeTrans.cpp, utilities/globalDefinitions_visCPP.hpp Summary: Fixed parfait warnings in globalDefinitions files by using a union for casts. Reviewed-by: kvn ! src/share/vm/opto/output.cpp ! src/share/vm/utilities/globalDefinitions.hpp ! src/share/vm/utilities/globalDefinitions_gcc.hpp ! src/share/vm/utilities/globalDefinitions_sparcWorks.hpp ! src/share/vm/utilities/globalDefinitions_visCPP.hpp ! src/share/vm/utilities/globalDefinitions_xlc.hpp Changeset: a073be2ce5c2 Author: thartmann Date: 2014-07-29 13:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a073be2ce5c2 8049043: Load variable through a pointer of an incompatible type in hotspot/src/share/vm/runtime/sharedRuntimeMath.hpp Summary: Fixed parfait warnings caused by __HI and __LO macros in sharedRuntimeMath.hpp by using a union. Reviewed-by: kvn ! src/share/vm/runtime/sharedRuntimeMath.hpp ! src/share/vm/runtime/sharedRuntimeTrans.cpp ! src/share/vm/runtime/sharedRuntimeTrig.cpp Changeset: 69ea58782b1a Author: roland Date: 2014-07-31 19:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/69ea58782b1a 8054054: 8040121 is broken Summary: C++ code pattern from 8040121 is incorrect Reviewed-by: kvn ! src/share/vm/opto/output.cpp ! src/share/vm/runtime/sharedRuntimeMath.hpp Changeset: 85c339200299 Author: thartmann Date: 2014-08-06 08:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/85c339200299 8029443: 'assert(klass->is_loader_alive(_is_alive)) failed: must be alive' during VM_CollectForMetadataAllocation Summary: Added missing metadata relocation to 'loadConP_no_oop_cheap' on Sparc if the pointer is referring to a Klass. Added jtreg test. Reviewed-by: kvn ! src/cpu/sparc/vm/sparc.ad + test/compiler/classUnloading/methodUnloading/TestMethodUnloading.java + test/compiler/classUnloading/methodUnloading/WorkerClass.java Changeset: e0954897238a Author: brutisso Date: 2014-04-29 09:33 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e0954897238a 7132678: G1: verify that the marking bitmaps have no marks for objects over TAMS Reviewed-by: jmasa, tschatzl, ehelin Contributed-by: tony.printezis at oracle.com, bengt.rutisson at oracle.com ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1EvacFailure.hpp ! src/share/vm/gc_implementation/g1/g1_globals.hpp Changeset: 5d7a63aee595 Author: tschatzl Date: 2014-07-21 09:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5d7a63aee595 8049051: Use of during_initial_mark_pause() in G1CollectorPolicy::record_collection_pause_end() prevents use of seperate object copy time prediction during marking Summary: Replaced use of during_initial_mark_pause() with the variable last_pause_included_initial_mark that holds the real old value of _during_initial_mark_pause. Reviewed-by: brutisso, ehelin ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Changeset: 7df07d855c8e Author: tschatzl Date: 2014-07-21 09:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7df07d855c8e 8048085: Aborting marking just before remark results in useless additional clearing of the next mark bitmap Summary: Skip clearing the next bitmap if we just recently aborted since the full GC already clears this bitmap. Reviewed-by: brutisso ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp Changeset: dd219eaec9cc Author: tschatzl Date: 2014-07-21 09:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/dd219eaec9cc 8048088: Conservative maximum heap alignment should take vm_allocation_granularity into account Summary: Also consider os::vm_allocation_granularity in the calculation. Reviewed-by: brutisso ! src/share/vm/runtime/arguments.cpp Changeset: 3f2894c5052e Author: tschatzl Date: 2014-07-21 10:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3f2894c5052e 8048112: G1 Full GC needs to support the case when the very first region is not available Summary: Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett. Reviewed-by: brutisso ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegionSet.hpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/space.hpp Changeset: a3953c777565 Author: tschatzl Date: 2014-07-23 09:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a3953c777565 8027959: Early reclamation of large objects in G1 Summary: Try to reclaim humongous objects at every young collection after doing a conservative estimate of its liveness. Reviewed-by: brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.hpp ! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp ! src/share/vm/gc_implementation/g1/g1_globals.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp + test/gc/g1/TestEagerReclaimHumongousRegions.java ! test/gc/g1/TestGCLogMessages.java Changeset: ca8b8e21e2ca Author: mdoerr Date: 2014-07-29 10:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ca8b8e21e2ca 8050973: CMS/G1 GC: add missing Resource and Handle mark Summary: Add Resource/HandleMark in the work() method of some AbstractGangTask to reclaim these resources earlier. Reviewed-by: tschatzl, goetz ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp Changeset: 83ea089a5c64 Author: tschatzl Date: 2014-07-31 09:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/83ea089a5c64 8051973: Eager reclaim leaves marks of marked but reclaimed objects on the next bitmap Summary: Eager reclaim also needs to clear marks of eagerly reclaimed regions if they have already been marked during concurrent mark. Reviewed-by: jmasa ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp + test/gc/g1/TestEagerReclaimHumongousRegions2.java Changeset: e8ba50da0de0 Author: tschatzl Date: 2014-08-07 22:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e8ba50da0de0 8052170: G1 asserts at collection exit with -XX:-G1DeferredRSUpdate Summary: Do not try to verify timing measures for the redirty logged cards phase when it is not executed. Reviewed-by: brutisso, jmasa ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! test/gc/g1/TestDeferredRSUpdate.java Changeset: c3c9eee55fce Author: tschatzl Date: 2014-08-07 22:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c3c9eee55fce 8054341: Remove some obsolete code in G1CollectedHeap class Summary: Remove dead code. Reviewed-by: stefank, brutisso ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Changeset: 4baf9bb2376c Author: tschatzl Date: 2014-07-21 09:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4baf9bb2376c 8049051: Use of during_initial_mark_pause() in G1CollectorPolicy::record_collection_pause_end() prevents use of seperate object copy time prediction during marking Summary: Replaced use of during_initial_mark_pause() with the variable last_pause_included_initial_mark that holds the real old value of _during_initial_mark_pause. Reviewed-by: brutisso, ehelin ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Changeset: 3bf2fc51186b Author: tschatzl Date: 2014-07-21 09:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3bf2fc51186b 8048085: Aborting marking just before remark results in useless additional clearing of the next mark bitmap Summary: Skip clearing the next bitmap if we just recently aborted since the full GC already clears this bitmap. Reviewed-by: brutisso ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp Changeset: c512f38a5139 Author: tschatzl Date: 2014-07-21 09:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c512f38a5139 8048088: Conservative maximum heap alignment should take vm_allocation_granularity into account Summary: Also consider os::vm_allocation_granularity in the calculation. Reviewed-by: brutisso ! src/share/vm/runtime/arguments.cpp Changeset: a22acf6d7598 Author: tschatzl Date: 2014-07-21 10:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a22acf6d7598 8048112: G1 Full GC needs to support the case when the very first region is not available Summary: Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett. Reviewed-by: brutisso ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegionSet.hpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/space.hpp Changeset: 755930f931e3 Author: tschatzl Date: 2014-07-23 09:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/755930f931e3 8027959: Early reclamation of large objects in G1 Summary: Try to reclaim humongous objects at every young collection after doing a conservative estimate of its liveness. Reviewed-by: brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.hpp ! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp ! src/share/vm/gc_implementation/g1/g1_globals.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp + test/gc/g1/TestEagerReclaimHumongousRegions.java ! test/gc/g1/TestGCLogMessages.java Changeset: e02e18f40eae Author: mdoerr Date: 2014-07-29 10:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e02e18f40eae 8050973: CMS/G1 GC: add missing Resource and Handle mark Summary: Add Resource/HandleMark in the work() method of some AbstractGangTask to reclaim these resources earlier. Reviewed-by: tschatzl, goetz ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp Changeset: 04d77ac27223 Author: tschatzl Date: 2014-07-31 09:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/04d77ac27223 8051973: Eager reclaim leaves marks of marked but reclaimed objects on the next bitmap Summary: Eager reclaim also needs to clear marks of eagerly reclaimed regions if they have already been marked during concurrent mark. Reviewed-by: jmasa ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp + test/gc/g1/TestEagerReclaimHumongousRegions2.java Changeset: 9b093813caa9 Author: tschatzl Date: 2014-08-07 22:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9b093813caa9 8052170: G1 asserts at collection exit with -XX:-G1DeferredRSUpdate Summary: Do not try to verify timing measures for the redirty logged cards phase when it is not executed. Reviewed-by: brutisso, jmasa ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! test/gc/g1/TestDeferredRSUpdate.java Changeset: a08bb8e45ba1 Author: tschatzl Date: 2014-08-07 22:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a08bb8e45ba1 8054341: Remove some obsolete code in G1CollectedHeap class Summary: Remove dead code. Reviewed-by: stefank, brutisso ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Changeset: bfba6779654b Author: tschatzl Date: 2014-08-12 15:17 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/bfba6779654b Merge ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1_globals.hpp Changeset: b1bc1af04c6e Author: kvn Date: 2014-08-05 15:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b1bc1af04c6e 8052081: Optimize generated by C2 code for Intel's Atom processor Summary: Allow to execute vectorization and crc32 optimization on Atom. Enable UseFPUForSpilling by default on x86. Reviewed-by: roland ! src/cpu/x86/vm/assembler_x86.cpp ! src/cpu/x86/vm/assembler_x86.hpp ! src/cpu/x86/vm/macroAssembler_x86.cpp ! src/cpu/x86/vm/macroAssembler_x86.hpp ! src/cpu/x86/vm/vm_version_x86.cpp ! src/share/vm/opto/lcm.cpp ! src/share/vm/opto/superword.cpp Changeset: 922c87c9aed4 Author: kvn Date: 2014-06-10 12:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/922c87c9aed4 8035605: Expand functionality of PredictedIntrinsicGenerator Summary: Allow several predicates and separate intrinsic methods per one intrinsified (virtual) method. Reviewed-by: roland ! src/share/vm/opto/callGenerator.cpp ! src/share/vm/opto/callGenerator.hpp ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/library_call.cpp Changeset: b20a35eae442 Author: kvn Date: 2014-06-11 11:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b20a35eae442 8035968: Leverage CPU Instructions to Improve SHA Performance on SPARC Summary: Add C2 SHA intrinsics on SPARC Reviewed-by: kvn, roland Contributed-by: james.cheng at oracle.com ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/stubGenerator_sparc.cpp ! src/cpu/sparc/vm/stubRoutines_sparc.hpp ! src/cpu/sparc/vm/vm_version_sparc.cpp ! src/cpu/sparc/vm/vm_version_sparc.hpp ! src/cpu/x86/vm/vm_version_x86.cpp ! src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/runtime.cpp ! src/share/vm/opto/runtime.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/stubRoutines.cpp ! src/share/vm/runtime/stubRoutines.hpp + test/compiler/intrinsics/sha/TestSHA.java Changeset: 46bbe04d1cad Author: anoll Date: 2014-04-11 13:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/46bbe04d1cad 8039498: Add iterators to GrowableArray Summary: To simplify the management of multiple code heaps in the code cache (see JDK-8015774), STL-style iterator capability is added to the GrowableArray. Further, custom iterators allow to only iterate over elements that satisfy a given predicate. Reviewed-by: kvn, twisti Contributed-by: Tobias Hartmann ! src/share/vm/utilities/growableArray.hpp Changeset: f5b4600d7368 Author: morris Date: 2014-08-12 22:29 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/f5b4600d7368 Merge Changeset: 3c048df3ef8b Author: morris Date: 2014-08-07 18:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3c048df3ef8b 8040920: Uninitialised memory in hotspot/src/share/vm/code/dependencies.cpp Summary: Fixed parfait initialization issue. Reviewed-by: kvn, twisti ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/dependencies.hpp Changeset: ee019285a52c Author: jmasa Date: 2014-08-04 10:48 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/ee019285a52c 8031323: Optionally align objects copied to survivor spaces Reviewed-by: brutisso, tschatzl ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp + src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp ! src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp + src/share/vm/gc_implementation/shared/parGCAllocBuffer.inline.hpp ! src/share/vm/gc_interface/collectedHeap.hpp ! src/share/vm/gc_interface/collectedHeap.inline.hpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp ! src/share/vm/oops/oop.pcgc.inline.hpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp Changeset: fa62fb12cdca Author: dsimms Date: 2014-08-14 15:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/fa62fb12cdca 6311046: -Xcheck:jni should support checking of GetPrimitiveArrayCritical. Summary: Wrapped memory with standard bounds checking "GuardedMemory". Reviewed-by: zgu, fparain, dcubed + src/share/vm/memory/guardedMemory.cpp + src/share/vm/memory/guardedMemory.hpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jniCheck.cpp ! src/share/vm/runtime/os.cpp Changeset: 29a5c2fd2d2e Author: dsimms Date: 2014-08-14 15:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/29a5c2fd2d2e 8046662: Check JNI ReleaseStringChars / ReleaseStringUTFChars verify_guards test inverted Summary: negative verify_guards when testing for corruption Reviewed-by: sla, fparain ! src/share/vm/prims/jniCheck.cpp Changeset: 897333c7e587 Author: amurillo Date: 2014-08-14 12:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/897333c7e587 Merge Changeset: f52cb9164759 Author: amurillo Date: 2014-08-14 12:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f52cb9164759 Added tag hs25.40-b05 for changeset 897333c7e587 ! .hgtags Changeset: 4d5c3760ebb4 Author: katleman Date: 2014-08-21 11:43 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/4d5c3760ebb4 Added tag jdk8u40-b02 for changeset f52cb9164759 ! .hgtags Changeset: 5c8178d7dd35 Author: amurillo Date: 2014-08-14 12:58 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5c8178d7dd35 8055155: new hotspot build - hs25.40-b06 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 8ae0d26ab728 Author: dsimms Date: 2014-08-14 10:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8ae0d26ab728 8046919: jni_PushLocalFrame OOM - increase MAX_REASONABLE_LOCAL_CAPACITY Summary: Increase the previous limit from 4k to 64k, added "-XX:MaxJNILocalCapacity=" flag Reviewed-by: hseigel, fparain ! src/share/vm/prims/jni.cpp ! src/share/vm/runtime/globals.hpp Changeset: 43aa571c1131 Author: amurillo Date: 2014-08-15 11:39 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/43aa571c1131 8055217: Make jdk8u40 the default jprt release for hs25.40 Reviewed-by: mikael, kvn ! make/jprt.properties Changeset: da00a41842a5 Author: brutisso Date: 2014-04-23 12:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/da00a41842a5 8038265: CMS: enable time based triggering of concurrent cycles Reviewed-by: mgerdin, brutisso Contributed-by: michal at frajt.eu ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/runtime/globals.hpp Changeset: 411e30e5fbb8 Author: roland Date: 2014-08-13 11:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/411e30e5fbb8 8026796: Make replace_in_map() on parent maps generic Summary: propagate node replacements along control flow edges to callers Reviewed-by: kvn, vlivanov ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/callGenerator.cpp ! src/share/vm/opto/callGenerator.hpp ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/graphKit.hpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/parse.hpp ! src/share/vm/opto/parse1.cpp + src/share/vm/opto/replacednodes.cpp + src/share/vm/opto/replacednodes.hpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/utilities/growableArray.hpp Changeset: 92baebeb744b Author: hseigel Date: 2014-08-12 20:29 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/92baebeb744b 8050485: super() in a try block in a ctor causes VerifyError Summary: Parse catch clause paths to ensure they end in throws Reviewed-by: dlong, acorn, kamg, ctornqvi, lfoltan ! src/share/vm/classfile/verifier.cpp ! src/share/vm/classfile/verifier.hpp Changeset: fb971e09d20f Author: iveresov Date: 2014-08-13 17:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fb971e09d20f 8054883: Segmentation error while running program Summary: Fix pattern matching of range check Reviewed-by: kvn ! src/share/vm/opto/ifnode.cpp Changeset: 8a7429682242 Author: stefank Date: 2014-08-18 14:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8a7429682242 8055275: Several gc/class_unloading/ tests fail due to missed +UnlockDiagnosticVMOptions flag Reviewed-by: mgerdin, jwilhelm ! test/gc/class_unloading/TestCMSClassUnloadingEnabledHWM.java ! test/gc/class_unloading/TestG1ClassUnloadingHWM.java Changeset: 18bf0b66de52 Author: poonam Date: 2014-08-19 02:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/18bf0b66de52 8044406: JVM crash with JDK8 (build 1.8.0-b132) with G1 GC Summary: Fill the last card that has been allocated into with a dummy object Reviewed-by: tschatzl, mgerdin ! src/share/vm/gc_implementation/g1/g1AllocRegion.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Changeset: 15b01edee7c0 Author: poonam Date: 2014-08-19 09:13 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/15b01edee7c0 Merge Changeset: 2d1534aa7131 Author: tschatzl Date: 2014-08-18 15:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2d1534aa7131 8054362: gc/g1/TestEagerReclaimHumongousRegions2.java timeout Summary: Give the test a time limit of approximately one minute so that it exits early on slow machines. Reviewed-by: ehelin, dfazunen, brutisso ! test/gc/g1/TestEagerReclaimHumongousRegions2.java Changeset: ff3169f25621 Author: brutisso Date: 2014-04-01 07:46 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ff3169f25621 8038829: G1: More useful information in a few assert messages Reviewed-by: sjohanss, jmasa ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: eec72fa4b108 Author: brutisso Date: 2014-08-19 12:39 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/eec72fa4b108 8040722: G1: Clean up usages of heap_region_containing Reviewed-by: tschatzl, jmasa ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.cpp ! src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.cpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.hpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp Changeset: 6701abbc4441 Author: tschatzl Date: 2014-08-19 10:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6701abbc4441 8054818: Refactor HeapRegionSeq to manage heap region and auxiliary data Summary: Let HeapRegionSeq manage the heap region and auxiliary data to decrease the amount of responsibilities of G1CollectedHeap, and encapsulate this work from other code. Reviewed-by: jwilhelm, jmasa, mgerdin, brutisso ! agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1CollectedHeap.java ! agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java ! agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.cpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.hpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionSet.hpp ! src/share/vm/gc_implementation/g1/heapRegionSet.inline.hpp ! src/share/vm/gc_implementation/g1/vmStructs_g1.hpp ! src/share/vm/prims/whitebox.cpp Changeset: 1f1d373cd044 Author: tschatzl Date: 2014-08-21 11:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1f1d373cd044 8038423: G1: Decommit memory within heap Summary: Allow G1 to decommit memory of arbitrary regions within the heap and their associated auxiliary data structures card table, BOT, hot card cache, and mark bitmaps. Reviewed-by: mgerdin, brutisso, jwilhelm ! src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp ! src/share/vm/gc_implementation/g1/concurrentG1Refine.hpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp ! src/share/vm/gc_implementation/g1/g1CardCounts.cpp ! src/share/vm/gc_implementation/g1/g1CardCounts.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1HotCardCache.cpp ! src/share/vm/gc_implementation/g1/g1HotCardCache.hpp + src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp + src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp + src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.cpp + src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.cpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.hpp ! src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionSet.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp ! src/share/vm/memory/cardTableModRefBS.cpp ! src/share/vm/memory/cardTableModRefBS.hpp ! src/share/vm/memory/cardTableRS.cpp ! src/share/vm/prims/jni.cpp Changeset: 8d5f66b42c53 Author: tschatzl Date: 2014-08-20 14:34 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8d5f66b42c53 8055525: Bigapp weblogic+medrec fails to startup after JDK-8038423 Summary: If large pages are enabled and configured in Linux, the VM always pre-commits the entire space. The VM fails verification of the commit of the initial heap because some internal data structure marked all memory pages of the heap as committed during initialization. This makes the code think that we attempted a double-commit during first allocation of the heap. Remove the initial marking of memory pages of the heap to committed. Reviewed-by: mgerdin ! src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp Changeset: 7b2fc3129653 Author: tschatzl Date: 2014-08-20 15:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7b2fc3129653 8055635: Missing include in g1RegionToSpaceMapper.hpp results in unresolved symbol of fastdebug build without precompiled headers Reviewed-by: mgerdin, ehelin ! src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.cpp ! src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.hpp Changeset: fbc31318922c Author: amurillo Date: 2014-08-21 14:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fbc31318922c Merge Changeset: 38539608359a Author: amurillo Date: 2014-08-21 14:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/38539608359a Added tag hs25.40-b06 for changeset fbc31318922c ! .hgtags Changeset: 0ee2b6c618fc Author: katleman Date: 2014-08-28 13:23 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0ee2b6c618fc Added tag jdk8u40-b03 for changeset 38539608359a ! .hgtags Changeset: 03c5d509a811 Author: coffeys Date: 2014-08-19 20:41 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/03c5d509a811 Merge ! .hgtags ! make/hotspot_version ! src/os/aix/vm/os_aix.cpp Changeset: 2fd0fd493045 Author: rbackman Date: 2014-06-04 10:01 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2fd0fd493045 8031994: java/lang/Character/CheckProp test times out Reviewed-by: iveresov, roland ! src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp ! src/cpu/x86/vm/c1_LIRGenerator_x86.cpp ! src/share/vm/c1/c1_GraphBuilder.cpp ! src/share/vm/c1/c1_Instruction.hpp ! src/share/vm/c1/c1_LIRGenerator.cpp ! src/share/vm/c1/c1_LIRGenerator.hpp Changeset: f933a15469d4 Author: jwilhelm Date: 2014-07-28 22:43 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f933a15469d4 8055006: Store original value of Min/MaxHeapFreeRatio Summary: Store the value set by the user and some makefile changes required to change the flags. Reviewed-by: sla, mchung, bchristi, jmasa, dholmes ! make/bsd/makefiles/vm.make ! make/linux/makefiles/vm.make ! make/solaris/makefiles/vm.make ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp Changeset: 28b4223e2ea7 Author: jwilhelm Date: 2014-08-22 13:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/28b4223e2ea7 8055744: 8u-dev nightly solaris builds failed on 08/20 Summary: Fixed makefiles on solaris to allow build with extra symbols. Reviewed-by: dcubed, erikj ! make/solaris/Makefile ! make/solaris/makefiles/buildtree.make Changeset: 3374ec4c4448 Author: amurillo Date: 2014-08-26 13:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3374ec4c4448 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/runtime/arguments.cpp Changeset: 77878c021b8d Author: lana Date: 2014-08-28 16:11 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/77878c021b8d Merge ! .hgtags Changeset: 7fa57b65c27f Author: amurillo Date: 2014-08-21 14:48 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7fa57b65c27f 8055786: new hotspot build - hs25.40-b07 Reviewed-by: jcoomes ! make/hotspot_version Changeset: c3990b8c710e Author: thartmann Date: 2014-08-25 08:20 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c3990b8c710e 8054402: "klass->is_loader_alive(_is_alive)) failed: must be alive" for anonymous classes Summary: Because anonymous classes are not in the system dictionary, we have to set 'unloading_occurred' based on 'CLDG::do_unloading()'. Added jtreg test. Reviewed-by: kvn, coleenp ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/classfile/dictionary.hpp ! src/share/vm/classfile/systemDictionary.cpp + test/compiler/classUnloading/anonymousClass/TestAnonymousClassUnloading.java Changeset: cec4a29245f5 Author: amurillo Date: 2014-08-25 11:15 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/cec4a29245f5 Added tag hs25.40-b07 for changeset c3990b8c710e ! .hgtags Changeset: 5b662570d9cf Author: amurillo Date: 2014-08-25 11:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5b662570d9cf 8055952: new hotspot build - hs25.40-b08 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 72fa1e83e5f9 Author: lfoltan Date: 2014-08-25 15:57 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/72fa1e83e5f9 8051002: Incorrectly merged share/vm/classfile/classFileParser.cpp was pushed to 8u20. Summary: Correct fix for allowing BootstrapMethods attribute with an empty bootstrap_methods table. Reviewed-by: coleenp, ctornqvi, hseigel ! src/share/vm/classfile/classFileParser.cpp Changeset: fa0cf025abd4 Author: hseigel Date: 2014-08-25 16:03 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/fa0cf025abd4 Merge Changeset: 47e8e40b94d3 Author: hseigel Date: 2014-08-25 17:05 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/47e8e40b94d3 Merge Changeset: 439f0d76cff3 Author: brutisso Date: 2014-08-26 10:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/439f0d76cff3 8029524: Remove unsused method CollectedHeap::unsafe_max_alloc() Reviewed-by: pliden, jmasa ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp ! src/share/vm/gc_interface/collectedHeap.hpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp Changeset: 4bfc44ba0d19 Author: tschatzl Date: 2014-08-21 16:44 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4bfc44ba0d19 8055098: WB API should be extended to provide information about size and age of object. Summary: Extend the WhiteBox API to provide information about the size and age of objects. Further add a mechanism to trigger a young GC. Reviewed-by: tschatzl, sjohanss Contributed-by: Leonid Mesnik ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp ! src/share/vm/gc_interface/gcCause.cpp ! src/share/vm/gc_interface/gcCause.hpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/prims/whitebox.cpp ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: b95d569d10c1 Author: tschatzl Date: 2014-08-26 14:15 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b95d569d10c1 8055953: [TESTBUG] Fix for 8055098 does not contain unit test Summary: Add missing unit test. Reviewed-by: tschatzl Contributed-by: Leonid Mesnik + test/gc/whitebox/TestWBGC.java Changeset: 4d3a43351904 Author: tschatzl Date: 2014-08-27 09:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4d3a43351904 Merge ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.cpp Changeset: 833b0f92429a Author: zgu Date: 2014-08-27 08:19 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/833b0f92429a 8046598: Scalable Native memory tracking development Summary: Enhance scalability of native memory tracking Reviewed-by: coleenp, ctornqvi, gtriantafill ! make/excludeSrc.make ! src/os/bsd/vm/os_bsd.cpp ! src/os/bsd/vm/perfMemory_bsd.cpp ! src/os/linux/vm/os_linux.cpp ! src/os/linux/vm/os_linux.hpp ! src/os/linux/vm/perfMemory_linux.cpp ! src/os/posix/vm/os_posix.cpp ! src/os/solaris/vm/perfMemory_solaris.cpp ! src/os/windows/vm/os_windows.cpp ! src/os/windows/vm/perfMemory_windows.cpp ! src/share/vm/asm/codeBuffer.cpp ! src/share/vm/c1/c1_Compiler.cpp ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/ci/ciObjectFactory.cpp ! src/share/vm/classfile/symbolTable.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/memory/allocation.cpp ! src/share/vm/memory/allocation.hpp ! src/share/vm/memory/allocation.inline.hpp ! src/share/vm/memory/cardTableRS.cpp ! src/share/vm/memory/collectorPolicy.cpp ! src/share/vm/memory/heapInspection.cpp ! src/share/vm/memory/memRegion.cpp ! src/share/vm/memory/resourceArea.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/precompiled/precompiled.hpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/whitebox.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/handles.hpp ! src/share/vm/runtime/init.cpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/os.cpp ! src/share/vm/runtime/os.hpp ! src/share/vm/runtime/safepoint.cpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp + src/share/vm/services/allocationSite.hpp + src/share/vm/services/mallocSiteTable.cpp + src/share/vm/services/mallocSiteTable.hpp + src/share/vm/services/mallocTracker.cpp + src/share/vm/services/mallocTracker.hpp + src/share/vm/services/mallocTracker.inline.hpp ! src/share/vm/services/memBaseline.cpp ! src/share/vm/services/memBaseline.hpp - src/share/vm/services/memPtr.cpp - src/share/vm/services/memPtr.hpp - src/share/vm/services/memPtrArray.hpp - src/share/vm/services/memRecorder.cpp - src/share/vm/services/memRecorder.hpp ! src/share/vm/services/memReporter.cpp ! src/share/vm/services/memReporter.hpp - src/share/vm/services/memSnapshot.cpp - src/share/vm/services/memSnapshot.hpp - src/share/vm/services/memTrackWorker.cpp - src/share/vm/services/memTrackWorker.hpp ! src/share/vm/services/memTracker.cpp ! src/share/vm/services/memTracker.hpp + src/share/vm/services/nmtCommon.cpp + src/share/vm/services/nmtCommon.hpp ! src/share/vm/services/nmtDCmd.cpp ! src/share/vm/services/nmtDCmd.hpp + src/share/vm/services/virtualMemoryTracker.cpp + src/share/vm/services/virtualMemoryTracker.hpp + src/share/vm/utilities/linkedlist.cpp + src/share/vm/utilities/linkedlist.hpp + src/share/vm/utilities/nativeCallStack.cpp + src/share/vm/utilities/nativeCallStack.hpp ! src/share/vm/utilities/vmError.cpp ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: ac12996df59b Author: zgu Date: 2014-08-27 08:35 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/ac12996df59b 8044140: Create NMT (Native Memory Tracking) tests for NMT2 Summary: Create new/modify existing tests for NMT2, which is an internal redesign to address scalability issues in the first implementation. Reviewed-by: ctornqvi, zgu Contributed-by: George Triantafillou ! test/TEST.ROOT ! test/TEST.groups ! test/runtime/NMT/BaselineWithParameter.java ! test/runtime/NMT/CommandLineDetail.java ! test/runtime/NMT/CommandLineEmptyArgument.java ! test/runtime/NMT/CommandLineInvalidArgument.java ! test/runtime/NMT/CommandLineSummary.java ! test/runtime/NMT/CommandLineTurnOffNMT.java ! test/runtime/NMT/JcmdScale.java ! test/runtime/NMT/JcmdWithNMTDisabled.java ! test/runtime/NMT/MallocTestType.java ! test/runtime/NMT/PrintNMTStatistics.java ! test/runtime/NMT/PrintNMTStatisticsWithNMTDisabled.java ! test/runtime/NMT/ReleaseCommittedMemory.java ! test/runtime/NMT/ShutdownTwice.java ! test/runtime/NMT/SummaryAfterShutdown.java ! test/runtime/NMT/SummarySanityCheck.java ! test/runtime/NMT/ThreadedMallocTestType.java ! test/runtime/NMT/ThreadedVirtualAllocTestType.java ! test/runtime/NMT/VirtualAllocTestType.java ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: f433f37645e5 Author: zgu Date: 2014-08-12 12:39 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140 Summary: Reserved WhiteBox.java pushed by JDK-8044140 Reviewed-by: ccheung, hseigel ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: 36c9011aaead Author: zgu Date: 2014-08-14 09:02 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/36c9011aaead 8054368: nsk/jdi/VirtualMachine/exit/exit002 crash with detail tracking on (NMT2) Summary: Dynamic allocate _reserved_regions instead of static object to avoid racing during process exit Reviewed-by: dholmes, coleenp ! src/share/vm/services/memTracker.cpp ! src/share/vm/services/virtualMemoryTracker.cpp ! src/share/vm/services/virtualMemoryTracker.hpp Changeset: c6211b707068 Author: zgu Date: 2014-08-19 08:34 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/c6211b707068 8055007: NMT2: emptyStack missing in minimal build Summary: Refactored emptyStack to a static member of NativeCallStack, which is accessible in minimal build. Reviewed-by: coleenp, dholmes ! src/share/vm/services/mallocSiteTable.hpp ! src/share/vm/services/memTracker.cpp ! src/share/vm/services/memTracker.hpp ! src/share/vm/services/nmtCommon.hpp ! src/share/vm/services/virtualMemoryTracker.cpp ! src/share/vm/services/virtualMemoryTracker.hpp ! src/share/vm/utilities/nativeCallStack.cpp ! src/share/vm/utilities/nativeCallStack.hpp Changeset: 3adc0e278f49 Author: zgu Date: 2014-08-19 09:05 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/3adc0e278f49 8055061: assert at share/vm/services/virtualMemoryTracker.cpp:332 Error: ShouldNotReachHere() when running NMT tests Summary: Handled CDS mapping region and added test for the scenario Reviewed-by: coleenp, ctornqvi ! src/share/vm/services/virtualMemoryTracker.cpp + test/runtime/NMT/NMTWithCDS.java Changeset: dd3939fe8424 Author: zgu Date: 2014-08-20 08:41 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/dd3939fe8424 8054546: NMT2 leaks memory Summary: Fixed memory leak in NMT by baselining memory in c heap instead of an arena. Reviewed-by: coleenp, minqi ! src/share/vm/services/mallocTracker.hpp ! src/share/vm/services/memBaseline.cpp ! src/share/vm/services/memBaseline.hpp Changeset: aef17e6b4abf Author: zgu Date: 2014-08-27 08:42 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/aef17e6b4abf 8055236: Deadlock during NMT2 shutdown on Windows Summary: Removed MemTracker::shutdown() call to avoid deadlock Reviewed-by: minqi, ctornqvi ! src/os/windows/vm/os_windows.cpp Changeset: 357af5b6d80a Author: zgu Date: 2014-08-28 11:55 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/357af5b6d80a 8056256: [TESTBUG] Disable NMTWithCDS.java test as launcher change has yet promoted Summary: Disable the test until related Java launcher change reaches promotion build Reviewed-by: ctornqvi, gtriantafill ! test/runtime/NMT/NMTWithCDS.java Changeset: 3f1b3f2dd1cb Author: amurillo Date: 2014-08-28 14:00 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3f1b3f2dd1cb Merge ! .hgtags - src/share/vm/services/memPtr.cpp - src/share/vm/services/memPtr.hpp - src/share/vm/services/memPtrArray.hpp - src/share/vm/services/memRecorder.cpp - src/share/vm/services/memRecorder.hpp - src/share/vm/services/memSnapshot.cpp - src/share/vm/services/memSnapshot.hpp - src/share/vm/services/memTrackWorker.cpp - src/share/vm/services/memTrackWorker.hpp Changeset: 3012cc0c8e24 Author: amurillo Date: 2014-08-28 14:00 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3012cc0c8e24 Added tag hs25.40-b08 for changeset 3f1b3f2dd1cb ! .hgtags Changeset: fd4dbaff3002 Author: amurillo Date: 2014-09-02 14:08 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fd4dbaff3002 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/runtime/arguments.cpp - src/share/vm/services/memPtr.cpp - src/share/vm/services/memPtr.hpp - src/share/vm/services/memPtrArray.hpp - src/share/vm/services/memRecorder.cpp - src/share/vm/services/memRecorder.hpp - src/share/vm/services/memSnapshot.cpp - src/share/vm/services/memSnapshot.hpp - src/share/vm/services/memTrackWorker.cpp - src/share/vm/services/memTrackWorker.hpp Changeset: efbd07229e6c Author: katleman Date: 2014-09-03 13:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/efbd07229e6c Added tag jdk8u40-b04 for changeset fd4dbaff3002 ! .hgtags Changeset: c67b85c32d9a Author: amurillo Date: 2014-08-28 14:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c67b85c32d9a 8056299: new hotspot build - hs25.40-b09 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 999824269b71 Author: kvn Date: 2014-08-22 12:03 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/999824269b71 8055069: TSX and RTM should be deprecated more strongly until hardware is corrected Summary: Require to specify UnlockExperimentalVMOptions flag together with UseRTMLocking flag on un-patched systems where CPUID allows it but is unsupported otherwise. Reviewed-by: iveresov, fzhinkin ! src/cpu/x86/vm/vm_version_x86.cpp ! src/cpu/x86/vm/vm_version_x86.hpp ! test/compiler/rtm/cli/TestUseRTMDeoptOptionOnSupportedConfig.java ! test/compiler/rtm/cli/TestUseRTMLockingOptionOnSupportedConfig.java ! test/compiler/rtm/cli/TestUseRTMLockingOptionWithBiasedLocking.java Changeset: 6e0cb14ce59b Author: iklam Date: 2014-08-21 13:57 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6e0cb14ce59b 8046070: Class Data Sharing clean up and refactoring Summary: Cleaned up CDS to be more configurable, maintainable and extensible Reviewed-by: dholmes, coleenp, acorn, mchung ! make/excludeSrc.make ! src/os/linux/vm/os_linux.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/classfile/classLoader.hpp + src/share/vm/classfile/classLoaderExt.hpp ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/classfile/dictionary.hpp + src/share/vm/classfile/sharedClassUtil.hpp + src/share/vm/classfile/sharedPathsMiscInfo.cpp + src/share/vm/classfile/sharedPathsMiscInfo.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp + src/share/vm/classfile/systemDictionaryShared.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/memory/allocation.hpp ! src/share/vm/memory/filemap.cpp ! src/share/vm/memory/filemap.hpp ! src/share/vm/memory/metadataFactory.hpp ! src/share/vm/memory/metaspace.cpp ! src/share/vm/memory/metaspace.hpp ! src/share/vm/memory/metaspaceShared.cpp ! src/share/vm/memory/metaspaceShared.hpp ! src/share/vm/memory/universe.cpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/arrayKlass.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/javaCalls.cpp ! src/share/vm/runtime/vmStructs.cpp ! src/share/vm/utilities/exceptions.cpp ! src/share/vm/utilities/ostream.cpp ! src/share/vm/utilities/ostream.hpp + src/share/vm/utilities/stringUtils.cpp + src/share/vm/utilities/stringUtils.hpp + test/testlibrary/com/oracle/java/testlibrary/BuildHelper.java Changeset: bb239308be67 Author: iklam Date: 2014-09-02 14:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/bb239308be67 8056971: Minor class loading clean-up Summary: Misplacement of #if INCLUE_CDS, typos, unnecessary C string duplication Reviewed-by: dholmes, ccheung ! src/share/vm/classfile/classFileStream.cpp ! src/share/vm/classfile/classFileStream.hpp ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/classfile/classLoader.hpp ! src/share/vm/classfile/classLoaderExt.hpp ! src/share/vm/classfile/sharedPathsMiscInfo.cpp ! src/share/vm/classfile/sharedPathsMiscInfo.hpp ! src/share/vm/classfile/systemDictionary.cpp Changeset: a8ea2f110d87 Author: tschatzl Date: 2014-08-26 09:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a8ea2f110d87 8054819: Rename HeapRegionSeq to HeapRegionManager Reviewed-by: jwilhelm, jmasa ! agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1CollectedHeap.java + agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionManager.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp + src/share/vm/gc_implementation/g1/heapRegionManager.cpp + src/share/vm/gc_implementation/g1/heapRegionManager.hpp + src/share/vm/gc_implementation/g1/heapRegionManager.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.hpp - src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionSet.hpp ! src/share/vm/gc_implementation/g1/heapRegionSet.inline.hpp ! src/share/vm/gc_implementation/g1/sparsePRT.cpp ! src/share/vm/gc_implementation/g1/vmStructs_g1.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceMirrorKlass.cpp ! src/share/vm/oops/instanceRefKlass.cpp ! src/share/vm/oops/objArrayKlass.cpp Changeset: 39189caa2894 Author: tschatzl Date: 2014-08-29 13:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/39189caa2894 Merge - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.hpp - src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp Changeset: 3372cbab6583 Author: tschatzl Date: 2014-09-02 15:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3372cbab6583 Merge - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java - src/share/vm/gc_implementation/g1/heapRegionSeq.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.hpp - src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp Changeset: 9337d0e7ea4f Author: tschatzl Date: 2014-09-02 15:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9337d0e7ea4f 8055919: Remove dead code in G1 concurrent marking code Reviewed-by: jmasa, jwilhelm ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp Changeset: 09e9e5240710 Author: jwilhelm Date: 2014-09-03 09:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/09e9e5240710 8037925: CMM Testing: an allocated humongous object at the end of the heap should not prevents shrinking the heap Summary: New test added. Reviewed-by: ehelin, tschatzl, jwilhelm Contributed-by: andrey.x.zakharov at oracle.com ! test/TEST.groups + test/gc/g1/TestHumongousShrinkHeap.java Changeset: b1266b08b994 Author: tschatzl Date: 2014-09-03 09:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b1266b08b994 8056043: Heap does not shrink within the heap after JDK-8038423 Summary: Enable shrinking within the heap by removing some code added for JDK-8054818. Enable the test case that checks that again too. Reviewed-by: jwilhelm, jmasa ! src/share/vm/gc_implementation/g1/heapRegionManager.cpp ! test/gc/g1/TestHumongousShrinkHeap.java Changeset: 14b8221771dc Author: tschatzl Date: 2014-09-03 09:25 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/14b8221771dc Merge ! src/share/vm/oops/instanceKlass.cpp Changeset: d2c5fee67143 Author: thartmann Date: 2014-08-29 10:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d2c5fee67143 8055657: Test compiler/classUnloading/methodUnloading/TestMethodUnloading.java does not work with non-default GC Summary: Remove the '-XX:+UseParallelGC' parameter from the test because it is conflicting with other GC settings. Reviewed-by: kvn ! test/compiler/classUnloading/methodUnloading/TestMethodUnloading.java Changeset: c35aec39d08e Author: anoll Date: 2014-09-03 08:44 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/c35aec39d08e Merge Changeset: edb5f3b38aab Author: tschatzl Date: 2014-08-28 17:05 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/edb5f3b38aab 8054808: Bitmap verification sometimes fails after Full GC aborts concurrent mark. Summary: The verification code that checked whether no bitmap mark had been found re-read HeapRegion::end() after the check on the bitmap. Concurrent humongous object allocation could have changed HeapRegion::end() in the meantime. Fix this by using the actual end of the region instead of HeapRegion::end() for comparison. Reviewed-by: brutisso, jmasa ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp Changeset: a178c2e6f85f Author: amurillo Date: 2014-09-02 11:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a178c2e6f85f Merge ! .hgtags ! make/hotspot_version ! src/share/vm/runtime/arguments.cpp Changeset: 7430aa5718a5 Author: amurillo Date: 2014-09-03 08:52 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7430aa5718a5 Merge ! make/hotspot_version ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp Changeset: 622c6e0ad4d6 Author: ccheung Date: 2014-08-25 00:13 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/622c6e0ad4d6 8048150: Allow easy configurations for large CDS archives Summary: Estimate the size of shared archive based on the number of classes in the classlist file Reviewed-by: iklam, jiangli, minqi, dholmes ! src/share/vm/memory/metaspace.cpp ! src/share/vm/memory/metaspaceShared.cpp ! src/share/vm/memory/metaspaceShared.hpp Changeset: b23a19cd0536 Author: ccheung Date: 2014-08-27 10:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b23a19cd0536 8056175: Change "8048150: Allow easy configurations for large CDS archives" triggers conversion warning with older GCC Summary: cast the result of the conversion to uintx Reviewed-by: ccheung, coleenp Contributed-by: volker.simonis at gmail.com ! src/share/vm/memory/metaspaceShared.hpp Changeset: 4c7dd94cdc07 Author: ccheung Date: 2014-09-03 21:20 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/4c7dd94cdc07 Merge Changeset: 66d359ee9681 Author: tschatzl Date: 2014-09-03 17:01 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/66d359ee9681 8057143: Incomplete renaming of variables containing "hrs" to "hrm" related to HeapRegionSeq Summary: Fixup the remaining variable names. Reviewed-by: tonyp, jwilhelm ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Changeset: 966601b12d4f Author: sla Date: 2014-09-04 11:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/966601b12d4f 8057535: add a thread extension class Reviewed-by: mgerdin, bdelsart, jcoomes ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp + src/share/vm/runtime/thread_ext.cpp + src/share/vm/runtime/thread_ext.hpp ! src/share/vm/services/management.cpp Changeset: 017b0145f20c Author: gtriantafill Date: 2014-08-12 14:06 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/017b0145f20c 8054952: [TESTBUG] Add missing NMT2 tests Summary: The new NMT2 tests got lost on the way into jdk9 yesterday, this change adds them. Reviewed-by: coleenp, zgu, ctornqvi + test/runtime/NMT/AutoshutdownNMT.java + test/runtime/NMT/JcmdBaselineDetail.java + test/runtime/NMT/JcmdDetailDiff.java + test/runtime/NMT/JcmdScaleDetail.java + test/runtime/NMT/JcmdSummaryDiff.java + test/runtime/NMT/MallocRoundingReportTest.java + test/runtime/NMT/MallocSiteHashOverflow.java + test/runtime/NMT/MallocStressTest.java + test/runtime/NMT/ReleaseNoCommit.java + test/runtime/NMT/VirtualAllocCommitUncommitRecommit.java Changeset: f5164941749c Author: zgu Date: 2014-08-14 13:15 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/f5164941749c 8054547: Re-enable warning for incompatible java launcher Summary: Re-enabled warning as launcher change reached promotion build Reviewed-by: hseigel, coleenp ! src/share/vm/runtime/arguments.cpp Changeset: 6640f982c1be Author: gtriantafill Date: 2014-09-04 10:14 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/6640f982c1be 8054711: [TESTBUG] Enable NMT2 tests after NMT2 is integrated Summary: enable tests for NMT2 Reviewed-by: ctornqvi, zgu ! test/runtime/NMT/AutoshutdownNMT.java ! test/runtime/NMT/BaselineWithParameter.java ! test/runtime/NMT/CommandLineDetail.java ! test/runtime/NMT/CommandLineEmptyArgument.java ! test/runtime/NMT/CommandLineInvalidArgument.java ! test/runtime/NMT/CommandLineSummary.java ! test/runtime/NMT/CommandLineTurnOffNMT.java ! test/runtime/NMT/JcmdBaselineDetail.java ! test/runtime/NMT/JcmdScale.java ! test/runtime/NMT/JcmdScaleDetail.java ! test/runtime/NMT/JcmdSummaryDiff.java ! test/runtime/NMT/JcmdWithNMTDisabled.java ! test/runtime/NMT/MallocRoundingReportTest.java ! test/runtime/NMT/MallocTestType.java ! test/runtime/NMT/PrintNMTStatistics.java ! test/runtime/NMT/PrintNMTStatisticsWithNMTDisabled.java ! test/runtime/NMT/ReleaseCommittedMemory.java ! test/runtime/NMT/ReleaseNoCommit.java ! test/runtime/NMT/ShutdownTwice.java ! test/runtime/NMT/SummaryAfterShutdown.java ! test/runtime/NMT/SummarySanityCheck.java ! test/runtime/NMT/ThreadedMallocTestType.java ! test/runtime/NMT/ThreadedVirtualAllocTestType.java ! test/runtime/NMT/VirtualAllocTestType.java Changeset: acb20c734237 Author: gtriantafill Date: 2014-08-19 06:47 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/acb20c734237 8055051: runtime/NMT/CommandLineEmptyArgument.java fails Summary: disable failing test Reviewed-by: ctornqvi, zgu ! test/runtime/NMT/CommandLineEmptyArgument.java Changeset: 19fc73d027a6 Author: gtriantafill Date: 2014-08-22 06:46 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/19fc73d027a6 8055052: [TESTBUG] runtime/NMT/JcmdDetailDiff.java fails on Windows when there are no debug symbols available Reviewed-by: ctornqvi, hseigel ! test/runtime/NMT/JcmdDetailDiff.java Changeset: 3670c195cb8b Author: gtriantafill Date: 2014-08-22 07:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3670c195cb8b 8055053: [TESTBUG] runtime/NMT/VirtualAllocCommitUncommitRecommit.java fails Reviewed-by: ctornqvi, zgu ! test/runtime/NMT/VirtualAllocCommitUncommitRecommit.java Changeset: b28ee41fbecb Author: gtriantafill Date: 2014-08-21 14:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b28ee41fbecb 8055684: runtime/NMT/CommandLineEmptyArgument.java fails Reviewed-by: ctornqvi, sla ! test/runtime/NMT/CommandLineEmptyArgument.java Changeset: 3f9ff5e261c6 Author: gtriantafill Date: 2014-08-22 06:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3f9ff5e261c6 8055765: Misplaced @key stress prevents MallocSiteHashOverflow.java and MallocStressTest.java tests from running Reviewed-by: ctornqvi, zgu, hseigel ! test/runtime/NMT/MallocSiteHashOverflow.java ! test/runtime/NMT/MallocStressTest.java Changeset: 1202792c966e Author: jcoomes Date: 2014-09-04 09:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1202792c966e 8054970: gc src file exclusion should exclude alternative sources Reviewed-by: ehelin, stefank ! make/excludeSrc.make Changeset: 8ec8971f511a Author: jcoomes Date: 2014-09-04 16:53 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/8ec8971f511a 8057531: refactor gc argument processing code slightly Reviewed-by: mgerdin, tschatzl, jmasa ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp Changeset: 227a9e5e4b4a Author: sjohanss Date: 2014-09-05 09:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/227a9e5e4b4a 8057536: Refactor G1 to allow context specific allocations Summary: Splitting out a g1 allocator class to simply specialized allocators which can associate each allocation with a given context. Reviewed-by: mgerdin, brutisso + agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1Allocator.java ! agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1CollectedHeap.java ! src/share/vm/gc_implementation/g1/g1AllocRegion.cpp ! src/share/vm/gc_implementation/g1/g1AllocRegion.hpp + src/share/vm/gc_implementation/g1/g1AllocationContext.hpp + src/share/vm/gc_implementation/g1/g1Allocator.cpp + src/share/vm/gc_implementation/g1/g1Allocator.hpp + src/share/vm/gc_implementation/g1/g1Allocator_ext.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.cpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/vmStructs_g1.hpp ! src/share/vm/gc_implementation/g1/vm_operations_g1.cpp ! src/share/vm/gc_implementation/g1/vm_operations_g1.hpp ! src/share/vm/runtime/vm_operations.hpp Changeset: fe392af93c23 Author: iignatyev Date: 2014-08-27 17:09 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/fe392af93c23 8056072: add jprt_optimized targets Reviewed-by: kvn, roland ! make/Makefile ! make/jprt.gmk ! make/jprt.properties Changeset: ddda5de93db5 Author: iignatyev Date: 2014-08-28 23:30 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/ddda5de93db5 8056223: typo in export_optimized_jdk Reviewed-by: kvn ! make/Makefile Changeset: 9be4ca335650 Author: jwilhelm Date: 2014-09-05 00:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9be4ca335650 8056056: Remove unnecessary inclusion of HS_ALT_MAKE from solaris Makefile Summary: Remove unnecessary inclusion of HS_ALT_MAKE from solaris Makefile Reviewed-by: erikj, dholmes ! make/solaris/Makefile Changeset: 76af788b6c16 Author: jcoomes Date: 2014-09-05 12:36 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/76af788b6c16 8057623: add an extension class for argument handling Reviewed-by: brutisso, mgerdin, tschatzl ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp - src/share/vm/runtime/arguments_ext.cpp + src/share/vm/runtime/arguments_ext.hpp Changeset: c9635cad4a5d Author: amurillo Date: 2014-09-05 15:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c9635cad4a5d Merge - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java ! make/solaris/Makefile - src/share/vm/gc_implementation/g1/heapRegionSeq.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.hpp - src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp - src/share/vm/runtime/arguments_ext.cpp Changeset: 232b50b20797 Author: amurillo Date: 2014-09-05 15:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/232b50b20797 Added tag hs25.40-b09 for changeset c9635cad4a5d ! .hgtags Changeset: fe1f65b0a2d8 Author: katleman Date: 2014-09-10 09:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fe1f65b0a2d8 Added tag jdk8u40-b05 for changeset 232b50b20797 ! .hgtags Changeset: 7ff83df6c85a Author: amurillo Date: 2014-09-05 15:10 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7ff83df6c85a 8057649: new hotspot build - hs25.40-b10 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 91cb3b8aac2b Author: thartmann Date: 2014-08-19 07:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/91cb3b8aac2b 8048879: "unexpected yanked node" opto/postaloc.cpp:139 Summary: MemBarAcquireNode prevents deletion of dead LoadNNode. Added condition to 'has_special_unique_user' to trigger deletion. Reviewed-by: kvn, iveresov ! src/share/vm/opto/node.cpp + test/compiler/membars/TestMemBarAcquire.java Changeset: 2545e461115b Author: sla Date: 2014-05-30 19:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2545e461115b 8044398: Attach code should propagate errors in Diagnostic Commands as errors Reviewed-by: dcubed, mgronlun ! src/share/vm/services/attachListener.cpp Changeset: 47e3110c47e8 Author: coleenp Date: 2014-09-05 16:01 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/47e3110c47e8 6642881: Improve performance of Class.getClassLoader() Summary: Add classLoader to java/lang/Class instance for fast access Reviewed-by: alanb, lfoltan, rriggs, vlivanov, twisti, jfranck ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/klass.cpp ! src/share/vm/prims/unsafe.cpp Changeset: 99f0593d8c9f Author: coleenp Date: 2014-09-08 14:13 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/99f0593d8c9f Merge - src/share/vm/runtime/arguments_ext.cpp Changeset: d35872270666 Author: sjohanss Date: 2014-09-09 00:05 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d35872270666 8057658: Enable G1 FullGC extensions Summary: Refactored the G1 FullGC code to enable it to be extended. Reviewed-by: mgerdin, brutisso ! src/share/vm/gc_implementation/g1/g1Allocator.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.hpp + src/share/vm/gc_implementation/g1/g1MarkSweep_ext.cpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/heapRegionManager.cpp ! src/share/vm/memory/space.hpp Changeset: b384ba33c9a0 Author: kvn Date: 2014-07-17 15:40 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b384ba33c9a0 8050942: PPC64: implement template interpreter for ppc64le Reviewed-by: kvn, goetz Contributed-by: asmundak at google.com ! src/cpu/ppc/vm/assembler_ppc.hpp ! src/cpu/ppc/vm/assembler_ppc.inline.hpp ! src/cpu/ppc/vm/interp_masm_ppc_64.cpp ! src/cpu/ppc/vm/interp_masm_ppc_64.hpp ! src/cpu/ppc/vm/templateInterpreter_ppc.cpp ! src/cpu/ppc/vm/templateTable_ppc_64.cpp Changeset: 2219e830b668 Author: kvn Date: 2014-09-08 23:01 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/2219e830b668 Merge Changeset: d8847542f83a Author: kvn Date: 2014-08-13 13:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d8847542f83a 8054927: Missing MemNode::acquire ordering in some volatile Load nodes Summary: Fixed memory ordering parameter and added missing barriers for volatile loads. Reviewed-by: roland, iveresov ! src/share/vm/opto/library_call.cpp Changeset: d635fd1ac81c Author: iveresov Date: 2014-09-08 18:11 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d635fd1ac81c 8056124: Hotspot should use PICL interface to get cacheline size on SPARC Summary: Using libpicl to get L1 data and L2 cache line sizes Reviewed-by: kvn, roland, morris ! make/solaris/makefiles/vm.make ! src/cpu/sparc/vm/vm_version_sparc.cpp ! src/cpu/sparc/vm/vm_version_sparc.hpp ! src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Changeset: 3153adbad1e9 Author: iveresov Date: 2014-09-09 01:58 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/3153adbad1e9 Merge Changeset: 5248357b7113 Author: sjohanss Date: 2014-09-09 04:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5248357b7113 8057710: Refactor G1 heap region default sizes Summary: Refactored the defines to instead be static const in a HeapRegionBounds class. Reviewed-by: mgerdin, tschatzl ! src/share/vm/gc_implementation/g1/heapRegion.cpp + src/share/vm/gc_implementation/g1/heapRegionBounds.hpp + src/share/vm/gc_implementation/g1/heapRegionBounds.inline.hpp Changeset: 63bae08b051e Author: kvn Date: 2014-09-04 23:49 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/63bae08b051e 8057643: Unable to build --with-debug-level=optimized on OSX Summary: Added missing Hotspot make targets for 'optimized' build. Reviewed-by: iveresov ! make/Makefile ! make/bsd/makefiles/universal.gmk Changeset: b6978881f5af Author: kvn Date: 2014-09-09 06:29 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/b6978881f5af Merge Changeset: 17d3ee6e9d3c Author: fzhinkin Date: 2014-09-08 20:32 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/17d3ee6e9d3c 8056091: Move compiler/intrinsics/mathexact/sanity/Verifier to compiler/testlibrary and extend its functionality Reviewed-by: kvn, iignatyev ! test/compiler/intrinsics/mathexact/sanity/AddExactIntTest.java ! test/compiler/intrinsics/mathexact/sanity/AddExactLongTest.java ! test/compiler/intrinsics/mathexact/sanity/DecrementExactIntTest.java ! test/compiler/intrinsics/mathexact/sanity/DecrementExactLongTest.java ! test/compiler/intrinsics/mathexact/sanity/IncrementExactIntTest.java ! test/compiler/intrinsics/mathexact/sanity/IncrementExactLongTest.java ! test/compiler/intrinsics/mathexact/sanity/IntrinsicBase.java ! test/compiler/intrinsics/mathexact/sanity/MultiplyExactIntTest.java ! test/compiler/intrinsics/mathexact/sanity/MultiplyExactLongTest.java ! test/compiler/intrinsics/mathexact/sanity/NegateExactIntTest.java ! test/compiler/intrinsics/mathexact/sanity/NegateExactLongTest.java ! test/compiler/intrinsics/mathexact/sanity/SubtractExactIntTest.java ! test/compiler/intrinsics/mathexact/sanity/SubtractExactLongTest.java - test/compiler/intrinsics/mathexact/sanity/Verifier.java + test/compiler/testlibrary/intrinsics/Verifier.java Changeset: fe6dafcd8ed0 Author: fzhinkin Date: 2014-09-03 15:29 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/fe6dafcd8ed0 8055904: Develop tests for new command-line options related to SHA intrinsics Reviewed-by: kvn, iignatyev + test/compiler/intrinsics/sha/cli/SHAOptionsBase.java + test/compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnSupportedCPU.java + test/compiler/intrinsics/sha/cli/TestUseSHA1IntrinsicsOptionOnUnsupportedCPU.java + test/compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnSupportedCPU.java + test/compiler/intrinsics/sha/cli/TestUseSHA256IntrinsicsOptionOnUnsupportedCPU.java + test/compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnSupportedCPU.java + test/compiler/intrinsics/sha/cli/TestUseSHA512IntrinsicsOptionOnUnsupportedCPU.java + test/compiler/intrinsics/sha/cli/TestUseSHAOptionOnSupportedCPU.java + test/compiler/intrinsics/sha/cli/TestUseSHAOptionOnUnsupportedCPU.java + test/compiler/intrinsics/sha/cli/testcases/GenericTestCaseForOtherCPU.java + test/compiler/intrinsics/sha/cli/testcases/GenericTestCaseForSupportedSparcCPU.java + test/compiler/intrinsics/sha/cli/testcases/GenericTestCaseForUnsupportedSparcCPU.java + test/compiler/intrinsics/sha/cli/testcases/GenericTestCaseForUnsupportedX86CPU.java + test/compiler/intrinsics/sha/cli/testcases/UseSHAIntrinsicsSpecificTestCaseForUnsupportedSparcCPU.java + test/compiler/intrinsics/sha/cli/testcases/UseSHASpecificTestCaseForSupportedSparcCPU.java + test/compiler/intrinsics/sha/cli/testcases/UseSHASpecificTestCaseForUnsupportedSparcCPU.java Changeset: 4d8781a35525 Author: fzhinkin Date: 2014-09-03 15:26 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/4d8781a35525 8055903: Develop sanity tests on SPARC's SHA instructions support Reviewed-by: kvn, iignatyev + test/compiler/intrinsics/sha/sanity/SHASanityTestBase.java + test/compiler/intrinsics/sha/sanity/TestSHA1Intrinsics.java + test/compiler/intrinsics/sha/sanity/TestSHA1MultiBlockIntrinsics.java + test/compiler/intrinsics/sha/sanity/TestSHA256Intrinsics.java + test/compiler/intrinsics/sha/sanity/TestSHA256MultiBlockIntrinsics.java + test/compiler/intrinsics/sha/sanity/TestSHA512Intrinsics.java + test/compiler/intrinsics/sha/sanity/TestSHA512MultiBlockIntrinsics.java + test/compiler/testlibrary/sha/predicate/IntrinsicPredicates.java Changeset: 14b356bbca27 Author: zmajo Date: 2014-08-29 15:32 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/14b356bbca27 8055286: Extend CompileCommand=option to handle numeric parameters Summary: Changed CompileCommand=option to handle "extended" parameters: Klass::method,type,flag,value. Types supported are bool, intx, and uintx. Reviewed-by: kvn, roland ! src/share/vm/compiler/compilerOracle.cpp ! src/share/vm/compiler/compilerOracle.hpp Changeset: 119875f0fc67 Author: kvn Date: 2014-09-02 10:26 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/119875f0fc67 8056964: JDK-8055286 changes are incomplete. Summary: added ccstr and ccstrlist types to compilerOracle 'option' command Reviewed-by: roland ! src/share/vm/ci/ciMethod.cpp ! src/share/vm/ci/ciMethod.hpp ! src/share/vm/compiler/compilerOracle.cpp ! src/share/vm/opto/compile.hpp Changeset: e09c0676c53f Author: simonis Date: 2014-09-03 14:39 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e09c0676c53f 8057129: Fix AIX build after the Extend CompileCommand=option change 8055286 Reviewed-by: kvn ! src/share/vm/compiler/compilerOracle.cpp Changeset: aff6ccb506cb Author: iveresov Date: 2014-09-05 14:39 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/aff6ccb506cb 8056154: JVM crash with EXCEPTION_ACCESS_VIOLATION when there are many threads running Summary: Don't make compiled MH intrinsics not entrant when redefining classes Reviewed-by: kvn, vlivanov ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/code/codeCache.cpp ! src/share/vm/code/compiledIC.cpp ! src/share/vm/code/nmethod.hpp Changeset: 2e6106d44079 Author: iveresov Date: 2014-09-08 11:45 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2e6106d44079 8057750: CTW should not make MH intrinsics not entrant Summary: Do not make MH intrinsics not entrant in CTW Reviewed-by: kvn, vlivanov ! src/share/vm/classfile/classLoader.cpp Changeset: 2d9cef76b5a6 Author: iveresov Date: 2014-09-09 18:20 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/2d9cef76b5a6 Merge Changeset: 094cbdffa87d Author: drchase Date: 2014-08-29 19:45 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/094cbdffa87d 8054292: code comments leak in fastdebug builds Summary: Added deallocation to destructor; hardened interface against misuse Reviewed-by: kvn ! src/share/vm/asm/codeBuffer.cpp ! src/share/vm/asm/codeBuffer.hpp ! src/share/vm/code/codeBlob.cpp ! src/share/vm/compiler/disassembler.cpp ! src/share/vm/interpreter/interpreter.hpp Changeset: 1d8193e4e2a3 Author: drchase Date: 2014-09-09 18:23 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/1d8193e4e2a3 Merge Changeset: bddcb33dadf4 Author: drchase Date: 2014-09-09 19:18 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/bddcb33dadf4 Merge Changeset: 166d744df0de Author: kvn Date: 2014-09-02 12:48 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/166d744df0de 8055494: Add C2 x86 intrinsic for BigInteger::multiplyToLen() method Summary: Add new C2 intrinsic for BigInteger::multiplyToLen() on x86 in 64-bit VM. Reviewed-by: roland ! src/cpu/x86/vm/assembler_x86.cpp ! src/cpu/x86/vm/assembler_x86.hpp ! src/cpu/x86/vm/globals_x86.hpp ! src/cpu/x86/vm/macroAssembler_x86.cpp ! src/cpu/x86/vm/macroAssembler_x86.hpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp ! src/cpu/x86/vm/vm_version_x86.cpp ! src/cpu/x86/vm/vm_version_x86.hpp ! src/share/vm/asm/register.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/runtime.cpp ! src/share/vm/opto/runtime.hpp ! src/share/vm/runtime/stubRoutines.cpp ! src/share/vm/runtime/stubRoutines.hpp ! src/share/vm/runtime/vmStructs.cpp + test/compiler/intrinsics/multiplytolen/TestMultiplyToLen.java Changeset: f6f9aec27858 Author: rbackman Date: 2014-09-10 12:39 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f6f9aec27858 8030976: Untaken paths should be more vigorously pruned at highest optimization level Reviewed-by: roland, vlivanov ! src/share/vm/oops/methodData.hpp ! src/share/vm/opto/parse2.cpp ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/vmStructs.cpp Changeset: 42460b71ba70 Author: rbackman Date: 2014-06-23 13:33 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/42460b71ba70 8046289: compiler/6340864/TestLongVect.java timeout with Reviewed-by: iveresov, vlivanov ! src/share/vm/opto/parse.hpp ! src/share/vm/opto/parse2.cpp Changeset: 4874332f9799 Author: roland Date: 2014-09-09 15:47 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/4874332f9799 8057758: Tests run TypeProfileLevel=222 crash with guarantee(0) failed: must find derived/base pair Summary: Use TypeAryPtr::INT type with offset 0 in inline_multiplyToLen(). Reviewed-by: kvn, iveresov ! src/share/vm/opto/library_call.cpp Changeset: 4edd7572c235 Author: gtriantafill Date: 2014-09-09 09:48 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/4edd7572c235 8054836: [TESTBUG] Test is needed to verify correctness of malloc tracking Reviewed-by: ctornqvi, lfoltan ! test/TEST.groups + test/runtime/NMT/MallocTrackingVerify.java Changeset: 64b480f9eb1a Author: ctornqvi Date: 2014-09-10 17:36 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/64b480f9eb1a Merge Changeset: fd9feb55481c Author: ctornqvi Date: 2014-09-10 19:05 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/fd9feb55481c Merge Changeset: e5668dcf12e9 Author: jcoomes Date: 2014-09-10 13:01 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e5668dcf12e9 8057818: collect allocation context statistics at gc pauses Reviewed-by: mikael, jmasa ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1AllocationContext.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp Changeset: c10b463abc6e Author: jcoomes Date: 2014-09-10 13:01 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c10b463abc6e 8057824: methods to copy allocation context statistics Reviewed-by: mikael, jmasa, tschatzl ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp + src/share/vm/gc_implementation/g1/g1CollectedHeap_ext.cpp ! src/share/vm/gc_interface/collectedHeap.hpp Changeset: fc2c88ea11a9 Author: drchase Date: 2014-07-11 19:51 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/fc2c88ea11a9 8036588: VerifyFieldClosure fails instanceKlass:3133 Summary: Changed deopt live-pointer test to use returns-object instead of live-and-returns-object Reviewed-by: iveresov, kvn, jrose ! src/share/vm/opto/machnode.cpp ! src/share/vm/opto/machnode.hpp ! src/share/vm/opto/output.cpp Changeset: de58d17d9848 Author: drchase Date: 2014-09-10 21:25 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/de58d17d9848 Merge Changeset: 2402de236865 Author: drchase Date: 2014-09-10 21:45 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/2402de236865 Merge Changeset: fa6c442c59ee Author: jcoomes Date: 2014-09-10 16:06 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fa6c442c59ee 8057827: notify an obj when allocation context stats are available Reviewed-by: mikael, jmasa, tschatzl ! src/share/vm/gc_implementation/g1/g1AllocationContext.hpp ! src/share/vm/memory/universe.cpp ! src/share/vm/memory/universe.hpp ! src/share/vm/memory/universe.inline.hpp ! src/share/vm/runtime/serviceThread.cpp + src/share/vm/services/allocationContextService.hpp Changeset: e2452c3ff7fb Author: sjohanss Date: 2014-09-08 15:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e2452c3ff7fb 8057752: WhiteBox extension support for testing Summary: Refactored parts of whitebox.cpp to enable registration of whitebox methods defined outside this file. Reviewed-by: mikael, ctornqvi, jmasa ! src/share/vm/prims/whitebox.cpp ! src/share/vm/prims/whitebox.hpp + src/share/vm/prims/whitebox_ext.cpp ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: f8afcfbdbf1c Author: roland Date: 2014-08-02 07:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f8afcfbdbf1c 8046698: assert(false) failed: only Initialize or AddP expected macro.cpp:943 Summary: PhiNode inserted between AllocateNode and Initialization node confuses allocation elimination Reviewed-by: kvn ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/macro.cpp + test/compiler/macronodes/TestEliminateAllocationPhi.java Changeset: be56d800c946 Author: roland Date: 2014-08-11 15:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/be56d800c946 8054224: Recursive method that was compiled by C1 is unable to catch StackOverflowError Summary: do not update exception cache if exception is replaced when thrown Reviewed-by: kvn, iveresov ! src/share/vm/c1/c1_Runtime1.cpp + test/compiler/exceptions/TestRecursiveReplacedException.java Changeset: b186a900f63a Author: roland Date: 2014-08-27 17:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b186a900f63a 8055946: assert(result == NULL || result->is_oop()) failed: must be oop Summary: caller of popped frame doesn't have valid result during deoptimization Reviewed-by: kvn ! src/share/vm/runtime/deoptimization.cpp Changeset: 07f629123254 Author: kvn Date: 2014-09-11 15:41 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/07f629123254 Merge Changeset: 64156d22e49d Author: dsamersoff Date: 2014-09-11 11:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/64156d22e49d 8032247: SA: Constantpool lookup for invokedynamic is not implemented Summary: implement constant pool lookup for invokedynamic Reviewed-by: sla, sspitsyn ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java ! agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java Changeset: 631667807de7 Author: iveresov Date: 2014-09-11 12:18 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/631667807de7 8058184: Move _highest_comp_level and _highest_osr_comp_level from MethodData to MethodCounters Summary: Tiered policy requires highest compilation levels always available Reviewed-by: kvn, vlivanov ! src/share/vm/oops/method.cpp ! src/share/vm/oops/methodCounters.cpp ! src/share/vm/oops/methodCounters.hpp ! src/share/vm/oops/methodData.cpp ! src/share/vm/oops/methodData.hpp Changeset: 0d78074d2444 Author: iveresov Date: 2014-09-10 19:08 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0d78074d2444 8058092: Test vm/mlvm/meth/stress/compiler/deoptimize. Assert in src/share/vm/classfile/systemDictionary.cpp: MH intrinsic invariant Summary: Throw exception if unable to compile an MH intrinsic Reviewed-by: kvn ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/runtime/arguments.hpp Changeset: a98dd542cd25 Author: iveresov Date: 2014-09-11 20:56 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/a98dd542cd25 Merge Changeset: df66e3a3c4c2 Author: jwilhelm Date: 2014-09-11 14:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/df66e3a3c4c2 8041946: CMM Testing: 8u40 an allocated humongous object at the end of the heap should not prevents shrinking the heap Summary: New test added Reviewed-by: jwilhelm, tschatzl Contributed-by: andrey.x.zakharov at oracle.com + test/gc/g1/TestShrinkDefragmentedHeap.java Changeset: 9b8bd21b6823 Author: jwilhelm Date: 2014-09-11 14:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9b8bd21b6823 8056237: [TESTBUG] gc/g1/TestHumongousShrinkHeap.java fails due to OOM Summary: Added respect for available memory. Renamed function names Reviewed-by: jwilhelm, tschatzl Contributed-by: andrey.x.zakharov at oracle.com ! test/gc/g1/TestHumongousShrinkHeap.java Changeset: dce3f772de9f Author: jcoomes Date: 2014-09-11 17:13 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/dce3f772de9f 8058235: identify GCs initiated to update allocation context stats Reviewed-by: mikael, sjohanss ! src/share/vm/gc_interface/gcCause.cpp ! src/share/vm/gc_interface/gcCause.hpp Changeset: ed3d653e4012 Author: zgu Date: 2014-09-04 14:50 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/ed3d653e4012 8055289: Internal Error: mallocTracker.cpp:146 fatal error: Should not use malloc for big memory block, use virtual memory instead Summary: Return NULL if memory allocation size is bigger than MAX_MALLOC_SIZE when NMT is on Reviewed-by: coleenp, gtriantafill ! src/share/vm/runtime/os.cpp ! test/TEST.groups + test/runtime/NMT/UnsafeMallocLimit.java Changeset: b2029969cc16 Author: coleenp Date: 2014-09-12 01:04 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/b2029969cc16 Merge Changeset: 7301840ea20e Author: vlivanov Date: 2014-03-11 15:06 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/7301840ea20e 8023461: Thread holding lock at safepoint that vm can block on: MethodCompileQueue_lock Reviewed-by: kvn, iveresov ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/compiler/compileBroker.hpp ! src/share/vm/oops/method.hpp ! src/share/vm/prims/whitebox.cpp ! src/share/vm/runtime/advancedThresholdPolicy.cpp Changeset: 46f9331baed5 Author: vlivanov Date: 2014-03-04 02:23 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/46f9331baed5 8025842: Convert warning("Thread holding lock at safepoint that vm can block on") to fatal(...) Reviewed-by: iveresov, roland, coleenp ! src/share/vm/runtime/thread.cpp Changeset: 134f18d0174b Author: vlivanov Date: 2014-05-29 09:41 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/134f18d0174b 8034935: JSR 292 support for PopFrame has a fragile coupling with DirectMethodHandle Reviewed-by: twisti, jrose, sspitsyn ! src/share/vm/interpreter/interpreterRuntime.cpp Changeset: 1de115720e74 Author: vlivanov Date: 2014-07-14 03:24 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1de115720e74 8049528: Method marked w/ @ForceInline isn't inlined with "executed < MinInliningThreshold times" message Reviewed-by: roland, jrose ! src/share/vm/opto/bytecodeInfo.cpp ! src/share/vm/opto/parse.hpp Changeset: dd89808e49ba Author: vlivanov Date: 2014-07-14 03:26 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/dd89808e49ba 8049530: Provide descriptive failure reason for compilation tasks removed for the queue Reviewed-by: roland, iveresov ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/compiler/compileBroker.hpp Changeset: bc4ce33c0985 Author: vlivanov Date: 2014-07-14 03:27 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/bc4ce33c0985 8049529: LogCompilation: annotate make_not_compilable with compilation level Reviewed-by: roland, iveresov ! src/share/vm/oops/method.cpp Changeset: 945284eb609f Author: vlivanov Date: 2014-07-14 03:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/945284eb609f 8049532: LogCompilation: C1: inlining tree is flat (no depth is stored) Reviewed-by: roland, iveresov ! src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java ! src/share/vm/c1/c1_GraphBuilder.cpp Changeset: 5627633fc830 Author: vlivanov Date: 2014-07-14 03:29 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5627633fc830 8048703: ReplacedNodes dumps it's content to tty Reviewed-by: roland, iveresov, drchase ! src/share/vm/opto/replacednodes.cpp Changeset: 47ec483b936e Author: amurillo Date: 2014-09-12 13:10 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/47ec483b936e Merge - test/compiler/intrinsics/mathexact/sanity/Verifier.java Changeset: 3702eb6ec708 Author: amurillo Date: 2014-09-12 13:10 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3702eb6ec708 Added tag hs25.40-b10 for changeset 47ec483b936e ! .hgtags Changeset: 77f55b2e43ae Author: katleman Date: 2014-09-17 13:53 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/77f55b2e43ae Added tag jdk8u40-b06 for changeset 3702eb6ec708 ! .hgtags Changeset: 20c3c41c2b99 Author: amurillo Date: 2014-09-12 13:27 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/20c3c41c2b99 8058275: new hotspot build - hs25.40-b11 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 7dca5ed0e13d Author: dholmes Date: 2014-09-02 21:27 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/7dca5ed0e13d 8046210: Missing memory barrier when reading init_lock Reviewed-by: fparain, dcubed, mdoerr Contributed-by: Bill Pittore ! src/share/vm/oops/instanceKlass.cpp Changeset: 00448aa81791 Author: stefank Date: 2014-09-16 11:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/00448aa81791 8058481: Test gc/class_unloading/TestCMSClassUnloadingDisabledHWM.java was removed, but TEST.groups still refers to it Reviewed-by: tschatzl, fzhinkin, mgerdin ! test/TEST.groups Changeset: 07e01043ade7 Author: thartmann Date: 2014-06-24 08:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/07e01043ade7 8035328: closed/compiler/6595044/Main.java failed with timeout Summary: Patch call sites of non-entrant methods to avoid re-resolving if method is still executed. Reviewed-by: kvn ! src/share/vm/runtime/sharedRuntime.cpp Changeset: 33acb0c42664 Author: thartmann Date: 2014-06-11 09:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/33acb0c42664 8044538: assert(which != imm_operand) failed: instruction is not a movq reg, imm64 Summary: Fixed internal_word_Relocation::target() to not retrieve target address from code if relocation points into the constant section. Added test. Reviewed-by: kvn ! src/share/vm/code/relocInfo.cpp + test/compiler/relocations/TestPrintRelocations.java Changeset: c02ec279b062 Author: brutisso Date: 2014-09-16 14:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c02ec279b062 8057768: Make heap region region type in G1 HeapRegion explicit Reviewed-by: brutisso, tschatzl ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp ! src/share/vm/gc_implementation/g1/g1HotCardCache.cpp ! src/share/vm/gc_implementation/g1/g1RemSetSummary.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/heapRegionSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionSet.hpp + src/share/vm/gc_implementation/g1/heapRegionType.cpp + src/share/vm/gc_implementation/g1/heapRegionType.hpp Changeset: bdd2310490aa Author: brutisso Date: 2014-09-16 13:30 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/bdd2310490aa Merge Changeset: be71c49ae55a Author: gtriantafill Date: 2014-09-17 05:30 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/be71c49ae55a 8056263: [TESTBUG] Re-enable NMTWithCDS.java test Reviewed-by: lfoltan, hseigel ! test/runtime/NMT/NMTWithCDS.java Changeset: 4489ac5b084a Author: amurillo Date: 2014-09-19 02:16 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/4489ac5b084a Merge Changeset: b63d0e8bfc07 Author: amurillo Date: 2014-09-19 02:16 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b63d0e8bfc07 Added tag hs25.40-b11 for changeset 4489ac5b084a ! .hgtags Changeset: 5dc11309d4c6 Author: katleman Date: 2014-09-24 11:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5dc11309d4c6 Added tag jdk8u40-b07 for changeset b63d0e8bfc07 ! .hgtags Changeset: 88467a76a382 Author: amurillo Date: 2014-09-19 02:23 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/88467a76a382 8058798: new hotspot build - hs25.40-b12 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 9c8439756c05 Author: mseledtsov Date: 2014-09-19 11:12 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/9c8439756c05 8052313: Backport CDS tests from JDK-9 to jdk8_u40 Summary: Copied CDS tests from jdk-9 to jdk8u40 Reviewed-by: ccheung, dholmes + test/runtime/SharedArchiveFile/ArchiveDoesNotExist.java ! test/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java + test/runtime/SharedArchiveFile/DefaultUseWithClient.java + test/runtime/SharedArchiveFile/LimitSharedSizes.java + test/runtime/SharedArchiveFile/SharedBaseAddress.java + test/runtime/SharedArchiveFile/SpaceUtilizationCheck.java Changeset: 966205f0e717 Author: iveresov Date: 2014-09-19 11:53 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/966205f0e717 8058564: Tiered compilation performance drop in PIT Summary: Ensure MethodCounters are created before method is enqueued for compilation Reviewed-by: kvn, drchase, jiangli, roland ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/oops/method.cpp ! src/share/vm/oops/method.hpp Changeset: 97ad90b2712c Author: sla Date: 2014-09-24 09:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/97ad90b2712c 8058936: hotspot/test/Makefile should use jtreg script from $JT_HOME/bin/jreg (instead of $JT_HOME/win32/bin/jtreg) Reviewed-by: dholmes, stefank ! test/Makefile Changeset: a60a1309a03a Author: iveresov Date: 2014-09-23 15:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a60a1309a03a 8058744: Crash in C1 OSRed method w/ Unsafe usage Summary: Fix UnsafeRawOp optimizations Reviewed-by: kvn, drchase, vlivanov ! src/share/vm/c1/c1_Canonicalizer.cpp ! src/share/vm/c1/c1_LIRGenerator.cpp Changeset: 50d3433155d9 Author: iveresov Date: 2014-09-23 17:24 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/50d3433155d9 8059002: 8058744 needs a test case Summary: Added a test case the UnsafeRawOp intrinsics Reviewed-by: kvn + test/compiler/unsafe/UnsafeRaw.java Changeset: 152cf4afc11f Author: mgerdin Date: 2014-08-29 13:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/152cf4afc11f 8056084: Refactor Hashtable to allow implementations without rehashing support Reviewed-by: gziemski, jmasa, brutisso, coleenp, tschatzl ! src/share/vm/classfile/symbolTable.cpp ! src/share/vm/classfile/symbolTable.hpp ! src/share/vm/utilities/hashtable.cpp ! src/share/vm/utilities/hashtable.hpp Changeset: 7baf47cb97cb Author: mgerdin Date: 2014-08-29 13:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7baf47cb97cb 8048268: G1 Code Root Migration performs poorly Summary: Replace G1CodeRootSet with a Hashtable based implementation, merge Code Root Migration phase into Code Root Scanning Reviewed-by: jmasa, brutisso, tschatzl ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.cpp ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1EvacFailure.hpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.cpp ! src/share/vm/gc_implementation/g1/g1RemSet.hpp ! src/share/vm/gc_implementation/g1/g1RemSetSummary.cpp ! src/share/vm/gc_implementation/g1/g1_globals.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp ! src/share/vm/memory/freeList.cpp ! src/share/vm/utilities/hashtable.cpp Changeset: 58925d1f325e Author: mgerdin Date: 2014-09-08 17:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/58925d1f325e 8057722: G1: Code root hashtable updated incorrectly when evacuation failed Reviewed-by: brutisso, jwilhelm ! src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.cpp Changeset: 318cc6fdae90 Author: morris Date: 2014-09-18 11:46 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/318cc6fdae90 8050022: linux-sparcv9: assert(SharedSkipVerify || obj->is_oop()) failed: sanity check Summary: Provide promoted stack slots for floating-point registers in the SPARC c_calling_convention. Reviewed-by: kvn, jrose, drchase ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/sparc/vm/sparc.ad Changeset: 5c1b5be2c69b Author: amurillo Date: 2014-09-26 03:32 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5c1b5be2c69b Merge Changeset: 905a16825d29 Author: amurillo Date: 2014-09-26 03:32 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/905a16825d29 Added tag hs25.40-b12 for changeset 5c1b5be2c69b ! .hgtags Changeset: 43aaf8ca42ac Author: asaha Date: 2014-10-01 07:45 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/43aaf8ca42ac Added tag jdk8u40-b08 for changeset 905a16825d29 ! .hgtags Changeset: 46ffdf376cb5 Author: amurillo Date: 2014-09-26 03:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/46ffdf376cb5 8059204: new hotspot build - hs25.40-b13 Reviewed-by: jcoomes ! make/hotspot_version Changeset: c204e2044c29 Author: mgronlun Date: 2014-09-29 13:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c204e2044c29 8038624: interpretedVFrame::expressions() must respect InterpreterOopMap for liveness Reviewed-by: coleenp, minqi ! src/share/vm/interpreter/oopMapCache.cpp ! src/share/vm/interpreter/oopMapCache.hpp ! src/share/vm/runtime/vframe.cpp ! src/share/vm/runtime/vframe.hpp Changeset: 13dbe89e447c Author: iveresov Date: 2014-09-26 20:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/13dbe89e447c 8058536: java/lang/instrument/NativeMethodPrefixAgent.java fails due to VirtualMachineError: out of space in CodeCache for method handle intrinsic Summary: Make sure MH intrinsics can be created before compiler instances Reviewed-by: kvn ! src/share/vm/classfile/systemDictionary.cpp Changeset: fa56205f142c Author: tonyp Date: 2014-09-10 11:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/fa56205f142c 8057799: Unnecessary NULL check in G1KeepAliveClosure Reviewed-by: tschatzl, stefank ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: 6948da6d7c13 Author: tschatzl Date: 2014-09-30 09:44 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6948da6d7c13 8052172: Evacuation failure handling in G1 does not evacuate all objects if -XX:-G1DeferredRSUpdate is set Summary: Remove -XX:-G1DeferredRSUpdate functionality as it is racy. During evacuation failure handling, threads where evacuation failure handling occurred may try to add remembered sets to regions which remembered sets are currently being scanned. The iterator to handle the remembered set scan does not support addition of entries during scan and so may skip valid references. Reviewed-by: iveresov, brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1EvacFailure.hpp ! src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.hpp ! src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.cpp ! src/share/vm/gc_implementation/g1/g1RemSet.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp ! src/share/vm/gc_implementation/g1/g1_globals.hpp - test/gc/g1/TestDeferredRSUpdate.java Changeset: 8ba0078861d4 Author: jwilhelm Date: 2014-09-27 15:11 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8ba0078861d4 8047976: Ergonomics for GC thread counts should update the flags Summary: Ergonomics updates flags for number of GC threads Reviewed-by: tschatzl, jwilhelm Contributed-by: sangheon.kim at oracle.com ! src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp ! src/share/vm/runtime/arguments.cpp + test/gc/arguments/TestG1ConcRefinementThreads.java Changeset: 2d6a3328ec99 Author: brutisso Date: 2014-09-30 08:29 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/2d6a3328ec99 Merge Changeset: 43ce58b4717b Author: fzhinkin Date: 2014-10-02 11:31 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/43ce58b4717b 8059226: Names of rtm_state_change and unstable_if deoptimization reasons were swapped in 8u40 Summary: fixed order of DeoptReason values declaration so now it matches the order used in jdk9 and the names order in Deoptimization::_trap_reason_name. Reviewed-by: kvn ! src/share/vm/runtime/deoptimization.hpp Changeset: f6bde7889409 Author: goetz Date: 2014-10-02 09:32 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f6bde7889409 8059592: Recent bugfixes in ppc64 port. Reviewed-by: kvn ! make/aix/makefiles/fastdebug.make ! src/cpu/ppc/vm/assembler_ppc.hpp ! src/cpu/ppc/vm/assembler_ppc.inline.hpp ! src/cpu/ppc/vm/globalDefinitions_ppc.hpp ! src/cpu/ppc/vm/interp_masm_ppc_64.cpp ! src/cpu/ppc/vm/interpreter_ppc.cpp ! src/cpu/ppc/vm/macroAssembler_ppc.cpp ! src/cpu/ppc/vm/ppc.ad ! src/cpu/ppc/vm/stubGenerator_ppc.cpp ! src/cpu/ppc/vm/templateTable_ppc_64.cpp ! src/os_cpu/linux_ppc/vm/prefetch_linux_ppc.inline.hpp Changeset: 1ff288f0dae4 Author: coleenp Date: 2014-09-25 07:52 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/1ff288f0dae4 8058818: Allocation of more then 1G of memory using Unsafe.allocateMemory is still causing a fatal error on 32bit platforms Summary: The assert was firing for NMT_Off and minimal too even though the size isn't used. Reviewed-by: gtriantafill, dholmes ! src/share/vm/services/mallocTracker.cpp + test/runtime/NMT/UnsafeMallocLimit2.java Changeset: dc8637067fc1 Author: coleenp Date: 2014-10-02 20:12 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/dc8637067fc1 Merge Changeset: ff0986dac06d Author: coleenp Date: 2014-10-02 22:21 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/ff0986dac06d Merge Changeset: 7d68a5b1069d Author: coleenp Date: 2014-09-26 12:50 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/7d68a5b1069d 8058927: ATG throws ClassNotFoundException Summary: ClassLoader for array klass set to null and not the class loader of the component type. Reviewed-by: dcubed, ctornqvi ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/oops/arrayKlass.cpp + test/runtime/LoadClass/ShowClassLoader.java Changeset: 7dcde22f261f Author: coleenp Date: 2014-10-02 20:17 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/7dcde22f261f Merge Changeset: a66c95853c53 Author: coleenp Date: 2014-10-02 23:10 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/a66c95853c53 Merge Changeset: d96716f6cbba Author: amurillo Date: 2014-10-03 01:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d96716f6cbba Merge - test/gc/g1/TestDeferredRSUpdate.java Changeset: 7ff8d51e0d8f Author: amurillo Date: 2014-10-03 01:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7ff8d51e0d8f Added tag hs25.40-b13 for changeset d96716f6cbba ! .hgtags Changeset: e11846cf32bf Author: katleman Date: 2014-10-08 12:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e11846cf32bf Added tag jdk8u40-b09 for changeset 7ff8d51e0d8f ! .hgtags Changeset: 23e730f036b1 Author: amurillo Date: 2014-10-03 01:27 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/23e730f036b1 8059618: new hotspot build - hs25.40-b14 Reviewed-by: jcoomes ! make/hotspot_version Changeset: b29261b17343 Author: iveresov Date: 2014-10-03 13:34 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b29261b17343 8059621: JVM crashes with "unexpected index type" assert in LIRGenerator::do_UnsafeGetRaw Summary: Get types from LIR instructions instead of HIR Reviewed-by: kvn ! src/share/vm/c1/c1_LIRGenerator.cpp Changeset: 4001310db3f5 Author: jmasa Date: 2013-11-21 09:57 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/4001310db3f5 8026303: CMS: JVM intermittently crashes with "FreeList of size 258 violates Conservation Principle" assert Reviewed-by: tschatzl, brutisso ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Changeset: 1b8c9d3d8764 Author: iignatyev Date: 2014-09-16 21:29 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/1b8c9d3d8764 8057165: [TESTBUG] Need a test to cover JDK-8054883 Reviewed-by: kvn, iveresov, iignatyev Contributed-by: Boris Molodenkov + test/compiler/osr/TestRangeCheck.java Changeset: d3fd73295885 Author: sjohanss Date: 2014-10-06 10:11 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d3fd73295885 8059466: Force young GC to initiate marking cycle when stat update is requested Summary: Enable yc to be forced for stat update. Reviewed-by: mgerdin, jcoomes ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/vm_operations_g1.cpp ! src/share/vm/gc_interface/gcCause.cpp ! src/share/vm/gc_interface/gcCause.hpp Changeset: 1b61c1b7b519 Author: brutisso Date: 2014-10-07 15:14 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/1b61c1b7b519 Merge Changeset: 85f4c4ecc963 Author: stefank Date: 2014-09-16 10:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/85f4c4ecc963 8058475: TestCMSClassUnloadingEnabledHWM.java fails with '.*CMS Initial Mark.*' missing from stdout/stderr Reviewed-by: mgerdin, tschatzl, brutisso - test/gc/class_unloading/AllocateBeyondMetaspaceSize.java ! test/gc/class_unloading/TestCMSClassUnloadingEnabledHWM.java ! test/gc/class_unloading/TestG1ClassUnloadingHWM.java Changeset: e193bbae24ef Author: amurillo Date: 2014-10-10 03:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e193bbae24ef Merge - test/gc/class_unloading/AllocateBeyondMetaspaceSize.java Changeset: 584df6794686 Author: amurillo Date: 2014-10-10 03:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/584df6794686 Added tag hs25.40-b14 for changeset e193bbae24ef ! .hgtags Changeset: 8cb56c8cb30d Author: jiangli Date: 2014-09-15 16:39 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/8cb56c8cb30d Merge ! .hgtags ! make/hotspot_version ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/classfile/classLoader.hpp ! src/share/vm/classfile/stackMapFrame.cpp ! src/share/vm/classfile/stackMapFrame.hpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/memory/filemap.cpp ! src/share/vm/memory/filemap.hpp ! src/share/vm/memory/metaspaceShared.cpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/arrayKlass.hpp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp Changeset: f0bedf980c65 Author: asaha Date: 2014-09-16 13:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f0bedf980c65 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/klass.cpp - test/compiler/intrinsics/mathexact/sanity/Verifier.java Changeset: 639abc668bfe Author: asaha Date: 2014-09-17 11:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/639abc668bfe Added tag jdk8u25-b17 for changeset 28b50d07f6f8 ! .hgtags Changeset: 3c2be6cc9d8e Author: asaha Date: 2014-09-19 12:22 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3c2be6cc9d8e Merge ! .hgtags Changeset: 817815bc3502 Author: asaha Date: 2014-09-22 08:24 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/817815bc3502 Merge ! .hgtags Changeset: 094ecb87b469 Author: asaha Date: 2014-09-24 12:23 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/094ecb87b469 Merge ! .hgtags ! make/hotspot_version Changeset: 20214a1d2c28 Author: asaha Date: 2014-10-06 15:49 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/20214a1d2c28 Merge ! .hgtags ! make/hotspot_version Changeset: a6fdcad26986 Author: asaha Date: 2014-10-07 08:01 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a6fdcad26986 Added tag jdk8u25-b18 for changeset 639abc668bfe ! .hgtags Changeset: 8956e19bdffb Author: asaha Date: 2014-10-07 14:35 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/8956e19bdffb Merge ! .hgtags Changeset: 73d61cd3f8e9 Author: asaha Date: 2014-10-08 14:13 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/73d61cd3f8e9 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/runtime/arguments.cpp - test/gc/g1/TestDeferredRSUpdate.java Changeset: 1b3abbeee961 Author: asaha Date: 2014-10-14 10:20 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1b3abbeee961 Merge ! .hgtags ! make/hotspot_version - test/gc/class_unloading/AllocateBeyondMetaspaceSize.java Changeset: 9cf6c920a0ac Author: katleman Date: 2014-10-15 11:14 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/9cf6c920a0ac Added tag jdk8u40-b10 for changeset 1b3abbeee961 ! .hgtags Changeset: 1fa6d1542e32 Author: amurillo Date: 2014-10-10 03:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1fa6d1542e32 8059655: new hotspot build - hs25.40-b15 Reviewed-by: jcoomes ! make/hotspot_version Changeset: b509b7ff561c Author: ehelin Date: 2014-10-01 16:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b509b7ff561c 8049599: MetaspaceGC::_capacity_until_GC can overflow Reviewed-by: jmasa, stefank ! src/share/vm/memory/metaspace.cpp ! src/share/vm/memory/metaspace.hpp ! src/share/vm/prims/whitebox.cpp + test/gc/metaspace/TestCapacityUntilGCWrapAround.java ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: e3ed86fc15ed Author: tschatzl Date: 2014-09-29 09:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e3ed86fc15ed 8043766: CMM Testing: 8u40 Decommit auxiliary data structures Summary: Check that native memory is returned to the system when decommiting memory within the heap with G1. Reviewed-by: tschatzl, jwilhelm Contributed-by: Andrey Zakharov ! test/TEST.groups + test/gc/g1/TestShrinkAuxiliaryData.java + test/gc/g1/TestShrinkAuxiliaryData00.java + test/gc/g1/TestShrinkAuxiliaryData05.java + test/gc/g1/TestShrinkAuxiliaryData10.java + test/gc/g1/TestShrinkAuxiliaryData15.java + test/gc/g1/TestShrinkAuxiliaryData20.java + test/gc/g1/TestShrinkAuxiliaryData25.java + test/gc/g1/TestShrinkAuxiliaryData30.java Changeset: 0fcaab91d485 Author: brutisso Date: 2014-10-10 15:45 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0fcaab91d485 8055816: Remove dead code in g1BlockOffsetTable Reviewed-by: tschatzl, mgerdin ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp ! src/share/vm/gc_implementation/g1/heapRegion.hpp Changeset: e7d0505c8a30 Author: tschatzl Date: 2014-10-10 15:51 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e7d0505c8a30 8059758: Footprint regressions with JDK-8038423 Summary: Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything. Reviewed-by: jwilhelm, brutisso ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.hpp ! src/share/vm/gc_implementation/g1/g1CardCounts.cpp ! src/share/vm/gc_implementation/g1/g1CardCounts.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.cpp ! src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.hpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp Changeset: fa14838b03c4 Author: brutisso Date: 2014-09-30 13:14 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/fa14838b03c4 8059452: G1: Change the default values for G1HeapWastePercent and G1MixedGCLiveThresholdPercent Reviewed-by: tschatzl, jwilhelm ! src/share/vm/gc_implementation/g1/g1_globals.hpp Changeset: ab4548891480 Author: adlertz Date: 2014-05-20 09:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ab4548891480 6883953: java -client -XX:ValueMapInitialSize=0 crashes Summary: Added lower bound check for ValueMapInitialSize Reviewed-by: kvn Contributed-by: ygaevsky at azulsystems.com ! src/share/vm/runtime/arguments.cpp Changeset: 05b726bce3e6 Author: mlarsson Date: 2014-10-14 19:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/05b726bce3e6 8060116: After JDK-8047976 gc/g1/TestSummarizeRSetStatsThreads fails Summary: Also reviewed by: sangheon.kim at oracle.com Reviewed-by: brutisso ! test/gc/g1/TestSummarizeRSetStatsThreads.java Changeset: fffbcc20bf61 Author: mgronlun Date: 2014-02-24 13:29 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/fffbcc20bf61 8035650: Exclude AIX from VS.NET make/windows/projectcreator.make Reviewed-by: dholmes, sla ! make/windows/makefiles/projectcreator.make Changeset: f10fe402dfb1 Author: amurillo Date: 2014-10-17 07:20 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f10fe402dfb1 Merge ! make/hotspot_version ! src/share/vm/runtime/arguments.cpp Changeset: 99372b2fee0e Author: amurillo Date: 2014-10-17 07:20 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/99372b2fee0e Added tag hs25.40-b15 for changeset f10fe402dfb1 ! .hgtags Changeset: 8538a606a105 Author: katleman Date: 2014-10-22 11:18 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/8538a606a105 Added tag jdk8u40-b11 for changeset 99372b2fee0e ! .hgtags Changeset: 73b3a2d4d4ef Author: amurillo Date: 2014-10-17 07:27 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/73b3a2d4d4ef 8061275: new hotspot build - hs25.40-b16 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 331df100ad40 Author: kvn Date: 2014-10-02 11:36 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/331df100ad40 8059299: assert(adr_type != NULL) failed: expecting TypeKlassPtr Summary: Use top() for dead paths when initializing Phi node of exceptions klasses in Parse::catch_inline_exceptions(). Reviewed-by: jrose, vlivanov ! src/share/vm/opto/doCall.cpp + test/compiler/exceptions/CatchInlineExceptions.java Changeset: 417e3b8d04c5 Author: coleenp Date: 2014-10-10 19:36 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/417e3b8d04c5 8059100: SIGSEGV VirtualMemoryTracker::remove_released_region Summary: Disallow increasing native memory tracking level Reviewed-by: hseigel, ctornqvi, gtriantafill ! src/share/vm/prims/whitebox.cpp ! src/share/vm/services/mallocTracker.cpp ! src/share/vm/services/mallocTracker.hpp ! src/share/vm/services/memBaseline.hpp ! src/share/vm/services/memReporter.hpp ! src/share/vm/services/memTracker.cpp ! src/share/vm/services/memTracker.hpp ! src/share/vm/services/virtualMemoryTracker.cpp ! src/share/vm/services/virtualMemoryTracker.hpp ! src/share/vm/utilities/vmError.cpp + test/runtime/NMT/ChangeTrackingLevel.java ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: af6ff94a005d Author: coleenp Date: 2014-10-20 16:37 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/af6ff94a005d Merge Changeset: e48395e6a91b Author: kvn Date: 2014-10-17 15:35 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e48395e6a91b 8059139: It should be possible to explicitly disable usage of TZCNT instr w/ -XX:-UseBMI1Instructions Reviewed-by: iveresov ! src/cpu/x86/vm/vm_version_x86.cpp Changeset: 8585e75970c7 Author: mikael Date: 2014-10-16 20:20 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/8585e75970c7 8049071: Add jtreg jobs to JPRT for hotspot Reviewed-by: dholmes, iveresov ! make/jprt.properties ! test/Makefile ! test/TEST.groups Changeset: a477f1af1bac Author: dholmes Date: 2014-09-23 21:33 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/a477f1af1bac 8058919: Add sanity test for minimal VM in test/Makefile Reviewed-by: twisti, kvn, coleenp ! test/Makefile Changeset: 9609f24cecee Author: stefank Date: 2014-07-07 10:18 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9609f24cecee 8049411: Minimal VM build broken after gcId.cpp was added Reviewed-by: brutisso, ehelin, tschatzl, dholmes ! make/excludeSrc.make Changeset: c12e6bac4ad0 Author: dholmes Date: 2014-09-10 00:44 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/c12e6bac4ad0 8056183: os::is_MP() always reports true when NMT is enabled Reviewed-by: shade, coleenp, bdelsart ! src/share/vm/runtime/os.hpp Changeset: 03ca22ba9cf5 Author: dholmes Date: 2014-10-21 21:39 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/03ca22ba9cf5 Merge Changeset: 8e15758b2e94 Author: sla Date: 2014-01-08 08:34 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8e15758b2e94 8031376: TraceClassLoading expects there to be a (Java) caller when you load a class with the bootstrap class loader Reviewed-by: sla, dholmes Contributed-by: jeremymanson at google.com ! src/share/vm/classfile/classFileParser.cpp Changeset: 8b9ec2da541a Author: amurillo Date: 2014-10-23 15:32 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/8b9ec2da541a Merge Changeset: 6b93bf9ea3ea Author: amurillo Date: 2014-10-23 15:32 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6b93bf9ea3ea Added tag hs25.40-b16 for changeset 8b9ec2da541a ! .hgtags Changeset: b251d9b90799 Author: katleman Date: 2014-10-29 10:50 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b251d9b90799 Added tag jdk8u40-b12 for changeset 6b93bf9ea3ea ! .hgtags Changeset: 9f35f614847d Author: dbuck Date: 2014-10-31 12:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/9f35f614847d 8060169: Update the Crash Reporting URL in the Java crash log Summary: Update the URL for HotSpot bug reports. Reviewed-by: dcubed, rdurbin ! src/share/vm/runtime/arguments.cpp Changeset: c1d0d673b1ba Author: lana Date: 2014-10-31 20:18 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c1d0d673b1ba Merge Changeset: 68dd4d2b8dc0 Author: amurillo Date: 2014-10-23 15:46 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/68dd4d2b8dc0 8061861: new hotspot build - hs25.40-b17 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 46140919bf90 Author: jiangli Date: 2014-10-14 12:09 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/46140919bf90 8047934: Adding new API for unlocking diagnostic argument. Summary: New API for unlocking diagnostic argument. Reviewed-by: dholmes, ccheung, egahlin, iklam, bdelsart ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments_ext.hpp ! src/share/vm/runtime/globals.cpp ! src/share/vm/runtime/globals.hpp Changeset: 20ce707c3aba Author: jiangli Date: 2014-10-24 02:41 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/20ce707c3aba Merge Changeset: 1bd99e1dc168 Author: jiangli Date: 2014-10-24 03:03 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/1bd99e1dc168 Merge Changeset: 1d6eb209432a Author: sjohanss Date: 2014-10-20 10:18 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1d6eb209432a 8058568: GC cleanup phase can cause G1 skipping a System.gc() Summary: Marking G1 FullGC as a _full collection and passing down the correct before count. Reviewed-by: brutisso, mgerdin ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/vm_operations_g1.hpp Changeset: 87f199a9c1b1 Author: vlivanov Date: 2014-09-29 11:46 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/87f199a9c1b1 8058825: EA: ConnectionGraph::split_unique_types does incorrect scalar replacement Reviewed-by: kvn ! src/share/vm/opto/escape.cpp Changeset: 8ed0a8dbea70 Author: vlivanov Date: 2014-10-01 12:34 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/8ed0a8dbea70 8059556: C2: crash while inlining MethodHandle invocation w/ null receiver Reviewed-by: kvn, jrose ! src/share/vm/opto/callGenerator.cpp + test/compiler/jsr292/NullConstantReceiver.java Changeset: 9dc314de223d Author: vlivanov Date: 2014-10-01 12:34 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/9dc314de223d 8058828: Wrong ciConstant type for arrays from ConstantPool::_resolved_reference Reviewed-by: kvn, jrose ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/ci/ciTypeFlow.cpp + test/compiler/jsr292/VMAnonymousClasses.java Changeset: b9c94af14fd0 Author: neliasso Date: 2014-10-20 13:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b9c94af14fd0 8059445: Remove CompilationRepeat Summary: Remove product flag -XX:CompilationRepeat Reviewed-by: kvn, iveresov ! src/share/vm/c1/c1_globals.hpp ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/runtime/arguments.cpp Changeset: 90257dfad6e3 Author: acorn Date: 2014-10-24 12:29 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/90257dfad6e3 8043275: 8u40 backport: Fix interface initialization for default methods. Reviewed-by: dcubed, coleenp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classFileParser.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! test/runtime/lambda-features/InvokespecialInterface.java + test/runtime/lambda-features/TestInterfaceInit.java + test/runtime/lambda-features/TestInterfaceOrder.java Changeset: 5a0b89f8d29a Author: acorn Date: 2014-10-24 21:25 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/5a0b89f8d29a Merge Changeset: f31986da9319 Author: morris Date: 2014-08-13 13:00 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f31986da9319 8054530: C2: assert(res == old_res) failed: Inconsistency between old and new Summary: Fixed signedness problem with assertion. Reviewed-by: kvn ! src/share/vm/oops/objArrayOop.hpp Changeset: e4bd8244c085 Author: kvn Date: 2014-08-05 14:44 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e4bd8244c085 8049542: C2: assert(size_in_words <= (julong)max_jint) failed: no overflow Summary: Added juint cast to avoid gcc problem we have on one of our platforms. Reviewed-by: dholmes, roland ! src/share/vm/oops/typeArrayOop.hpp Changeset: e244cb6bdedf Author: gtriantafill Date: 2014-10-28 13:30 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e244cb6bdedf 8058606: [TESTBUG] Detailed Native Memory Tracking (NMT) data is not verified as output at VM exit Reviewed-by: coleenp, hseigel ! test/runtime/NMT/PrintNMTStatistics.java Changeset: b8e2e616c1e9 Author: iveresov Date: 2014-10-23 09:41 -1000 URL: http://hg.openjdk.java.net/graal/graal/rev/b8e2e616c1e9 8047383: SIGBUS in C2 compiled method weblogic.wsee.jaxws.framework.jaxrpc.EnvironmentFactory$SimulatedWsdlDefinitions. Summary: Do not rematerialize constant table loads in PhaseAggressiveCoalesce::insert_copies() Reviewed-by: kvn ! src/share/vm/opto/coalesce.cpp Changeset: c49cd31b6da6 Author: iveresov Date: 2014-10-25 21:02 -1000 URL: http://hg.openjdk.java.net/graal/graal/rev/c49cd31b6da6 8059200: Promoted JDK9 b31 for Solaris-amd64 fails (Error: dl failure on line 744, no picl library) on Solaris 11.1 Summary: Manually load libpicl.so (used on SPARC only) Reviewed-by: kvn ! make/solaris/makefiles/vm.make ! src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Changeset: 678a467a733b Author: minqi Date: 2014-05-27 08:44 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/678a467a733b 8038422: CDS test failed: assert((size % os::vm_allocation_granularity()) == 0) failed when limiting SharedMiscDataSize Summary: In debug version, the assert is against os::vm_allocation_granularity(), but in initialization, we use os::vm_page_size() to align the allocation size. In windows, _vm_page_size and _vm_allocation_granularity may not be same. In debug version, the assert is against os::vm_allocation_granularity(), but in initialization, we use os::vm_page_size() to align the allocation size. In windows, _vm_page_size and _vm_allocation_granularity may not be same. Reviewed-by: dholmes, iklam, jiangli, coleenp Contributed-by: yumin.qi at oracle.com ! src/share/vm/memory/metaspace.cpp Changeset: ef9eda2c1abe Author: sjohanss Date: 2014-10-30 10:51 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ef9eda2c1abe 8061234: ResourceContext.requestAccurateUpdate() is unreliable Summary: Changing copy_allocation_context_stats to return if there are more stats available after the copy. Reviewed-by: rriggs, jcoomes ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap_ext.cpp ! src/share/vm/gc_interface/collectedHeap.hpp Changeset: 90297adbda9d Author: kvn Date: 2014-10-24 10:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/90297adbda9d 8041984: CompilerThread seems to occupy all CPU in a very rare situation Summary: Add new timeout checks to EA. Reviewed-by: iveresov, drchase ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/escape.hpp Changeset: 03e6d34be1f5 Author: ccheung Date: 2014-10-30 13:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/03e6d34be1f5 8038268: VM Crashes in MetaspaceShared::generate_vtable_methods while creating CDS archive with limiting SharedMiscCodeSize Summary: estimate the minimum required size for the misc code region and check if the specified misc code region size meets the minimum size requirement Reviewed-by: jiangli, dholmes ! src/share/vm/memory/metaspace.cpp ! src/share/vm/memory/metaspaceShared.hpp ! src/share/vm/utilities/debug.cpp ! src/share/vm/utilities/debug.hpp ! test/runtime/SharedArchiveFile/LimitSharedSizes.java Changeset: d63ce76a0f0e Author: jmasa Date: 2014-08-05 15:41 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d63ce76a0f0e 8034056: assert(_heap_alignment >= _space_alignment) failed: heap_alignment less than space_alignment Reviewed-by: tschatzl, tamao ! src/share/vm/memory/collectorPolicy.cpp Changeset: 41dcdd636080 Author: anoll Date: 2014-04-29 07:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/41dcdd636080 8040798: compiler/startup/SmallCodeCacheStartup.java timed out in RT_Baseline Summary: Fixes broken memory freeing of compile queue tasks and makes sure that blocking compiles do not hang the VM if compilation gets disabled due to a full code cache. Reviewed-by: kvn, iveresov ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/compiler/compileBroker.hpp ! src/share/vm/runtime/advancedThresholdPolicy.cpp ! src/share/vm/runtime/simpleThresholdPolicy.cpp Changeset: 0c0e68524c17 Author: anoll Date: 2014-05-07 22:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0c0e68524c17 8042570: Excessive number of tests timing out on nightly testing due to fix for 8040798 Summary: Remove unnecessary lock in CompileBroker::mark_on_stack() that causes the deadlock Reviewed-by: kvn, dcubed ! src/share/vm/compiler/compileBroker.cpp Changeset: c47fcf523fff Author: anoll Date: 2014-05-06 09:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c47fcf523fff 8042428: CompileQueue::free_all() code is incorrect Summary: Free task after getting next pointer of freelist. Reviewed-by: kvn, adlertz ! src/share/vm/compiler/compileBroker.cpp Changeset: 28051f14c328 Author: anoll Date: 2014-06-20 09:25 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/28051f14c328 8043158: Crash in CodeSweeperSweepNoFlushTest in CompileQueue::free_all() Summary: Acquire lock before calling notify() Reviewed-by: twisti, thartmann ! src/share/vm/compiler/compileBroker.cpp Changeset: e903867b97e6 Author: anoll Date: 2014-10-31 10:43 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/e903867b97e6 Merge Changeset: 2eda90444a0d Author: anoll Date: 2014-02-25 13:52 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/2eda90444a0d 8034775: Failing to initialize VM when running with negative value for -XX:CICompilerCount Summary: Ensure appropriate min. number of compiler threads (1 for non-tiered, and 2 for tiered) Reviewed-by: kvn ! src/share/vm/runtime/arguments.cpp + test/compiler/startup/NumCompilerThreadsCheck.java Changeset: e8225dc7c94b Author: anoll Date: 2014-03-05 10:20 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e8225dc7c94b 8036091: compiler/membars/DekkerTest.java fails with -XX:CICompilerCount=1 Summary: Start test with -XX:-TieredCompilation so that one compiler thread works Reviewed-by: kvn, twisti ! src/share/vm/runtime/arguments.cpp ! test/compiler/membars/DekkerTest.java Changeset: c83362e7de6f Author: iignatyev Date: 2014-03-29 14:54 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/c83362e7de6f 8038393: [TESTBUG] ciReplay/* tests fail after 8034775 Reviewed-by: kvn ! test/compiler/ciReplay/common.sh Changeset: 4356234e712a Author: anoll Date: 2014-05-02 06:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4356234e712a 8041992: Fix of JDK-8034775 neglects to account for non-JIT VMs Summary: Allow 0 compiler threads if no JIT is used. Reviewed-by: kvn, dholmes Contributed-by: Severin Gehwolf ! src/share/vm/runtime/arguments.cpp ! test/compiler/startup/NumCompilerThreadsCheck.java Changeset: 327c00d0f091 Author: anoll Date: 2014-05-08 12:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/327c00d0f091 8042431: compiler/7200264/TestIntVect.java fails with: Test Failed: AddVI 0 < 4 Summary: Define a new function that determines the minimum number of compiler threads for a particular platform/configuration. Reviewed-by: kvn ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp Changeset: 9cff03eab05d Author: anoll Date: 2014-10-31 11:46 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/9cff03eab05d Merge Changeset: 521e269ae1da Author: amurillo Date: 2014-10-31 10:58 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/521e269ae1da Merge Changeset: 1d2ac45722d4 Author: amurillo Date: 2014-10-31 10:58 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1d2ac45722d4 Added tag hs25.40-b17 for changeset 521e269ae1da ! .hgtags Changeset: 86307d477907 Author: amurillo Date: 2014-11-03 18:18 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/86307d477907 Merge ! src/share/vm/runtime/arguments.cpp Changeset: b0c7e7f1bbbe Author: katleman Date: 2014-11-05 12:54 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/b0c7e7f1bbbe Added tag jdk8u40-b13 for changeset 86307d477907 ! .hgtags Changeset: 063338b89a56 Author: amurillo Date: 2014-10-31 11:13 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/063338b89a56 8062589: new hotspot build - hs25.40-b18 Reviewed-by: jcoomes ! make/hotspot_version Changeset: c88a4554854c Author: thartmann Date: 2014-10-13 12:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c88a4554854c 8046268: compiler/whitebox/ tests fail : must be osr_compiled Summary: Added code to 'warm up' the methods before triggering OSR compilation by executing them a limited number of times. Like this, the profile information marks the loop exit as taken and we don't add an uncommon trap. Reviewed-by: kvn, dlong, iignatyev ! test/compiler/whitebox/CompilerWhiteBoxTest.java ! test/compiler/whitebox/MakeMethodNotCompilableTest.java Changeset: 564d97997064 Author: thartmann Date: 2014-10-17 10:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/564d97997064 8060454: [TESTBUG] Whitebox tests fail with -XX:CompileThreshold=100 Summary: Move the call to 'waitAndDeoptimize' from the warmup methods to the osr triggering methods to make sure that no non-osr compilation is in the queue after warmup. Reviewed-by: kvn ! test/compiler/whitebox/CompilerWhiteBoxTest.java Changeset: d1e732bbe4e5 Author: thartmann Date: 2014-10-24 08:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d1e732bbe4e5 8061486: [TESTBUG] compiler/whitebox/ tests fail : must be osr_compiled (reappeared in nightlies) Summary: Call warmup code from OSR triggering method to make sure no non-OSR compilation is triggered in the loop. Reviewed-by: kvn ! test/compiler/whitebox/CompilerWhiteBoxTest.java Changeset: f5f752e74840 Author: thartmann Date: 2014-10-28 09:17 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f5f752e74840 8061983: [TESTBUG] compiler/whitebox/MakeMethodNotCompilableTest.java fails with "must not be in queue" Summary: Added a method checkNotCompiled(boolean isOsr) to either check if the method is OSR compiled or to check if it is non-OSR compiled. Reviewed-by: kvn ! test/compiler/whitebox/CompilerWhiteBoxTest.java ! test/compiler/whitebox/MakeMethodNotCompilableTest.java Changeset: 4cb90023bf2b Author: iklam Date: 2014-10-13 16:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/4cb90023bf2b 8061651: Interface to the Lookup Index Cache to improve URLClassPath search time Summary: Implemented the interface in sun.misc.URLClassPath and corresponding JVM_XXX APIs Reviewed-by: mchung, acorn, jiangli, dholmes ! make/bsd/makefiles/mapfile-vers-debug ! make/bsd/makefiles/mapfile-vers-product ! make/linux/makefiles/mapfile-vers-debug ! make/linux/makefiles/mapfile-vers-product ! make/solaris/makefiles/mapfile-vers ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/classfile/classLoader.hpp ! src/share/vm/classfile/classLoaderExt.hpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/memory/metadataFactory.hpp ! src/share/vm/memory/metaspaceShared.cpp ! src/share/vm/memory/metaspaceShared.hpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/jvm.h ! src/share/vm/prims/whitebox.cpp ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: 468850e35e48 Author: thartmann Date: 2014-10-31 12:16 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/468850e35e48 8062169: Multiple OSR compilations issued for same bci Summary: Fixed 'SimpleThresholdPolicy::event' to always perform OSR if an OSR nmethod is available. Reviewed-by: kvn, iveresov ! src/share/vm/runtime/simpleThresholdPolicy.cpp Changeset: d4562805b030 Author: thartmann Date: 2014-11-05 08:35 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/d4562805b030 Merge Changeset: 3c87c13918fb Author: thartmann Date: 2014-10-30 13:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/3c87c13918fb 8061817: Whitebox.deoptimizeMethod() does not deoptimize all OSR versions of method Summary: Fixed Whitebox.deoptimizeMethod() to deoptimize all OSR versions of the method. Reviewed-by: kvn, iignatyev ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/method.hpp ! src/share/vm/prims/whitebox.cpp + test/compiler/whitebox/DeoptimizeMultipleOSRTest.java Changeset: 6f06ebb09080 Author: vkempik Date: 2014-10-28 18:41 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/6f06ebb09080 8059216: Make PrintGCApplicationStoppedTime print information about stopping threads Reviewed-by: dholmes, brutisso ! src/share/vm/services/runtimeService.cpp ! src/share/vm/services/runtimeService.hpp Changeset: 50054b63f0aa Author: aeriksso Date: 2014-10-22 13:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/50054b63f0aa 8057043: Type annotations not retained during class redefine / retransform Reviewed-by: coleenp, sspitsyn, jfranck ! src/share/vm/prims/jvmtiClassFileReconstituter.cpp ! src/share/vm/prims/jvmtiRedefineClasses.cpp ! src/share/vm/prims/jvmtiRedefineClasses.hpp + test/runtime/RedefineTests/RedefineAnnotations.java Changeset: 5217eef2497f Author: brutisso Date: 2014-11-06 10:35 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/5217eef2497f Merge Changeset: ef6b27d844cc Author: dbuck Date: 2014-11-06 02:34 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/ef6b27d844cc 8058715: stability issues when being launched as an embedded JVM via JNI Summary: Use mmap call without MAP_FIXED so we avoid corrupting already allocated memory Reviewed-by: coleenp, dsimms ! src/os_cpu/linux_x86/vm/os_linux_x86.cpp Changeset: 0d754e6851d3 Author: dbuck Date: 2014-11-06 10:41 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/0d754e6851d3 Merge Changeset: 28ab1380ec65 Author: dbuck Date: 2014-11-06 12:05 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/28ab1380ec65 Merge Changeset: 7024b693c8f9 Author: kvn Date: 2014-11-03 12:02 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/7024b693c8f9 8059780: SPECjvm2008-MPEG performance regressions on x64 platforms Summary: Back-out 8052081 changes made in lcm.cpp. Reviewed-by: iveresov, roland ! src/share/vm/opto/lcm.cpp Changeset: b12a2a9b05ca Author: stefank Date: 2014-10-02 10:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b12a2a9b05ca 8056240: Investigate increased GC remark time after class unloading changes in CRM Fuse Reviewed-by: mgerdin, coleenp, bdelsart ! src/share/vm/classfile/classLoaderData.cpp ! src/share/vm/classfile/classLoaderData.hpp ! src/share/vm/classfile/metadataOnStackMark.cpp ! src/share/vm/classfile/metadataOnStackMark.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/oops/constantPool.cpp ! src/share/vm/oops/method.cpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jvmtiRedefineClasses.cpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp ! src/share/vm/utilities/accessFlags.cpp ! src/share/vm/utilities/accessFlags.hpp + src/share/vm/utilities/chunkedList.cpp + src/share/vm/utilities/chunkedList.hpp Changeset: 4d5dc0d0f879 Author: amurillo Date: 2014-11-07 09:22 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/4d5dc0d0f879 Merge Changeset: b8ca8ec1daea Author: amurillo Date: 2014-11-07 09:22 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/b8ca8ec1daea Added tag hs25.40-b18 for changeset 4d5dc0d0f879 ! .hgtags Changeset: 75ef834238df Author: katleman Date: 2014-11-12 13:47 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/75ef834238df Added tag jdk8u40-b14 for changeset b8ca8ec1daea ! .hgtags Changeset: 7a6313074325 Author: azakharov Date: 2014-11-14 17:39 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/7a6313074325 8064716: TestHumongousShrinkHeap.java can not be run with -XX:+ExplicitGCInvokesConcurrent 8062957: Heap is not shrunk when deallocating under memory pressure Summary: Added explicit -XX:-ExplicitGCInvokesConcurrent to invocations Reviewed-by: brutisso, tschatzl ! test/gc/g1/TestHumongousShrinkHeap.java ! test/gc/g1/TestShrinkAuxiliaryData.java ! test/gc/g1/TestShrinkDefragmentedHeap.java Changeset: eb16b24e2eba Author: lana Date: 2014-11-14 10:03 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/eb16b24e2eba Merge Changeset: 767511982e47 Author: katleman Date: 2014-11-19 11:29 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/767511982e47 Added tag jdk8u40-b15 for changeset eb16b24e2eba ! .hgtags Changeset: 1a2069ede139 Author: amurillo Date: 2014-11-07 09:36 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/1a2069ede139 8064361: new hotspot build - hs25.40-b19 Reviewed-by: jcoomes ! make/hotspot_version Changeset: e7b3d177adda Author: zmajo Date: 2014-11-10 17:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e7b3d177adda 8057622: java/util/stream/test/org/openjdk/tests/java/util/stream/InfiniteStreamWithLimitOpTest: SEGV inside compiled code (sparc) Summary: In Parse::array_store_check(), add control edge FROM IfTrue branch of runtime type check of the destination array TO loading _element_klass from destination array. Reviewed-by: kvn, roland, anoll Contributed-by: Zoltan Majo ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/parse1.cpp ! src/share/vm/opto/parseHelper.cpp Changeset: 80260967f994 Author: gtriantafill Date: 2014-11-05 08:22 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/80260967f994 8061969: [TESTBUG] MallocSiteHashOverflow.java should be enabled for 32-bit platforms Reviewed-by: ctornqvi, coleenp ! src/share/vm/prims/whitebox.cpp ! test/TEST.ROOT ! test/runtime/NMT/MallocSiteHashOverflow.java ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: 09259e52a610 Author: ctornqvi Date: 2014-11-11 10:46 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/09259e52a610 8059803: Update use of GetVersionEx to get correct Windows version in hs_err files Summary: Update use of GetVersionEx to get correct Windows version in hs_err files Reviewed-by: dcubed, gtriantafill ! make/windows/makefiles/compile.make ! src/os/windows/vm/os_windows.cpp ! src/os/windows/vm/os_windows.hpp ! src/share/tools/ProjectCreator/WinGammaPlatformVC10.java Changeset: 787c9c28311f Author: ctornqvi Date: 2014-11-11 10:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/787c9c28311f 8058251: assert(_count > 0) failed: Negative counter when running runtime/NMT/MallocTrackingVerify.java Summary: Fixed an issue when overflowing the MallocSite hash table bucket Reviewed-by: coleenp, gtriantafill ! src/share/vm/prims/whitebox.cpp ! src/share/vm/runtime/os.cpp ! src/share/vm/services/mallocTracker.cpp ! src/share/vm/services/mallocTracker.hpp ! src/share/vm/services/mallocTracker.inline.hpp ! test/TEST.groups - test/runtime/NMT/UnsafeMallocLimit.java - test/runtime/NMT/UnsafeMallocLimit2.java Changeset: a28b7832203a Author: jcoomes Date: 2014-11-07 15:34 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/a28b7832203a 8060467: CMS: small OldPLABSize and -XX:-ResizePLAB cause assert(ResizePLAB || n_blks == OldPLABSize) failed: Error Reviewed-by: tschatzl, jmasa, kbarrett ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp + test/gc/concurrentMarkSweep/DisableResizePLAB.java Changeset: 706dce84c9df Author: stefank Date: 2014-11-11 13:45 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/706dce84c9df 8064556: G1: ParallelGCThreads=0 may cause assert(!MetadataOnStackMark::has_buffer_for_thread(Thread::current())) failed: Should be empty Reviewed-by: mgerdin, tschatzl ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: d44a81242b1e Author: stefank Date: 2014-11-12 10:34 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/d44a81242b1e Merge - test/runtime/NMT/UnsafeMallocLimit.java - test/runtime/NMT/UnsafeMallocLimit2.java Changeset: ab72a2f48aef Author: mdoerr Date: 2014-11-05 16:28 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ab72a2f48aef 8062950: Bug in locking code when UseOptoBiasInlining is disabled: assert(dmw->is_neutral()) failed: invariant Reviewed-by: dholmes, kvn ! src/cpu/x86/vm/macroAssembler_x86.cpp Changeset: 643d6baecfe1 Author: minqi Date: 2014-11-07 12:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/643d6baecfe1 8062247: [TESTBUG] Allow WhiteBox test to access JVM offsets Reviewed-by: coleenp, iklam, mseledtsov Contributed-by: yumin.qi at oracle.com ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: 86c674274c94 Author: minqi Date: 2014-11-13 20:00 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/86c674274c94 Merge Changeset: 3a8a0fd171c5 Author: amurillo Date: 2014-11-14 07:37 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/3a8a0fd171c5 Merge - test/runtime/NMT/UnsafeMallocLimit.java - test/runtime/NMT/UnsafeMallocLimit2.java Changeset: 2bd263bb3a75 Author: amurillo Date: 2014-11-14 07:37 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/2bd263bb3a75 Added tag hs25.40-b19 for changeset 3a8a0fd171c5 ! .hgtags Changeset: 84e11eeec136 Author: amurillo Date: 2014-11-14 07:51 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/84e11eeec136 8064854: new hotspot build - hs25.40-b20 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 8c76e844a7f9 Author: dcubed Date: 2014-11-15 11:22 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/8c76e844a7f9 8033602: wrong stabs data in libjvm.debuginfo on JDK 8 - SPARC 8034005: cannot debug in synchronizer.o or objectMonitor.o on Solaris X86 Summary: Solaris needs objcopy version of 2.21.1 or newer is needed to create valid .debuginfo files. Reviewed-by: dsamersoff, sspitsyn, dholmes, ihse - make/solaris/makefiles/add_gnu_debuglink.make ! make/solaris/makefiles/defs.make ! make/solaris/makefiles/dtrace.make - make/solaris/makefiles/fix_empty_sec_hdr_flags.make ! make/solaris/makefiles/jsig.make ! make/solaris/makefiles/saproc.make ! make/solaris/makefiles/vm.make - src/os/solaris/add_gnu_debuglink/add_gnu_debuglink.c - src/os/solaris/fix_empty_sec_hdr_flags/fix_empty_sec_hdr_flags.c Changeset: 89266fdfa9e6 Author: dsamersoff Date: 2014-11-17 02:30 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/89266fdfa9e6 8059131: sawindbg.dll is not compiled with /SAFESEH Summary: Make variable SAFESEH_FLAG replaced with /SAFESEH link option. Reviewed-by: mgronlun, sla ! make/windows/makefiles/sa.make Changeset: ec2c6fdd1ce6 Author: coleenp Date: 2014-11-14 17:39 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/ec2c6fdd1ce6 8062870: src/share/vm/services/mallocTracker.hpp:64 assert(_count > 0) failed: Negative counter Summary: Signed bitfield size y can only have (1 << y)-1 values. Reviewed-by: shade, dholmes, jrose, ctornqvi, gtriantafill ! src/share/vm/services/mallocTracker.hpp ! test/runtime/NMT/MallocSiteHashOverflow.java Changeset: b2399f0d9611 Author: coleenp Date: 2014-11-17 16:36 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/b2399f0d9611 Merge - make/solaris/makefiles/add_gnu_debuglink.make - make/solaris/makefiles/fix_empty_sec_hdr_flags.make - src/os/solaris/add_gnu_debuglink/add_gnu_debuglink.c - src/os/solaris/fix_empty_sec_hdr_flags/fix_empty_sec_hdr_flags.c Changeset: 327e7269f90d Author: coleenp Date: 2014-06-30 14:58 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/327e7269f90d 8048169: Change 8037816 breaks HS build on PPC64 and CPP-Interpreter platforms Summary: Fix the matching of format string parameter types to the actual argument types for the PPC64 and CPP-Interpreter files in the same way as 8037816 already did it for all the other files Reviewed-by: stefank, coleenp, dholmes ! src/cpu/ppc/vm/assembler_ppc.cpp ! src/cpu/ppc/vm/compiledIC_ppc.cpp ! src/cpu/ppc/vm/frame_ppc.cpp ! src/cpu/ppc/vm/macroAssembler_ppc.cpp ! src/cpu/ppc/vm/methodHandles_ppc.cpp ! src/cpu/ppc/vm/nativeInst_ppc.cpp ! src/cpu/ppc/vm/ppc.ad ! src/cpu/ppc/vm/vm_version_ppc.cpp ! src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp ! src/share/vm/interpreter/bytecodeInterpreter.cpp ! src/share/vm/interpreter/bytecodeInterpreterProfiling.hpp Changeset: 2f445c5048df Author: coleenp Date: 2014-11-17 19:35 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/2f445c5048df Merge - make/solaris/makefiles/add_gnu_debuglink.make - make/solaris/makefiles/fix_empty_sec_hdr_flags.make - src/os/solaris/add_gnu_debuglink/add_gnu_debuglink.c - src/os/solaris/fix_empty_sec_hdr_flags/fix_empty_sec_hdr_flags.c Changeset: 4e4ebe50c8e3 Author: kbarrett Date: 2014-11-11 13:39 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/4e4ebe50c8e3 8062036: ConcurrentMarkThread::slt may be invoked before ConcurrentMarkThread::makeSurrogateLockerThread causing intermittent crashes Summary: Suppress gc_alot during VM init, improve error for SLT uninitialized. Reviewed-by: jmasa, brutisso, tschatzl ! src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp ! src/share/vm/gc_implementation/g1/vm_operations_g1.cpp ! src/share/vm/gc_implementation/shared/concurrentGCThread.cpp ! src/share/vm/gc_implementation/shared/concurrentGCThread.hpp ! src/share/vm/runtime/interfaceSupport.cpp Changeset: b00e231d3cb2 Author: jmasa Date: 2014-11-17 21:05 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/b00e231d3cb2 Merge Changeset: 10842d23f20a Author: jiangli Date: 2014-11-12 13:12 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/10842d23f20a 8054008: Using -XX:-LazyBootClassLoader crashes with ACCESS_VIOLATION on Win 64bit. Summary: Only enable the assert for current_stack_pointer after stub routines become available. Reviewed-by: dholmes, roland, lfoltan ! src/os_cpu/windows_x86/vm/os_windows_x86.cpp Changeset: 3375833a603e Author: jiangli Date: 2014-11-10 19:28 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/3375833a603e 8064375: Change certain errors to warnings in CDS output. Summary: Change CDS non-fatal preloading errors to warnings. Reviewed-by: minqi, mseledtsov, coleenp ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/memory/metaspaceShared.cpp Changeset: f84125b6f69a Author: jiangli Date: 2014-11-18 00:56 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/f84125b6f69a Merge Changeset: 600c44255e5f Author: thartmann Date: 2014-11-11 11:05 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/600c44255e5f 8056071: compiler/whitebox/IsMethodCompilableTest.java fails with 'method() is not compilable after 3 iterations' Summary: Always use MDO if valid and always compile trivial methods with C1 if available. Reviewed-by: kvn, iveresov ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/oops/method.cpp ! src/share/vm/oops/method.hpp ! src/share/vm/oops/methodData.cpp ! src/share/vm/oops/methodData.hpp ! src/share/vm/runtime/advancedThresholdPolicy.cpp ! src/share/vm/runtime/simpleThresholdPolicy.inline.hpp ! test/compiler/whitebox/IsMethodCompilableTest.java Changeset: e8bf410d5e23 Author: mgerdin Date: 2014-11-14 14:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e8bf410d5e23 8058209: Race in G1 card scanning could allow scanning of memory covered by PLABs Summary: Read _top before _gc_time_stamp in saved_mark_word() with LoadLoad order to ensure we get a consistent view Reviewed-by: brutisso, dcubed, dholmes, stefank ! src/share/vm/gc_implementation/g1/heapRegion.cpp Changeset: 82d3e7b5277a Author: mgronlun Date: 2014-11-19 18:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/82d3e7b5277a 8065361: Fixup headers and definitions for INCLUDE_TRACE Reviewed-by: sla, stefank ! src/share/vm/classfile/classLoaderData.cpp ! src/share/vm/classfile/classLoaderData.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/gc_implementation/shared/objectCountEventSender.cpp ! src/share/vm/trace/noTraceBackend.hpp ! src/share/vm/trace/traceBackend.hpp ! src/share/vm/trace/traceEvent.hpp ! src/share/vm/trace/traceEventClasses.xsl ! src/share/vm/trace/traceEventIds.xsl ! src/share/vm/trace/traceMacros.hpp ! src/share/vm/trace/traceStream.hpp ! src/share/vm/trace/traceTypes.xsl ! src/share/vm/trace/tracing.hpp Changeset: fa6adc194d48 Author: mchung Date: 2014-11-19 14:21 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fa6adc194d48 8064667: Add -XX:+CheckEndorsedAndExtDirs flag to JDK 8 Reviewed-by: coleenp, ccheung ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp + test/runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java Changeset: b840813adfcc Author: jwilhelm Date: 2014-11-21 12:08 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b840813adfcc 8065305: Make it possible to extend the G1CollectorPolicy Summary: Added a G1CollectorPolicyExt where it is possible to extend the class. Reviewed-by: sjohanss, tschatzl ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp + src/share/vm/gc_implementation/g1/g1CollectorPolicy_ext.hpp ! src/share/vm/memory/universe.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp ! src/share/vm/runtime/arguments_ext.hpp Changeset: 8d27d6113625 Author: sjohanss Date: 2014-11-21 10:31 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/8d27d6113625 8065227: Report allocation context stats at end of cleanup Summary: Moved allocation context update from remark to the cleanup phase. Reviewed-by: mgerdin, jmasa ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/g1AllocationContext.hpp Changeset: aa2442f89230 Author: amurillo Date: 2014-11-21 10:19 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/aa2442f89230 Merge ! .hgtags - make/solaris/makefiles/add_gnu_debuglink.make - make/solaris/makefiles/fix_empty_sec_hdr_flags.make - src/os/solaris/add_gnu_debuglink/add_gnu_debuglink.c - src/os/solaris/fix_empty_sec_hdr_flags/fix_empty_sec_hdr_flags.c - test/runtime/NMT/UnsafeMallocLimit.java - test/runtime/NMT/UnsafeMallocLimit2.java Changeset: 5ea68fb91139 Author: amurillo Date: 2014-11-21 10:19 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/5ea68fb91139 Added tag hs25.40-b20 for changeset aa2442f89230 ! .hgtags Changeset: da381ecd299e Author: asaha Date: 2014-11-26 07:58 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/da381ecd299e Added tag jdk8u40-b16 for changeset 5ea68fb91139 ! .hgtags Changeset: fb6a855141cb Author: henryjen Date: 2014-01-21 20:07 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fb6a855141cb 8028407: adjust-mflags.sh failed build with GNU Make 4.0 with -I Reviewed-by: erikj ! make/bsd/makefiles/adjust-mflags.sh ! make/linux/makefiles/adjust-mflags.sh ! make/solaris/makefiles/adjust-mflags.sh Changeset: 9dee5f673903 Author: simonis Date: 2014-03-04 17:14 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/9dee5f673903 8036614: AIX: fix adjust-mflags.sh to build with GNU Make 4.0 (adapt 8028407 for AIX) Reviewed-by: kvn ! make/aix/makefiles/adjust-mflags.sh Changeset: ba05b10dea7e Author: lana Date: 2014-11-20 11:28 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/ba05b10dea7e Merge Changeset: 280a67db7427 Author: amurillo Date: 2014-11-25 09:46 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/280a67db7427 Merge Changeset: 3562db849018 Author: lana Date: 2014-11-26 13:58 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/3562db849018 Merge Changeset: b62a321c4d2e Author: amurillo Date: 2014-11-21 10:32 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/b62a321c4d2e 8065385: new hotspot build - hs25.40-b21 Reviewed-by: jcoomes ! make/hotspot_version Changeset: bee8095780db Author: thartmann Date: 2014-11-20 11:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/bee8095780db 8050079: crash while compiling java.lang.ref.Finalizer::runFinalizer Summary: Ignore non-instance Klasses in the subclass hierarchy. Reviewed-by: kvn, iignatyev, jrose ! src/share/vm/code/dependencies.cpp + test/compiler/dependencies/MonomorphicObjectCall/TestMonomorphicObjectCall.java + test/compiler/dependencies/MonomorphicObjectCall/java/lang/Object.java Changeset: 887a7cedb892 Author: iklam Date: 2014-11-18 03:38 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/887a7cedb892 8064701: Some CDS optimizations should be disabled if bootclasspath is modified by JVMTI Summary: Added API to track bootclasspath modification Reviewed-by: jiangli, dholmes, minqi ! src/share/vm/classfile/classLoaderExt.hpp ! src/share/vm/prims/jvmtiEnv.cpp ! src/share/vm/prims/whitebox.cpp ! test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Changeset: c80ddae00f51 Author: iklam Date: 2014-11-19 19:31 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/c80ddae00f51 8065346: WB_AddToBootstrapClassLoaderSearch calls JvmtiEnv::create_a_jvmti when not in _thread_in_vm state Summary: Removed ThreadToNativeFromVM and use java_lang_String::as_utf8_string instead Reviewed-by: dholmes, minqi ! src/share/vm/prims/whitebox.cpp Changeset: e194d26c9f4e Author: vlivanov Date: 2014-10-24 09:13 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e194d26c9f4e 8058847: C2: EliminateAutoBox regression after 8042786 Reviewed-by: kvn, roland ! src/share/vm/opto/memnode.cpp + test/compiler/EliminateAutoBox/UnsignedLoads.java Changeset: 6a528388c7da Author: vlivanov Date: 2014-11-11 04:46 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/6a528388c7da 8060147: SIGSEGV in Metadata::mark_on_stack() while marking metadata in ciEnv Reviewed-by: kvn, roland, coleenp, mgerdin ! src/share/vm/ci/ciMethod.cpp ! src/share/vm/ci/ciMethod.hpp ! src/share/vm/ci/ciObjectFactory.cpp ! src/share/vm/ci/ciObjectFactory.hpp Changeset: 9e69e8d1c900 Author: vlivanov Date: 2014-11-24 07:29 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/9e69e8d1c900 8058148: MaxNodeLimit and LiveNodeCountInliningCutoff Reviewed-by: kvn, roland ! src/share/vm/ci/ciTypeFlow.cpp ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/loopTransform.cpp ! src/share/vm/opto/loopUnswitch.cpp ! src/share/vm/opto/loopopts.cpp ! src/share/vm/opto/node.cpp Changeset: 6bf89bfe8185 Author: amurillo Date: 2014-11-27 09:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/6bf89bfe8185 Merge Changeset: 01de5cfa06c1 Author: amurillo Date: 2014-11-27 09:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/01de5cfa06c1 Added tag hs25.40-b21 for changeset 6bf89bfe8185 ! .hgtags Changeset: fc1f9b67fd8c Author: amurillo Date: 2014-12-02 09:50 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fc1f9b67fd8c Merge Changeset: 0d749db61a36 Author: katleman Date: 2014-12-03 11:12 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/0d749db61a36 Added tag jdk8u40-b17 for changeset fc1f9b67fd8c ! .hgtags Changeset: dcccfe952e9b Author: amurillo Date: 2014-11-27 10:18 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/dcccfe952e9b 8066061: new hotspot build - hs25.40-b22 Reviewed-by: jcoomes ! make/hotspot_version Changeset: fe34c5ab0b35 Author: coleenp Date: 2014-11-19 13:02 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/fe34c5ab0b35 8042235: redefining method used by multiple MethodHandles crashes VM Summary: note all MemberNames created on internal list for adjusting method entries. Reviewed-by: sspitsyn, dcubed, lfoltan ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/methodHandles.cpp ! src/share/vm/prims/methodHandles.hpp + test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java Changeset: 97f4214e9a70 Author: coleenp Date: 2014-12-01 09:38 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/97f4214e9a70 Merge Changeset: ecccc23346fe Author: thartmann Date: 2014-11-26 08:06 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ecccc23346fe 8007993: hotspot.log w/ enabled LogCompilation can be an invalid XML Summary: Open compilation log files in write-mode and close before deletion attempt. Reviewed-by: vlivanov ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/compiler/compileLog.cpp Changeset: 5b8e0f84f00f Author: roland Date: 2014-12-01 22:27 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/5b8e0f84f00f 8054478: C2: Incorrectly compiled char[] array access crashes JVM Summary: dead backbranch in main loop results in erroneous array access Reviewed-by: kvn, iveresov ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/loopTransform.cpp ! src/share/vm/opto/loopnode.hpp ! src/share/vm/opto/phaseX.cpp ! src/share/vm/opto/subnode.cpp ! src/share/vm/opto/subnode.hpp + test/compiler/loopopts/TestDeadBackbranchArrayAccess.java Changeset: 4c228230f1d6 Author: roland Date: 2014-11-27 16:54 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/4c228230f1d6 8066045: opto/node.hpp:355, assert(i < _max) failed: oob: i=1, _max=1 Summary: code in PhaseIterGVN::add_users_to_worklist() from 8054478 makes incorrect assumption about graph shape Reviewed-by: iveresov ! src/share/vm/opto/phaseX.cpp Changeset: b12418b0d05c Author: roland Date: 2014-12-02 10:43 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/b12418b0d05c Merge Changeset: abb8b1de96ff Author: iignatyev Date: 2014-12-02 20:13 +0300 URL: http://hg.openjdk.java.net/graal/graal/rev/abb8b1de96ff 8062742: compiler/EliminateAutoBox/UnsignedLoads.java fails with client vm Reviewed-by: kvn, rbackman, anoll, vlivanov, iignatyev Contributed-by: tatiana.pivovarova at oracle.com ! test/compiler/EliminateAutoBox/UnsignedLoads.java Changeset: c03d85ef5e6a Author: mchung Date: 2014-12-02 08:42 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/c03d85ef5e6a 8065765: Missing space in output message from -XX:+CheckEndorsedAndExtDirs Reviewed-by: hseigel, ccheung ! src/share/vm/runtime/arguments.cpp ! test/runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java Changeset: 0b86bdf28e07 Author: mchung Date: 2014-12-02 18:09 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/0b86bdf28e07 Merge Changeset: dc763d49b82d Author: kvn Date: 2014-12-02 12:08 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/dc763d49b82d 8065618: C2 RA incorrectly removes kill projections Summary: Don't remove KILL projections if their "defining" nodes have SCMemProj projection (memory side effects). Reviewed-by: iveresov, roland ! src/share/vm/opto/ifg.cpp Changeset: a8ebd6f1b030 Author: sla Date: 2014-12-02 15:01 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/a8ebd6f1b030 8058448: Disable JPRT submissions from the hotspot repo Reviewed-by: dholmes - make/jprt.properties Changeset: f913964f3fde Author: kvn Date: 2014-12-02 12:24 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/f913964f3fde 8066199: C2 escape analysis prevents VM from exiting quickly Summary: Check for safepoint and block during EA Connection graph construction. Reviewed-by: roland, vlivanov, shade ! src/share/vm/opto/escape.cpp Changeset: 3f4a5fdca318 Author: kvn Date: 2014-12-03 17:41 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/3f4a5fdca318 8066649: 8u backport for 8065618 is incorrect Summary: The new code in 8u backport should guard the execution of the following code instead of return. Reviewed-by: iveresov ! src/share/vm/opto/ifg.cpp Changeset: d4caf9c96afd Author: igerasim Date: 2014-02-28 16:00 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/d4caf9c96afd 8035893: JVM_GetVersionInfo fails to zero structure Reviewed-by: sla, zgu ! src/share/vm/prims/jvm.cpp Changeset: 03b7d9efd9fd Author: dbuck Date: 2014-12-04 07:54 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/03b7d9efd9fd Merge Changeset: bc5a90a4db47 Author: amurillo Date: 2014-12-05 09:47 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/bc5a90a4db47 Merge - make/jprt.properties Changeset: 31d3306aad29 Author: amurillo Date: 2014-12-05 09:47 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/31d3306aad29 Added tag hs25.40-b22 for changeset bc5a90a4db47 ! .hgtags Changeset: f25953cb4e18 Author: katleman Date: 2014-12-10 14:35 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/f25953cb4e18 Added tag jdk8u40-b18 for changeset 31d3306aad29 ! .hgtags Changeset: 71690386cf84 Author: jeff Date: 2014-12-01 18:08 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/71690386cf84 8057629: Third Party License Readme update for 8u40 Reviewed-by: tbell ! THIRD_PARTY_README Changeset: ea6dbaa4bf8e Author: amurillo Date: 2014-12-02 10:00 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/ea6dbaa4bf8e Merge Changeset: fbd65124cdaa Author: lana Date: 2014-12-09 13:15 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fbd65124cdaa Merge Changeset: 57490e455c30 Author: lana Date: 2014-12-11 13:39 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/57490e455c30 Merge Changeset: 9c8dbbd8694a Author: amurillo Date: 2014-12-05 10:04 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/9c8dbbd8694a 8066647: new hotspot build - hs25.40-b23 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 0558eb13dcf3 Author: iklam Date: 2014-12-04 15:20 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/0558eb13dcf3 8066670: PrintSharedArchiveAndExit does not exit the VM when the archive is invalid Summary: in FileMapInfo::fail_continue do not set UseSharedSpaces = false Reviewed-by: dholmes, ccheung ! src/share/vm/memory/filemap.cpp ! src/share/vm/memory/metaspaceShared.cpp + test/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java Changeset: b6585ac86988 Author: roland Date: 2014-12-04 14:34 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b6585ac86988 8048170: Test closed/java/text/Normalizer/ConformanceTest.java failed Summary: PhaseIdealLoop::split_if_with_blocks_post() shoulnd't reorder range checks adjusted by range check smearing Reviewed-by: kvn, jrose ! src/share/vm/opto/loopopts.cpp + test/compiler/rangechecks/TestRangeCheckSmearingLoopOpts.java Changeset: b5eb829bbce1 Author: iveresov Date: 2014-12-09 12:25 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/b5eb829bbce1 8066900: Array Out Of Bounds Exception causes variable corruption Summary: Fix FP registers save/restore during exception handling Reviewed-by: kvn, vlivanov ! src/cpu/x86/vm/c1_Runtime1_x86.cpp + test/compiler/exceptions/SumTest.java Changeset: 0fa1f71a905b Author: stefank Date: 2014-12-11 11:13 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/0fa1f71a905b 8065634: Crash in InstanceKlass::clean_method_data when _method is NULL Reviewed-by: coleenp, hseigel, poonam ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classFileParser.hpp Changeset: 8c08b28b7eee Author: stefank Date: 2014-12-11 10:38 +0000 URL: http://hg.openjdk.java.net/graal/graal/rev/8c08b28b7eee Merge Changeset: d3f3f7677537 Author: roland Date: 2014-11-25 17:33 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d3f3f7677537 6898462: The escape analysis with G1 cause crash assertion src/share/vm/runtime/vframeArray.cpp:94 Summary: OOM during reallocation of scalar replaced objects in deoptimization causes crashes Reviewed-by: kvn, jrose ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/memory/universe.cpp ! src/share/vm/memory/universe.hpp ! src/share/vm/opto/macro.cpp ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp ! src/share/vm/runtime/vframeArray.cpp ! src/share/vm/runtime/vframeArray.hpp + test/compiler/uncommontrap/TestDeoptOOM.java Changeset: 793204f5528a Author: roland Date: 2014-12-10 16:45 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/793204f5528a 8067144: SIGSEGV with +TraceDeoptimization in Deoptimization::print_objects Summary: -XX:+TraceDeoptimization tries to print realloc'ed objects even when there are none Reviewed-by: kvn ! src/share/vm/runtime/deoptimization.cpp + test/compiler/uncommontrap/TraceDeoptimizationNoRealloc.java Changeset: e3d0aaab84aa Author: roland Date: 2014-12-09 18:49 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/e3d0aaab84aa 8066103: C2's range check smearing allows out of bound array accesses Summary: range check smearing uncorrectly adjust first range check in a list of range checks to cover all of them Reviewed-by: jrose, kvn, iveresov ! src/share/vm/opto/ifnode.cpp + test/compiler/rangechecks/TestRangeCheckSmearing.java Changeset: d9e22e15d3f6 Author: roland Date: 2014-12-05 18:03 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/d9e22e15d3f6 8066775: opto/node.hpp:355, assert(i < _max) failed: oob: i=1, _max=1 Summary: bad assumption on graph shape in CastIINode::Value if that part of the graph is becoming dead. Reviewed-by: kvn ! src/share/vm/opto/connode.cpp Changeset: 28f116adb50c Author: mseledtsov Date: 2014-12-11 18:53 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/28f116adb50c 8067232: [TESTBUG] runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java fails with ClassNotFoundException Summary: Added explicit build instructions for test library Reviewed-by: minqi, mchung, jiangli ! test/runtime/CheckEndorsedAndExtDirs/EndorsedExtDirs.java Changeset: c5e86c5cd22e Author: goetz Date: 2014-12-12 08:48 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/c5e86c5cd22e 8066964: ppc64: argument and return type profiling, fix problem with popframe Reviewed-by: roland, kvn ! src/cpu/ppc/vm/interp_masm_ppc_64.cpp ! src/cpu/ppc/vm/interp_masm_ppc_64.hpp ! src/cpu/ppc/vm/macroAssembler_ppc.cpp ! src/cpu/ppc/vm/macroAssembler_ppc.hpp ! src/cpu/ppc/vm/nativeInst_ppc.cpp ! src/cpu/ppc/vm/ppc.ad ! src/cpu/ppc/vm/templateInterpreter_ppc.cpp ! src/cpu/ppc/vm/templateTable_ppc_64.cpp ! src/cpu/ppc/vm/vm_version_ppc.cpp ! src/os/aix/vm/os_aix.cpp ! src/os/aix/vm/os_aix.hpp ! src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp ! src/os_cpu/aix_ppc/vm/os_aix_ppc.hpp ! src/os_cpu/aix_ppc/vm/prefetch_aix_ppc.inline.hpp ! src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.hpp ! src/os_cpu/aix_ppc/vm/thread_aix_ppc.hpp ! src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp Changeset: f8fc5cbe082c Author: amurillo Date: 2014-12-12 10:31 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/f8fc5cbe082c Merge Changeset: adc3127d2e09 Author: amurillo Date: 2014-12-12 10:31 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/adc3127d2e09 Added tag hs25.40-b23 for changeset f8fc5cbe082c ! .hgtags Changeset: d9349fa88223 Author: amurillo Date: 2014-12-16 09:30 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/d9349fa88223 Merge Changeset: c3933f52eeb3 Author: katleman Date: 2014-12-17 10:43 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/c3933f52eeb3 Added tag jdk8u40-b19 for changeset d9349fa88223 ! .hgtags Changeset: fd75f3dc8e1c Author: asaha Date: 2015-01-02 13:37 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fd75f3dc8e1c Added tag jdk8u40-b20 for changeset c3933f52eeb3 ! .hgtags Changeset: 7e70976b4d0f Author: amurillo Date: 2015-01-07 15:49 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/7e70976b4d0f 8068631: new hotspot build - hs25.40-b24 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 4b7c96fba3d8 Author: fzhinkin Date: 2014-11-26 14:17 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/4b7c96fba3d8 8037968: Add tests on alignment of objects copied to survivor space Reviewed-by: jmasa, dfazunen ! test/TEST.groups + test/gc/arguments/TestSurvivorAlignmentInBytesOption.java + test/gc/survivorAlignment/AlignmentHelper.java + test/gc/survivorAlignment/SurvivorAlignmentTestMain.java + test/gc/survivorAlignment/TestAllocationInEden.java + test/gc/survivorAlignment/TestPromotionFromEdenToTenured.java + test/gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterFullGC.java + test/gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterMinorGC.java + test/gc/survivorAlignment/TestPromotionToSurvivor.java Changeset: 75d8afb5d37a Author: fzhinkin Date: 2014-12-15 18:11 +0400 URL: http://hg.openjdk.java.net/graal/graal/rev/75d8afb5d37a 8066143: [TESTBUG] New tests in gc/survivorAlignment/ fails Reviewed-by: jmasa ! test/gc/arguments/TestSurvivorAlignmentInBytesOption.java ! test/gc/survivorAlignment/TestAllocationInEden.java ! test/gc/survivorAlignment/TestPromotionFromEdenToTenured.java ! test/gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterFullGC.java ! test/gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterMinorGC.java ! test/gc/survivorAlignment/TestPromotionToSurvivor.java Changeset: d2e9a6bec4f2 Author: amurillo Date: 2015-01-09 08:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/d2e9a6bec4f2 Merge Changeset: 25ec4a674337 Author: amurillo Date: 2015-01-09 08:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/25ec4a674337 Added tag hs25.40-b24 for changeset d2e9a6bec4f2 ! .hgtags Changeset: 3bea2cc4c941 Author: katleman Date: 2015-01-14 16:26 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/3bea2cc4c941 Added tag jdk8u40-b21 for changeset 25ec4a674337 ! .hgtags Changeset: fe58b5771459 Author: asaha Date: 2014-07-08 09:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fe58b5771459 Added tag jdk8u31-b00 for changeset 5bb683bbe2c7 ! .hgtags Changeset: 6366f612ac2c Author: asaha Date: 2014-07-09 12:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6366f612ac2c 8049760: Increment minor version of HSx for 8u31 and initialize the build number Reviewed-by: jcoomes ! make/hotspot_version Changeset: 9826742fa96a Author: asaha Date: 2014-07-14 07:41 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/9826742fa96a Merge ! .hgtags ! make/hotspot_version Changeset: 341af2f08515 Author: asaha Date: 2014-07-14 15:48 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/341af2f08515 Merge ! .hgtags ! make/hotspot_version Changeset: 1c198f9c8854 Author: asaha Date: 2014-07-22 10:39 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1c198f9c8854 Merge ! .hgtags Changeset: 6e7f1382ca62 Author: coffeys Date: 2014-08-01 11:04 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/6e7f1382ca62 Merge ! .hgtags ! make/hotspot_version Changeset: 31845bc861c5 Author: coffeys Date: 2014-08-07 12:23 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/31845bc861c5 Merge ! .hgtags Changeset: 609faa407cfd Author: iveresov Date: 2014-08-08 15:15 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/609faa407cfd 8047130: Fewer escapes from escape analysis Summary: Treat max_stack attribute as an int in bytecode escape analyzer Reviewed-by: kvn, twisti, ahgross ! src/share/vm/ci/bcEscapeAnalyzer.cpp Changeset: 8210e5f2e21b Author: jiangli Date: 2014-08-12 17:46 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/8210e5f2e21b 8044269: Analysis of archive files. Summary: Add checksum verification. Reviewed-by: iklam, dholmes, mschoene ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/classfile/classLoader.hpp ! src/share/vm/memory/filemap.cpp ! src/share/vm/memory/filemap.hpp ! src/share/vm/memory/metaspaceShared.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp Changeset: 42c091d63c72 Author: tschatzl Date: 2014-08-04 10:49 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/42c091d63c72 8048949: Requeue queue implementation Summary: devirtualize flush and move calls Reviewed-by: brutisso, tschatzl, mschoene Contributed-by: kim.barrett at oracle.com ! src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp ! src/share/vm/gc_implementation/g1/ptrQueue.cpp ! src/share/vm/gc_implementation/g1/ptrQueue.hpp ! src/share/vm/gc_implementation/g1/satbQueue.cpp ! src/share/vm/gc_implementation/g1/satbQueue.hpp Changeset: cafabb1a240d Author: asaha Date: 2014-08-19 06:06 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/cafabb1a240d Merge ! .hgtags Changeset: 6709b033c725 Author: asaha Date: 2014-08-19 07:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6709b033c725 Merge Changeset: a4fdab16b621 Author: brutisso Date: 2014-08-19 11:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a4fdab16b621 8049253: Better GC validation Summary: Also reviewed by: boris.molodenkov at oracle.com Reviewed-by: dcubed, minqi, mschoene Contributed-by: yasuenag at gmail.com, bengt.rutisson at oracle.com ! src/share/vm/utilities/defaultStream.hpp ! src/share/vm/utilities/ostream.cpp Changeset: cc5695d376f1 Author: asaha Date: 2014-08-26 11:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/cc5695d376f1 Merge ! .hgtags ! make/hotspot_version Changeset: 57d0dc8ab85b Author: asaha Date: 2014-09-02 13:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/57d0dc8ab85b Merge ! .hgtags Changeset: 75430ce42425 Author: iveresov Date: 2014-08-13 17:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/75430ce42425 8054883: Segmentation error while running program Summary: Fix pattern matching of range check Reviewed-by: kvn ! src/share/vm/opto/ifnode.cpp Changeset: e2ed74d2e054 Author: poonam Date: 2014-08-19 02:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e2ed74d2e054 8044406: JVM crash with JDK8 (build 1.8.0-b132) with G1 GC Summary: Fill the last card that has been allocated into with a dummy object Reviewed-by: tschatzl, mgerdin ! src/share/vm/gc_implementation/g1/g1AllocRegion.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Changeset: b68c022a36dd Author: asaha Date: 2014-09-08 13:31 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b68c022a36dd Merge ! .hgtags Changeset: 7c9925f21c25 Author: hseigel Date: 2014-08-02 16:28 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/7c9925f21c25 8051012: Regression in verifier for method call from inside of a branch Summary: Fix stackmap matching for branches. Reviewed-by: coleenp, lfoltan, acorn ! src/share/vm/classfile/stackMapTable.cpp ! src/share/vm/classfile/stackMapTable.hpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/classfile/verifier.hpp Changeset: 7edb04063a42 Author: katleman Date: 2014-08-14 12:30 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7edb04063a42 Added tag jdk8u20-b31 for changeset 7c9925f21c25 ! .hgtags Changeset: 7ebfc4557ca5 Author: asaha Date: 2014-09-11 11:52 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7ebfc4557ca5 Merge ! .hgtags ! src/share/vm/classfile/verifier.cpp Changeset: 56636836cfa1 Author: asaha Date: 2014-09-11 13:43 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/56636836cfa1 Merge ! .hgtags Changeset: 5bb686ae3b89 Author: asaha Date: 2014-09-17 12:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5bb686ae3b89 Merge ! .hgtags Changeset: 2b74950dc0e5 Author: asaha Date: 2014-09-22 11:29 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2b74950dc0e5 Added tag jdk8u31-b01 for changeset 5bb686ae3b89 ! .hgtags Changeset: 52265832af92 Author: asaha Date: 2014-09-24 08:28 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/52265832af92 Merge ! .hgtags Changeset: 5b625213c851 Author: katleman Date: 2014-09-23 18:49 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5b625213c851 Added tag jdk8u20-b32 for changeset 7edb04063a42 ! .hgtags Changeset: f0b9411c2e07 Author: asaha Date: 2014-09-24 08:43 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f0b9411c2e07 Merge ! .hgtags Changeset: 087678da9660 Author: asaha Date: 2014-09-24 10:20 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/087678da9660 Merge ! .hgtags Changeset: 401cbaa475b4 Author: asaha Date: 2014-09-29 11:49 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/401cbaa475b4 Added tag jdk8u31-b02 for changeset 087678da9660 ! .hgtags Changeset: b95f13f05f55 Author: asaha Date: 2014-10-06 14:10 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b95f13f05f55 Added tag jdk8u31-b03 for changeset 401cbaa475b4 ! .hgtags Changeset: c3528699fb33 Author: asaha Date: 2014-10-07 08:36 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c3528699fb33 Merge ! .hgtags Changeset: 631f0c7b49c0 Author: katleman Date: 2014-10-09 11:52 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/631f0c7b49c0 Added tag jdk8u25-b31 for changeset c3528699fb33 ! .hgtags Changeset: 2c75e5ef41e9 Author: asaha Date: 2014-10-09 12:22 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2c75e5ef41e9 Merge ! .hgtags Changeset: 01dcaba9b3f3 Author: jmasa Date: 2014-09-26 17:48 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/01dcaba9b3f3 8047125: (ref) More phantom object references Reviewed-by: mchung, dfuchs, ahgross, jmasa, brutisso, mgerdin Contributed-by: kim.barrett at oracle.com ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/memory/referenceProcessor.cpp ! src/share/vm/memory/referenceProcessor.hpp ! src/share/vm/memory/referenceType.hpp ! src/share/vm/runtime/vmStructs.cpp Changeset: 060cdf93040c Author: mgerdin Date: 2014-10-09 15:42 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/060cdf93040c 8055479: TLAB stability Reviewed-by: brutisso, stefank, ahgross ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp ! src/share/vm/memory/threadLocalAllocBuffer.cpp ! src/share/vm/memory/threadLocalAllocBuffer.hpp Changeset: e0918820dac1 Author: asaha Date: 2014-10-13 12:31 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e0918820dac1 Added tag jdk8u31-b04 for changeset 060cdf93040c ! .hgtags Changeset: 6baea9ff2da1 Author: asaha Date: 2014-10-20 13:04 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6baea9ff2da1 8061523: Increment hsx 25.31 build to b02 for 8u31-b05 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 4b26b980ec8d Author: hseigel Date: 2014-10-20 15:14 -0400 URL: http://hg.openjdk.java.net/graal/graal/rev/4b26b980ec8d 8058982: Better verification of an exceptional invokespecial Summary: Throw VerifyError for illegal accesses Reviewed-by: acorn, ahgross, coleenp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/classfile/verifier.hpp Changeset: 6e56d7f1634f Author: jmasa Date: 2013-11-21 09:57 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/6e56d7f1634f 8026303: CMS: JVM intermittently crashes with "FreeList of size 258 violates Conservation Principle" assert Reviewed-by: tschatzl, brutisso ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Changeset: e620c670a9a7 Author: asaha Date: 2014-10-20 14:31 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e620c670a9a7 Added tag jdk8u31-b05 for changeset 6e56d7f1634f ! .hgtags Changeset: c2844108a708 Author: asaha Date: 2014-10-23 12:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c2844108a708 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/satbQueue.cpp ! src/share/vm/gc_implementation/g1/satbQueue.hpp ! src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp ! src/share/vm/memory/referenceProcessor.cpp ! src/share/vm/memory/referenceProcessor.hpp ! src/share/vm/runtime/vmStructs.cpp ! src/share/vm/utilities/ostream.cpp Changeset: 6b9488e6d7ee Author: asaha Date: 2014-10-24 11:46 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/6b9488e6d7ee 8062084: Increment hsx 25.31 build to b03 for 8u31-b06 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 271a32147391 Author: morris Date: 2014-09-18 11:46 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/271a32147391 8050022: linux-sparcv9: assert(SharedSkipVerify || obj->is_oop()) failed: sanity check Summary: Provide promoted stack slots for floating-point registers in the SPARC c_calling_convention. Reviewed-by: kvn, jrose, drchase ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/sparc/vm/sparc.ad Changeset: e9f815c3f21c Author: asaha Date: 2014-10-27 12:56 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e9f815c3f21c Added tag jdk8u31-b06 for changeset 271a32147391 ! .hgtags Changeset: d961743b7897 Author: asaha Date: 2014-10-31 15:22 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d961743b7897 Merge ! .hgtags ! make/hotspot_version ! src/cpu/sparc/vm/sparc.ad Changeset: ee10217e3d03 Author: asaha Date: 2014-11-05 15:35 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/ee10217e3d03 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Changeset: 50d462891a4d Author: asaha Date: 2014-11-03 12:33 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/50d462891a4d Added tag jdk8u31-b07 for changeset e9f815c3f21c ! .hgtags Changeset: fc1348524f65 Author: asaha Date: 2014-11-06 09:15 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fc1348524f65 Merge ! .hgtags Changeset: 02c7eebe5f52 Author: asaha Date: 2014-11-19 12:52 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/02c7eebe5f52 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Changeset: 9fa3bf3043a2 Author: asaha Date: 2014-11-26 08:14 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/9fa3bf3043a2 Merge ! .hgtags ! make/hotspot_version - make/solaris/makefiles/add_gnu_debuglink.make - make/solaris/makefiles/fix_empty_sec_hdr_flags.make - src/os/solaris/add_gnu_debuglink/add_gnu_debuglink.c - src/os/solaris/fix_empty_sec_hdr_flags/fix_empty_sec_hdr_flags.c ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp - test/runtime/NMT/UnsafeMallocLimit.java - test/runtime/NMT/UnsafeMallocLimit2.java Changeset: 053480240c16 Author: asaha Date: 2014-11-06 22:32 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/053480240c16 8064303: Increment hsx 25.31 build to b04 for 8u31-b08 Reviewed-by: jcoomes ! make/hotspot_version Changeset: a900276e4af8 Author: dbuck Date: 2014-11-06 02:34 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/a900276e4af8 8058715: stability issues when being launched as an embedded JVM via JNI Summary: Use mmap call without MAP_FIXED so we avoid corrupting already allocated memory Reviewed-by: coleenp, dsimms ! src/os_cpu/linux_x86/vm/os_linux_x86.cpp Changeset: c4fdacb50cc7 Author: asaha Date: 2014-11-10 10:32 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/c4fdacb50cc7 8064494: Increment the build value to b05 for hs25.31 in 8u31-b08 Reviewed-by: jcoomes ! make/hotspot_version Changeset: cc74ca225166 Author: dbuck Date: 2014-10-31 12:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/cc74ca225166 8060169: Update the Crash Reporting URL in the Java crash log Summary: Update the URL for HotSpot bug reports. Reviewed-by: dcubed, rdurbin ! src/share/vm/runtime/arguments.cpp Changeset: 245d29ed5db5 Author: asaha Date: 2014-11-10 11:50 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/245d29ed5db5 Added tag jdk8u31-b08 for changeset cc74ca225166 ! .hgtags Changeset: 8a5a47b6e931 Author: asaha Date: 2014-11-17 12:38 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/8a5a47b6e931 Added tag jdk8u31-b09 for changeset 245d29ed5db5 ! .hgtags Changeset: dd00ce8e80fc Author: asaha Date: 2014-11-24 09:18 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/dd00ce8e80fc 8065786: Increment the build value to b06 for hs25.31 in 8u31-b10 Reviewed-by: jcoomes ! make/hotspot_version Changeset: d7b6bdd51abe Author: gthornbr Date: 2014-11-17 15:51 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/d7b6bdd51abe 8050807: Better performing performance data handling Reviewed-by: dcubed, pnauman, ctornqvi, dholmes, mschoene Contributed-by: gerald.thornbrugh at oracle.com ! src/os/bsd/vm/perfMemory_bsd.cpp ! src/os/linux/vm/perfMemory_linux.cpp ! src/os/solaris/vm/perfMemory_solaris.cpp ! src/share/vm/utilities/vmError.cpp Changeset: d40c3431846c Author: asaha Date: 2014-11-24 13:34 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/d40c3431846c Added tag jdk8u31-b10 for changeset d7b6bdd51abe ! .hgtags Changeset: 42f27b59c550 Author: asaha Date: 2014-11-26 08:57 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/42f27b59c550 Merge ! .hgtags ! make/hotspot_version ! src/os/bsd/vm/perfMemory_bsd.cpp ! src/os/linux/vm/perfMemory_linux.cpp ! src/os/solaris/vm/perfMemory_solaris.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/utilities/vmError.cpp Changeset: 9b4d6de0a838 Author: asaha Date: 2014-12-04 11:00 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/9b4d6de0a838 Merge ! .hgtags ! make/hotspot_version Changeset: 4b41145051ab Author: asaha Date: 2014-12-12 09:37 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/4b41145051ab Merge ! .hgtags ! make/hotspot_version - make/jprt.properties ! src/share/vm/runtime/arguments.cpp Changeset: b3a8626eefc5 Author: asaha Date: 2014-12-02 09:19 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/b3a8626eefc5 8066452: Increment the build value to b07 for hs25.31 in 8u31-b11 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 9906d432d6db Author: drchase Date: 2014-12-01 13:06 -0500 URL: http://hg.openjdk.java.net/graal/graal/rev/9906d432d6db 8064524: Compiler code generation improvements Reviewed-by: jrose, acorn, vlivanov ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/dependencies.hpp ! src/share/vm/interpreter/linkResolver.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp Changeset: e13839545238 Author: asaha Date: 2014-12-02 11:10 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/e13839545238 Added tag jdk8u31-b11 for changeset 9906d432d6db ! .hgtags Changeset: 4206e725d584 Author: asaha Date: 2014-12-08 12:28 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/4206e725d584 Added tag jdk8u31-b12 for changeset e13839545238 ! .hgtags Changeset: c4f1e23c4139 Author: asaha Date: 2014-12-16 14:02 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/c4f1e23c4139 Merge ! .hgtags ! make/hotspot_version ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/dependencies.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp Changeset: 6bed0ca7a09a Author: asaha Date: 2014-12-17 12:48 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/6bed0ca7a09a Merge ! .hgtags ! make/hotspot_version Changeset: 6387abe3e6dc Author: asaha Date: 2014-12-17 17:53 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/6387abe3e6dc Added tag jdk8u31-b13 for changeset 4206e725d584 ! .hgtags Changeset: 076f441aa9b7 Author: asaha Date: 2014-12-23 10:17 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/076f441aa9b7 Merge ! .hgtags Changeset: bd4bd6afadf7 Author: asaha Date: 2015-01-02 14:10 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/bd4bd6afadf7 Merge ! .hgtags Changeset: 6ac667bd4eb1 Author: asaha Date: 2015-01-15 11:19 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/6ac667bd4eb1 Merge ! .hgtags ! make/hotspot_version Changeset: 5dd74b444f38 Author: amurillo Date: 2015-01-16 11:00 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/5dd74b444f38 8069209: new hotspot build - hs25.40-b25 Reviewed-by: jcoomes ! make/hotspot_version Changeset: ae52ee069062 Author: sjohanss Date: 2015-01-12 15:24 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/ae52ee069062 8062063: Usage of UseHugeTLBFS, UseLargePagesInMetaspace and huge SurvivorAlignmentInBytes cause crashes in CMBitMapClosure::do_bit Summary: Making sure committed memory is cleared when re-committed, even if using large pages. Reviewed-by: jwilhelm, tschatzl ! src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp ! src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.hpp ! src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.cpp Changeset: 0f0cb4eeab2d Author: amurillo Date: 2015-01-16 13:50 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/0f0cb4eeab2d Merge Changeset: 28bcefe20ba5 Author: amurillo Date: 2015-01-16 13:50 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/28bcefe20ba5 Added tag hs25.40-b25 for changeset 0f0cb4eeab2d ! .hgtags Changeset: 0ee548a1cda0 Author: amurillo Date: 2015-01-20 13:47 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/0ee548a1cda0 Merge ! .hgtags ! make/hotspot_version Changeset: 0e67683b7001 Author: katleman Date: 2015-01-21 12:19 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/0e67683b7001 Added tag jdk8u40-b22 for changeset 0ee548a1cda0 ! .hgtags Changeset: fcae47992523 Author: katleman Date: 2015-01-28 12:08 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fcae47992523 Added tag jdk8u40-b23 for changeset 0e67683b7001 ! .hgtags Changeset: b9c06f87e476 Author: goetz Date: 2015-01-13 16:09 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/b9c06f87e476 8069590: AIX port of "8050807: Better performing performance data handling" Reviewed-by: simonis, goetz Contributed-by: matthias.baesken at sap.com, martin.doerr at sap.com ! make/aix/makefiles/xlc.make ! src/os/aix/vm/perfMemory_aix.cpp Changeset: fa4e797f61e6 Author: lana Date: 2015-01-30 15:14 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/fa4e797f61e6 Merge Changeset: 698dd28ecc78 Author: katleman Date: 2015-02-04 12:14 -0800 URL: http://hg.openjdk.java.net/graal/graal/rev/698dd28ecc78 Added tag jdk8u40-b24 for changeset fa4e797f61e6 ! .hgtags Changeset: 7848fc12602b Author: Gilles Duboscq Date: 2015-04-07 14:58 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7848fc12602b Merge with jdk8u40-b25 ! .hgtags ! THIRD_PARTY_README + agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionManager.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java ! agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java ! make/Makefile ! make/bsd/makefiles/adjust-mflags.sh ! make/bsd/makefiles/mapfile-vers-debug ! make/bsd/makefiles/mapfile-vers-product ! make/bsd/makefiles/vm.make ! make/excludeSrc.make ! make/hotspot_version - make/jprt.properties ! make/linux/makefiles/adjust-mflags.sh ! make/linux/makefiles/mapfile-vers-debug ! make/linux/makefiles/mapfile-vers-product ! make/linux/makefiles/vm.make ! make/solaris/Makefile - make/solaris/makefiles/add_gnu_debuglink.make ! make/solaris/makefiles/adjust-mflags.sh ! make/solaris/makefiles/buildtree.make ! make/solaris/makefiles/dtrace.make - make/solaris/makefiles/fix_empty_sec_hdr_flags.make ! make/solaris/makefiles/jsig.make ! make/solaris/makefiles/mapfile-vers ! make/solaris/makefiles/saproc.make ! make/solaris/makefiles/vm.make ! make/windows/makefiles/sa.make ! src/cpu/ppc/vm/templateInterpreter_ppc.cpp ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/compiledIC_sparc.cpp ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/sparc/vm/sparc.ad ! src/cpu/sparc/vm/stubGenerator_sparc.cpp ! src/cpu/sparc/vm/stubRoutines_sparc.hpp ! src/cpu/sparc/vm/vm_version_sparc.cpp ! src/cpu/sparc/vm/vm_version_sparc.hpp ! src/cpu/x86/vm/assembler_x86.cpp ! src/cpu/x86/vm/assembler_x86.hpp ! src/cpu/x86/vm/c1_LIRGenerator_x86.cpp ! src/cpu/x86/vm/c1_Runtime1_x86.cpp ! src/cpu/x86/vm/compiledIC_x86.cpp ! src/cpu/x86/vm/globals_x86.hpp ! src/cpu/x86/vm/macroAssembler_x86.cpp ! src/cpu/x86/vm/macroAssembler_x86.hpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp ! src/cpu/x86/vm/vm_version_x86.cpp ! src/cpu/x86/vm/vm_version_x86.hpp ! src/cpu/zero/vm/cppInterpreter_zero.cpp ! src/os/bsd/vm/os_bsd.cpp ! src/os/bsd/vm/os_bsd.inline.hpp ! src/os/linux/vm/os_linux.cpp ! src/os/linux/vm/os_linux.hpp ! src/os/linux/vm/os_linux.inline.hpp ! src/os/linux/vm/perfMemory_linux.cpp ! src/os/posix/vm/os_posix.cpp - src/os/solaris/add_gnu_debuglink/add_gnu_debuglink.c - src/os/solaris/fix_empty_sec_hdr_flags/fix_empty_sec_hdr_flags.c ! src/os/solaris/vm/os_solaris.cpp ! src/os/solaris/vm/os_solaris.inline.hpp ! src/os/solaris/vm/perfMemory_solaris.cpp ! src/os/windows/vm/os_windows.cpp ! src/os/windows/vm/os_windows.hpp ! src/os/windows/vm/os_windows.inline.hpp ! src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp ! src/os_cpu/linux_x86/vm/os_linux_x86.cpp ! src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp ! src/os_cpu/windows_x86/vm/os_windows_x86.cpp ! src/share/tools/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java ! src/share/tools/ProjectCreator/WinGammaPlatformVC10.java ! src/share/vm/asm/codeBuffer.cpp ! src/share/vm/c1/c1_Canonicalizer.cpp ! src/share/vm/c1/c1_Compiler.cpp ! src/share/vm/c1/c1_GraphBuilder.cpp ! src/share/vm/c1/c1_LIRGenerator.cpp ! src/share/vm/c1/c1_LinearScan.cpp ! src/share/vm/c1/c1_Runtime1.cpp ! src/share/vm/c1/c1_globals.hpp ! src/share/vm/ci/bcEscapeAnalyzer.cpp ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/ci/ciEnv.hpp ! src/share/vm/ci/ciKlass.hpp ! src/share/vm/ci/ciMethod.cpp ! src/share/vm/ci/ciMethod.hpp ! src/share/vm/ci/ciMethodData.cpp ! src/share/vm/ci/ciMethodData.hpp ! src/share/vm/ci/ciObjectFactory.cpp ! src/share/vm/ci/ciObjectFactory.hpp ! src/share/vm/ci/ciTypeFlow.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classFileStream.cpp ! src/share/vm/classfile/classFileStream.hpp ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/classfile/classLoader.hpp ! src/share/vm/classfile/classLoaderData.cpp ! src/share/vm/classfile/classLoaderData.hpp ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/classfile/symbolTable.cpp ! src/share/vm/classfile/symbolTable.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/code/codeBlob.cpp ! src/share/vm/code/codeCache.cpp ! src/share/vm/code/codeCache.hpp ! src/share/vm/code/compiledIC.cpp ! src/share/vm/code/compiledIC.hpp ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/dependencies.hpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/code/relocInfo.cpp ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/compiler/compileBroker.hpp ! src/share/vm/compiler/compileLog.cpp ! src/share/vm/compiler/compilerOracle.cpp ! src/share/vm/compiler/disassembler.cpp ! src/share/vm/compiler/oopMap.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp ! src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp ! src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp ! src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.cpp ! src/share/vm/gc_implementation/g1/concurrentMark.hpp ! src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp ! src/share/vm/gc_implementation/g1/g1AllocRegion.hpp ! src/share/vm/gc_implementation/g1/g1AllocRegion.inline.hpp ! src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp ! src/share/vm/gc_implementation/g1/g1CardCounts.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.inline.hpp ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp ! src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp ! src/share/vm/gc_implementation/g1/g1EvacFailure.hpp ! src/share/vm/gc_implementation/g1/g1MarkSweep.cpp ! src/share/vm/gc_implementation/g1/g1OopClosures.hpp ! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp ! src/share/vm/gc_implementation/g1/g1RemSet.cpp ! src/share/vm/gc_implementation/g1/g1RemSet.hpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp ! src/share/vm/gc_implementation/g1/g1_globals.hpp ! src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp ! src/share/vm/gc_implementation/g1/heapRegion.cpp + src/share/vm/gc_implementation/g1/heapRegionManager.cpp + src/share/vm/gc_implementation/g1/heapRegionManager.hpp + src/share/vm/gc_implementation/g1/heapRegionManager.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp - src/share/vm/gc_implementation/g1/heapRegionSeq.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.hpp - src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp ! src/share/vm/gc_implementation/g1/heapRegionSet.cpp ! src/share/vm/gc_implementation/g1/heapRegionSet.inline.hpp ! src/share/vm/gc_implementation/g1/ptrQueue.cpp ! src/share/vm/gc_implementation/g1/ptrQueue.hpp ! src/share/vm/gc_implementation/g1/satbQueue.cpp ! src/share/vm/gc_implementation/g1/satbQueue.hpp ! src/share/vm/gc_implementation/g1/sparsePRT.cpp ! src/share/vm/gc_implementation/g1/vmStructs_g1.hpp ! src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp ! src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp ! src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp ! src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp ! src/share/vm/gc_implementation/shared/concurrentGCThread.cpp ! src/share/vm/gc_implementation/shared/concurrentGCThread.hpp ! src/share/vm/gc_implementation/shared/markSweep.cpp ! src/share/vm/gc_implementation/shared/markSweep.hpp ! src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp ! src/share/vm/gc_implementation/shared/vmGCOperations.cpp ! src/share/vm/gc_interface/collectedHeap.cpp ! src/share/vm/gc_interface/collectedHeap.hpp ! src/share/vm/gc_interface/collectedHeap.inline.hpp ! src/share/vm/gc_interface/gcCause.cpp ! src/share/vm/gc_interface/gcCause.hpp ! src/share/vm/interpreter/bytecodeInterpreter.cpp ! src/share/vm/interpreter/interpreter.hpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/linkResolver.cpp ! src/share/vm/memory/allocation.cpp ! src/share/vm/memory/allocation.hpp ! src/share/vm/memory/cardTableModRefBS.cpp ! src/share/vm/memory/cardTableModRefBS.hpp ! src/share/vm/memory/cardTableRS.cpp ! src/share/vm/memory/collectorPolicy.cpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/freeList.cpp ! src/share/vm/memory/gcLocker.cpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/generation.hpp ! src/share/vm/memory/iterator.cpp ! src/share/vm/memory/iterator.hpp ! src/share/vm/memory/metaspace.cpp ! src/share/vm/memory/metaspace.hpp ! src/share/vm/memory/metaspaceShared.cpp ! src/share/vm/memory/referenceProcessor.cpp ! src/share/vm/memory/referenceProcessor.hpp ! src/share/vm/memory/resourceArea.hpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/memory/sharedHeap.hpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp ! src/share/vm/memory/threadLocalAllocBuffer.cpp ! src/share/vm/memory/threadLocalAllocBuffer.hpp ! src/share/vm/memory/universe.cpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/arrayKlass.hpp ! src/share/vm/oops/constantPool.cpp ! src/share/vm/oops/cpCache.cpp ! src/share/vm/oops/cpCache.hpp ! src/share/vm/oops/instanceClassLoaderKlass.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/instanceMirrorKlass.cpp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/method.cpp ! src/share/vm/oops/method.hpp ! src/share/vm/oops/methodCounters.cpp ! src/share/vm/oops/methodCounters.hpp ! src/share/vm/oops/methodData.cpp ! src/share/vm/oops/methodData.hpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/oops/oop.pcgc.inline.hpp ! src/share/vm/oops/typeArrayKlass.cpp ! src/share/vm/oops/typeArrayOop.hpp ! src/share/vm/opto/bytecodeInfo.cpp ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/callGenerator.cpp ! src/share/vm/opto/callGenerator.hpp ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/coalesce.cpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/graphKit.hpp ! src/share/vm/opto/ifg.cpp ! src/share/vm/opto/ifnode.cpp ! src/share/vm/opto/lcm.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/loopTransform.cpp ! src/share/vm/opto/loopnode.hpp ! src/share/vm/opto/loopopts.cpp ! src/share/vm/opto/machnode.cpp ! src/share/vm/opto/machnode.hpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/multnode.cpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/output.cpp ! src/share/vm/opto/parse.hpp ! src/share/vm/opto/parse1.cpp ! src/share/vm/opto/parse2.cpp ! src/share/vm/opto/parseHelper.cpp ! src/share/vm/opto/phaseX.cpp ! src/share/vm/opto/runtime.cpp ! src/share/vm/opto/subnode.cpp ! src/share/vm/opto/subnode.hpp ! src/share/vm/opto/superword.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/precompiled/precompiled.hpp ! src/share/vm/prims/forte.cpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jniCheck.cpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/jvm.h ! src/share/vm/prims/jvmtiClassFileReconstituter.cpp ! src/share/vm/prims/jvmtiEnv.cpp ! src/share/vm/prims/jvmtiEnvBase.cpp ! src/share/vm/prims/jvmtiExport.cpp ! src/share/vm/prims/jvmtiRedefineClasses.cpp ! src/share/vm/prims/jvmtiTagMap.cpp ! src/share/vm/prims/methodHandles.cpp ! src/share/vm/prims/methodHandles.hpp ! src/share/vm/prims/unsafe.cpp ! src/share/vm/prims/whitebox.cpp ! src/share/vm/prims/whitebox.hpp ! src/share/vm/runtime/advancedThresholdPolicy.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/frame.cpp ! src/share/vm/runtime/frame.hpp ! src/share/vm/runtime/globals.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/globals_extension.hpp ! src/share/vm/runtime/handles.hpp ! src/share/vm/runtime/init.cpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/javaCalls.cpp ! src/share/vm/runtime/javaFrameAnchor.hpp ! src/share/vm/runtime/mutex.cpp ! src/share/vm/runtime/mutexLocker.cpp ! src/share/vm/runtime/mutexLocker.hpp ! src/share/vm/runtime/objectMonitor.cpp ! src/share/vm/runtime/os.cpp ! src/share/vm/runtime/os.hpp ! src/share/vm/runtime/perfMemory.cpp ! src/share/vm/runtime/safepoint.cpp ! src/share/vm/runtime/serviceThread.cpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/sharedRuntimeTrans.cpp ! src/share/vm/runtime/sharedRuntimeTrig.cpp ! src/share/vm/runtime/simpleThresholdPolicy.cpp ! src/share/vm/runtime/simpleThresholdPolicy.inline.hpp ! src/share/vm/runtime/stubRoutines.cpp ! src/share/vm/runtime/stubRoutines.hpp ! src/share/vm/runtime/sweeper.cpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/thread.hpp ! src/share/vm/runtime/thread.inline.hpp ! src/share/vm/runtime/vframe.cpp ! src/share/vm/runtime/vframe.hpp ! src/share/vm/runtime/vframeArray.cpp ! src/share/vm/runtime/vframeArray.hpp ! src/share/vm/runtime/vmStructs.cpp ! src/share/vm/runtime/vmThread.cpp ! src/share/vm/runtime/vmThread.hpp ! src/share/vm/runtime/vm_operations.hpp ! src/share/vm/services/attachListener.cpp ! src/share/vm/services/management.cpp - src/share/vm/services/memPtr.cpp - src/share/vm/services/memPtr.hpp - src/share/vm/services/memPtrArray.hpp - src/share/vm/services/memRecorder.cpp - src/share/vm/services/memRecorder.hpp ! src/share/vm/services/memReporter.cpp ! src/share/vm/services/memReporter.hpp - src/share/vm/services/memSnapshot.cpp - src/share/vm/services/memSnapshot.hpp - src/share/vm/services/memTrackWorker.cpp - src/share/vm/services/memTrackWorker.hpp ! src/share/vm/services/memoryManager.cpp ! src/share/vm/services/runtimeService.cpp ! src/share/vm/trace/tracetypes.xml ! src/share/vm/utilities/accessFlags.cpp ! src/share/vm/utilities/array.hpp ! src/share/vm/utilities/debug.cpp ! src/share/vm/utilities/debug.hpp ! src/share/vm/utilities/exceptions.cpp ! src/share/vm/utilities/globalDefinitions.hpp ! src/share/vm/utilities/globalDefinitions_visCPP.hpp ! src/share/vm/utilities/growableArray.hpp ! src/share/vm/utilities/hashtable.cpp ! src/share/vm/utilities/hashtable.hpp ! src/share/vm/utilities/ostream.cpp ! src/share/vm/utilities/ostream.hpp ! src/share/vm/utilities/taskqueue.hpp ! src/share/vm/utilities/vmError.cpp ! test/Makefile ! test/TEST.ROOT ! test/TEST.groups ! test/compiler/ciReplay/common.sh - test/compiler/intrinsics/mathexact/sanity/Verifier.java ! test/compiler/whitebox/CompilerWhiteBoxTest.java ! test/compiler/whitebox/IsMethodCompilableTest.java ! test/compiler/whitebox/MakeMethodNotCompilableTest.java ! test/runtime/NMT/CommandLineDetail.java ! test/runtime/NMT/CommandLineSummary.java ! test/runtime/NMT/CommandLineTurnOffNMT.java ! test/runtime/NMT/PrintNMTStatistics.java ! test/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java - test/testlibrary/com/oracle/java/testlibrary/DynamicVMOptionChecker.java - test/testlibrary/com/oracle/java/testlibrary/TestDynamicVMOption.java Changeset: 379471b334cb Author: Gilles Duboscq Date: 2015-04-07 15:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/379471b334cb Lift 8u40 mx restriction ! mx/mx_graal.py Changeset: 6ee9b878902b Author: Gilles Duboscq Date: 2015-04-07 18:57 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6ee9b878902b Fix merge mess-ups ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/code/dependencies.hpp ! src/share/vm/runtime/vframe.cpp ! src/share/vm/runtime/vmStructs.cpp Changeset: 8d4496e10a51 Author: Gilles Duboscq Date: 2015-04-08 11:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8d4496e10a51 Fix merge ! src/share/vm/ci/ciTypeFlow.cpp ! src/share/vm/gc_implementation/g1/g1AllocRegion.hpp ! src/share/vm/graal/graalCodeInstaller.hpp ! src/share/vm/graal/graalCompilerToVM.cpp ! src/share/vm/runtime/globals.hpp Changeset: d3cec14f33f3 Author: Gilles Duboscq Date: 2015-04-07 19:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d3cec14f33f3 Remove G1 heap hack ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Changeset: 61b22e817c80 Author: Gilles Duboscq Date: 2015-04-07 18:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/61b22e817c80 HS VM config processor: make sure casts are applied to the whole expression ! graal/com.oracle.graal.hotspotvmconfig/src/com/oracle/graal/hotspotvmconfig/HotSpotVMConfigProcessor.java Changeset: 4407dc8b1323 Author: Gilles Duboscq Date: 2015-04-07 18:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4407dc8b1323 Only access head end/top address if heap supports inline contiguous alloc ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Changeset: 652194a6414f Author: Gilles Duboscq Date: 2015-04-07 18:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/652194a6414f Class.classloader is hidden from reflection ! graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java Changeset: 0d6563e4d1f5 Author: Gilles Duboscq Date: 2015-04-07 18:57 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0d6563e4d1f5 Add com.oracle.graal.hotspot generated files to C++ project ! hotspot/.project Changeset: eb21f2944d7d Author: Gilles Duboscq Date: 2015-04-08 15:33 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/eb21f2944d7d Process Graal oops in nmethod::do_unloading_parallel ! src/share/vm/code/nmethod.cpp Changeset: 3accde838126 Author: Stefan Anzinger Date: 2015-04-08 18:05 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3accde838126 [SPARC] Fix 32bit division and mulhi (zero/signextend value before op) ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Changeset: 17caeb034a63 Author: Stefan Anzinger Date: 2015-04-08 19:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/17caeb034a63 [SPARC] Backport of JDK-8071501 ! src/os/solaris/vm/jvm_solaris.h ! src/share/vm/utilities/globalDefinitions_sparcWorks.hpp Changeset: 6f8d03da5d08 Author: Stefan Anzinger Date: 2015-04-08 19:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6f8d03da5d08 [SPARC] Ignore SIGILL instruction when the trap is 0x10 (breakpoint op, used for GRAAL debugging) ! src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp Changeset: 874eac8b4d7f Author: Andreas Woess Date: 2015-04-09 01:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/874eac8b4d7f Truffle: remove unused compiler options ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java Changeset: 79d212bfee22 Author: Andreas Woess Date: 2015-04-09 01:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/79d212bfee22 Truffle: include slots in FrameDescriptor#toString() ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java Changeset: 42a9e77c68be Author: Andreas Woess Date: 2015-04-09 01:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/42a9e77c68be Truffle: add performance warnings (non-inlinable call, non-leaf type cast/instanceof) ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: ca57c045b1e8 Author: Andreas Woess Date: 2015-04-09 02:15 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ca57c045b1e8 Truffle: add bytecode interpreter example using virtual dispatch instead of switch ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/BytecodeInterpreterPartialEvaluationTest.java From christian.humer at gmail.com Thu Apr 9 10:33:47 2015 From: christian.humer at gmail.com (Christian Humer) Date: Thu, 9 Apr 2015 12:33:47 +0200 Subject: Use java.util.List in type system In-Reply-To: <56342B49-74F1-4F78-B486-6DEE9529E9FE@gmail.com> References: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> <057604A3-4657-4574-8B78-75BF7EA5D71F@stefan-marr.de> <56342B49-74F1-4F78-B486-6DEE9529E9FE@gmail.com> Message-ID: Hi Renze, It seems that my new mail client messed up my mail quite a bit. That is unfortunate for this mail client... I created a basic List interface so I can swap the current basic > implementation for a more optimized one later on without changing the type > system and execute functions. > Is this considered good practice in Truffle or should I just use the > implementation class? And you noted that Truffle inlines everything until > it sees a virtual call, so if I understand correctly using the List > interface in the type system creates virtual calls when methods on those > List interface are called? For example, in ?@Specialization concat(List a, > List b) { a.add(b); }" a and b would actually be of class BasicList but > specified with interface List, so the add method would be a virtual call > and stop inlining even though it should be inlined? That's exactly where you should add a type profile in order to ensure that the class of a and b is known to the compiler. If you leave it as it is now it might also work because there is just one implementation of List loaded at runtime. Also there are automatic type profiles on CallTarget arguments but this are things you should normally not depend on too much. For a quick solution you could add some type profiles for all specializations of the operation like this private final ValueProfile aProfile = ValueProfile.createClassProfile(); private final ValueProfile bProfile = ValueProfile.createClassProfile(); @Specialization List concat(List a, List b) { return aProfile.profile(a).add(bProfile.profile(b)); } Or using the @Cached annotation just for one specialization like this: @Specialization List concat(List a, List b, @Cached("createClassProfile()") ValueProfile aProfile, @Cached("createClassProfile()") ValueProfile bProfile) { return aProfile.profile(a).add(bProfile.profile(b)); } I can recommend you to have a look at the ExactClassValueProfile class which implements the ValueProfile you are using here. Its interesting to see that these profiles just use low-level Truffle API. It basically just injects the constant type information into the value using Class#cast. You might also want to think of adding type profiles to your variable reads and global lookups. If this is a good idea depends on the guest language you are implementing and how many types and specialized types are flowing through the interpreter. As you go further along with your array operations you might have several specialized data types that implement List. For instance one version that uses an int[] as backing store another that uses an Object[]. This way its likely that you hit the case where having just one type profile is not good enough because the operation is polymorphic. To be fast even in these cases you can implement a type cache that looks roughly like this: @Specialization(limit = "3", guards = {"a.getClass() == aClass", "b.getClass() == bClass"}) public Object doCached(List a, List b, @Cached("a.getClass()") Class aClass, @Cached("b.getClass()") Class bClass) { return aClass.cast(a).add(bClass.cast(b)); } @Specialization(contains = "doCached") public Object doGeneric(List a, List b) { // might produce a virtual call return a.add(b); } This operation caches for 3 combinations of classes that might occur at this place in the guest language. To avoid generating code for all possible combinations of types the node rewrites to the doGeneric specialization as soon as the limit of 3 instantiations of the doCached specialization is reached (specified by contains="doCached" and limit ="3"). Please also see the javadoc of @Cached for further details. I'd like to add that you can also use these kind of type caches in a generic way by passing in a node that implements your operation from the outside or alternatively create it dynamically using the @Cached annotation again. Also all logic of the list operations like concatenation and insertion is > implemented in the BasicList class that implements the List interface, and > the addition node simply calls > the concat method of the list interface to do the work for it. But Chris > Seaton advised me to not implement logic in the type classes like I did now > but in the node classes > where the operation is specialized (see http://mail.openjdk.java.net/p > ipermail/graal-dev/2015-April/003015.html pipermail/graal-dev/2015-April/003015.html>). If I apply his advise I > think I should limit the List interface > to getting and putting objects and use those methods to implement the > concat and other operations in the node classes directly? The main problem with implementing everything in the BasicList class is that you can only store runtime feedback in nodes. Storing runtime feedback (like type profiles or caches) is an essential capability when dealing with complex operations. You have two options here. Either you always pass the runtime feedback into your list methods or you implement your operations inside of nodes. The first option has the advantage that you can implement your operation in the implementation class and hide the details from your nodes (although the runtime profile you have to pass could be seen as an implementation detail). I would recommend this option for the basic primitive operations of your list, those which are essential to hide the inner workings of your datastructure like random access set or get. The second option gives you the full power to express specializations with Truffle. Be careful not to duplicate your logic over multiple nodes and reuse your Nodes as much as possible just like methods. Hope this helps. - Christian Humer On Wed, Apr 8, 2015 at 10:05 PM Renze Torensma wrote: > Hi Christian, > > I created a basic List interface so I can swap the current basic > implementation for a more optimized one later on without changing the type > system and execute functions. > Is this considered good practice in Truffle or should I just use the > implementation class? And you noted that Truffle inlines everything until > it sees a virtual call, so if I understand correctly using the List > interface in the type system creates virtual calls when methods on those > List interface are called? For example, in ?@Specialization concat(List a, > List b) { a.add(b); }" a and b would actually be of class BasicList but > specified with interface List, so the add method would be a virtual call > and stop inlining even though it should be inlined? > > Also all logic of the list operations like concatenation and insertion is > implemented in the BasicList class that implements the List interface, and > the addition node simply calls > the concat method of the list interface to do the work for it. But Chris > Seaton advised me to not implement logic in the type classes like I did now > but in the node classes > where the operation is specialized (see http://mail.openjdk.java.net/p > ipermail/graal-dev/2015-April/003015.html pipermail/graal-dev/2015-April/003015.html>). If I apply his advise I > think I should limit the List interface > to getting and putting objects and use those methods to implement the > concat and other operations in the node classes directly? > > Sorry for the long post, > Renze > > > On 7 apr. 2015, at 23:46, Renze Torensma > wrote: > > > > Thanks for your suggestions! Now I know why no current implementation > uses the java.util.List subclasses :) > > > > I will have a look at the implementations of jRuby and ZipPy, and I will > start with a minimal version of my own List class. > > > > Renze > >> On 7 apr. 2015, at 20:17, Stefan Marr wrote: > >> > >> Hi Renze: > >> > >>> On 07 Apr 2015, at 20:09, Christian Humer > wrote: > >>> > >>> You can get some inspiration on the array implementation of JRuby: > >>> https://github.com/jruby/jruby/blob/master/truffle/src/main/ > java/org/jruby/truffle/runtime/core/RubyArray.java > >> > >> Also interesting might be ZipPy?s solution: > >> > >> https://bitbucket.org/ssllab/zippy/src/03c969e32efd9dd6f2949f71b5a8ec > d79b962741/edu.uci.python.runtime/src/edu/uci/python/runtime/sequence/?at= > default > >> > >> Best regards > >> Stefan > >> > >> -- > >> Stefan Marr > >> INRIA Lille - Nord Europe > >> http://stefan-marr.de/research/ > >> > >> > >> > > > > From renzetorensma at gmail.com Thu Apr 9 19:53:50 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Thu, 9 Apr 2015 21:53:50 +0200 Subject: Use java.util.List in type system In-Reply-To: References: <35384C27-7AE9-44A3-BDA9-5D01CC71AECC@gmail.com> <4f3d64a9-401a-402d-80c9-c24e1a9262e3@getmailbird.com> <057604A3-4657-4574-8B78-75BF7EA5D71F@stefan-marr.de> <56342B49-74F1-4F78-B486-6DEE9529E9FE@gmail.com> Message-ID: Hi Christian, That?s a lot of information, thanks! I will have to read your email a couple of times before I understand it completely.. I didn?t even know about the ValueProfile so I should look into that. Do you have any tips how I can get more knowledge about when I have to use what parts of the Truffle DSL? Renze > On 9 apr. 2015, at 12:33, Christian Humer wrote: > > Hi Renze, > > It seems that my new mail client messed up my mail quite a bit. That is unfortunate for this mail client... > > I created a basic List interface so I can swap the current basic implementation for a more optimized one later on without changing the type system and execute functions. > Is this considered good practice in Truffle or should I just use the implementation class? And you noted that Truffle inlines everything until it sees a virtual call, so if I understand correctly using the List interface in the type system creates virtual calls when methods on those List interface are called? For example, in ?@Specialization concat(List a, List b) { a.add(b); }" a and b would actually be of class BasicList but specified with interface List, so the add method would be a virtual call and stop inlining even though it should be inlined? > > That's exactly where you should add a type profile in order to ensure that the class of a and b is known to the compiler. If you leave it as it is now it might also work because there is just one implementation of List loaded at runtime. Also there are automatic type profiles on CallTarget arguments but this are things you should normally not depend on too much. > For a quick solution you could add some type profiles for all specializations of the operation like this > private final ValueProfile aProfile = ValueProfile.createClassProfile(); > private final ValueProfile bProfile = ValueProfile.createClassProfile(); > @Specialization > List concat(List a, List b) { > return aProfile.profile(a).add(bProfile.profile(b)); > } > Or using the @Cached annotation just for one specialization like this: > @Specialization > List concat(List a, List b, > @Cached("createClassProfile()") ValueProfile aProfile, > @Cached("createClassProfile()") ValueProfile bProfile) { > return aProfile.profile(a).add(bProfile.profile(b)); > } > I can recommend you to have a look at the ExactClassValueProfile class which implements the ValueProfile you are using here. Its interesting to see that these profiles just use low-level Truffle API. It basically just injects the constant type information into the value using Class#cast. > You might also want to think of adding type profiles to your variable reads and global lookups. If this is a good idea depends on the guest language you are implementing and how many types and specialized types are flowing through the interpreter. > As you go further along with your array operations you might have several specialized data types that implement List. For instance one version that uses an int[] as backing store another that uses an Object[]. This way its likely that you hit the case where having just one type profile is not good enough because the operation is polymorphic. To be fast even in these cases you can implement a type cache that looks roughly like this: > @Specialization(limit = "3", guards = {"a.getClass() == aClass", "b.getClass() == bClass"}) > public Object doCached(List a, List b, > @Cached("a.getClass()") Class aClass, > @Cached("b.getClass()") Class bClass) { > return aClass.cast(a).add(bClass.cast(b)); > } > @Specialization(contains = "doCached") > public Object doGeneric(List a, List b) { > // might produce a virtual call > return a.add(b); > } > This operation caches for 3 combinations of classes that might occur at this place in the guest language. To avoid generating code for all possible combinations of types the node rewrites to the doGeneric specialization as soon as the limit of 3 instantiations of the doCached specialization is reached (specified by contains="doCached" and limit ="3"). Please also see the javadoc of @Cached for further details. > I'd like to add that you can also use these kind of type caches in a generic way by passing in a node that implements your operation from the outside or alternatively create it dynamically using the @Cached annotation again. > > Also all logic of the list operations like concatenation and insertion is implemented in the BasicList class that implements the List interface, and the addition node simply calls > the concat method of the list interface to do the work for it. But Chris Seaton advised me to not implement logic in the type classes like I did now but in the node classes > where the operation is specialized (see http://mail.openjdk.java.net/pipermail/graal-dev/2015-April/003015.html >). If I apply his advise I think I should limit the List interface > to getting and putting objects and use those methods to implement the concat and other operations in the node classes directly? > > The main problem with implementing everything in the BasicList class is that you can only store runtime feedback in nodes. Storing runtime feedback (like type profiles or caches) is an essential capability when dealing with complex operations. You have two options here. Either you always pass the runtime feedback into your list methods or you implement your operations inside of nodes. The first option has the advantage that you can implement your operation in the implementation class and hide the details from your nodes (although the runtime profile you have to pass could be seen as an implementation detail). I would recommend this option for the basic primitive operations of your list, those which are essential to hide the inner workings of your datastructure like random access set or get. The second option gives you the full power to express specializations with Truffle. Be careful not to duplicate your logic over multiple nodes and reuse your Nodes as much as possible just like methods. > > > Hope this helps. > > - Christian Humer > > > On Wed, Apr 8, 2015 at 10:05 PM Renze Torensma > wrote: > Hi Christian, > > I created a basic List interface so I can swap the current basic implementation for a more optimized one later on without changing the type system and execute functions. > Is this considered good practice in Truffle or should I just use the implementation class? And you noted that Truffle inlines everything until it sees a virtual call, so if I understand correctly using the List interface in the type system creates virtual calls when methods on those List interface are called? For example, in ?@Specialization concat(List a, List b) { a.add(b); }" a and b would actually be of class BasicList but specified with interface List, so the add method would be a virtual call and stop inlining even though it should be inlined? > > Also all logic of the list operations like concatenation and insertion is implemented in the BasicList class that implements the List interface, and the addition node simply calls > the concat method of the list interface to do the work for it. But Chris Seaton advised me to not implement logic in the type classes like I did now but in the node classes > where the operation is specialized (see http://mail.openjdk.java.net/pipermail/graal-dev/2015-April/003015.html >). If I apply his advise I think I should limit the List interface > to getting and putting objects and use those methods to implement the concat and other operations in the node classes directly? > > Sorry for the long post, > Renze > > > On 7 apr. 2015, at 23:46, Renze Torensma > wrote: > > > > Thanks for your suggestions! Now I know why no current implementation uses the java.util.List subclasses :) > > > > I will have a look at the implementations of jRuby and ZipPy, and I will start with a minimal version of my own List class. > > > > Renze > >> On 7 apr. 2015, at 20:17, Stefan Marr > wrote: > >> > >> Hi Renze: > >> > >>> On 07 Apr 2015, at 20:09, Christian Humer > wrote: > >>> > >>> You can get some inspiration on the array implementation of JRuby: > >>> https://github.com/jruby/jruby/blob/master/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java > >> > >> Also interesting might be ZipPy?s solution: > >> > >> https://bitbucket.org/ssllab/zippy/src/03c969e32efd9dd6f2949f71b5a8ecd79b962741/edu.uci.python.runtime/src/edu/uci/python/runtime/sequence/?at=default > >> > >> Best regards > >> Stefan > >> > >> -- > >> Stefan Marr > >> INRIA Lille - Nord Europe > >> http://stefan-marr.de/research/ > >> > >> > >> > > > From java at stefan-marr.de Thu Apr 9 14:10:14 2015 From: java at stefan-marr.de (Stefan Marr) Date: Thu, 9 Apr 2015 16:10:14 +0200 Subject: Truffle update instructions? Message-ID: <9233403B-7323-4AA7-B48D-845E17779BA0@stefan-marr.de> Hi: I am in the process of updating TruffleSOM to the latest Graal trunk (as of Apr. 7th, before the JDK update, I think). After working through all the TruffleDSL related changes, I got it kind of working again. Unfortunately, I am seeing extreme performance problems. It is so bad, that some of the benchmark runs on my benchmark server even start to timeout. The simple WhileLoop benchmark is a factor 9x slower. I have the mails on all the TruffleDSL changes, but I don?t remember much else that could be relevant. Perhaps the changes to the partial evaluation? Did anyone else notice similar effects, or are there new things I should be watching out for? Something else I was seeing is also that my Queens benchmark ran out of memory with the following error: java.lang.OutOfMemoryError: Java heap space at java.util.BitSet.initWords(BitSet.java:166) at java.util.BitSet.(BitSet.java:161) at com.oracle.graal.lir.alloc.lsra.LinearScan.computeLocalLiveSets(LinearScan.java:685) at com.oracle.graal.lir.alloc.lsra.LinearScan.allocate(LinearScan.java:1758) at com.oracle.graal.lir.alloc.lsra.LinearScanPhase.run(LinearScanPhase.java:37) Thanks Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From christian.humer at gmail.com Thu Apr 9 20:23:55 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Thu, 09 Apr 2015 20:23:55 +0000 Subject: Truffle update instructions? In-Reply-To: <9233403B-7323-4AA7-B48D-845E17779BA0@stefan-marr.de> Message-ID: Hi Stefan, A lot of things changed recently. But most likely your performance problem is triggered by changes to partial evaluation. I would suspect that TruffleSOM produces somewhere too much code. But many things might be the cause. As a starter you can run with the new tool -G:+PrintTruffleExpansionHistogram which should give you a hint how many graal nodes were created from each Java method that got partial evaluated. If you see outliers you can start your investigation there. You can also run with -G:+TraceTrufflePerformanceWarnings which may also show you potential problems (Note that this tool also outputs a few false positives). Thanks. - Christian Humer ------ Original Message ------ From: "Stefan Marr" To: graal-dev at openjdk.java.net Sent: 09.04.2015 16:10:14 Subject: Truffle update instructions? >Hi: > >I am in the process of updating TruffleSOM to the latest Graal trunk >(as of Apr. 7th, before the JDK update, I think). > >After working through all the TruffleDSL related changes, I got it kind >of working again. > >Unfortunately, I am seeing extreme performance problems. >It is so bad, that some of the benchmark runs on my benchmark server >even start to timeout. > >The simple WhileLoop benchmark is a factor 9x slower. > >I have the mails on all the TruffleDSL changes, but I don?t remember >much else that could be relevant. > >Perhaps the changes to the partial evaluation? > >Did anyone else notice similar effects, or are there new things I >should be watching out for? > > >Something else I was seeing is also that my Queens benchmark ran out of >memory with the following error: > >java.lang.OutOfMemoryError: Java heap space > at java.util.BitSet.initWords(BitSet.java:166) > at java.util.BitSet.(BitSet.java:161) > at >com.oracle.graal.lir.alloc.lsra.LinearScan.computeLocalLiveSets(LinearScan.java:685) > at >com.oracle.graal.lir.alloc.lsra.LinearScan.allocate(LinearScan.java:1758) > at >com.oracle.graal.lir.alloc.lsra.LinearScanPhase.run(LinearScanPhase.java:37) > > >Thanks >Stefan > > >-- >Stefan Marr >INRIA Lille - Nord Europe >http://stefan-marr.de/research/ > > > From doug.simon at oracle.com Fri Apr 10 01:01:51 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 10 Apr 2015 01:01:51 +0000 Subject: hg: graal/graal: 62 new changesets Message-ID: <201504100101.t3A11qSR022022@aojmv0008> Changeset: 1bfa14fd1275 Author: Christian Wimmer Date: 2015-04-08 21:58 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1bfa14fd1275 Cache the reflection Field in HotSpotResolvedFieldImpl, since it is accessed repeatedly when accessing the annotations of the field ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java Changeset: 8ad82587f08d Author: Christian Wimmer Date: 2015-04-08 21:59 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/8ad82587f08d Allow scaling factors in integer options; add support for Long values in addition to Integer values ! graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionUtils.java Changeset: 3c1f872f280e Author: Christian Wimmer Date: 2015-04-08 22:00 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3c1f872f280e Refactoring to allow re-use of inlining methods during a partial evaluation ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java Changeset: 7976223c77b5 Author: Christian Wimmer Date: 2015-04-08 22:01 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7976223c77b5 Add convenient shouldNotReachHere method ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/GraalInternalError.java Changeset: 854b0b6854f4 Author: Christian Wimmer Date: 2015-04-08 22:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/854b0b6854f4 Guard against NullPointerException ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Changeset: a4aa2116cfe0 Author: Christian Wimmer Date: 2015-04-08 22:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a4aa2116cfe0 Support node canonicalization when not all usages of a node are known yet ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/spi/CanonicalizerTool.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.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/HubGetClassNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.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/MemoryAnchorNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java Changeset: 5bf195ce816a Author: Christian Wimmer Date: 2015-04-08 22:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5bf195ce816a New partial evaluator that works on encoded graphs (instead of on bytecodes) ! 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/util/FrequencyEncoder.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/TypeConversion.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/TypeReader.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/TypeWriter.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeReader.java + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeWriter.java + graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraphEncoderTest.java + graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/TypeWriterTest.java ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Edges.java ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/InputEdges.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.graph/src/com/oracle/graal/graph/SuccessorEdges.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EncodedGraph.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphEncoder.java ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/ConditionAnchoringTest.java ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/SimplePartialEvaluationTest.java + graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/nodes/TwoMergesExplodedLoopTestNode.java + graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CachingPEGraphDecoder.java + graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Changeset: 89eabd695957 Author: Christian Wimmer Date: 2015-04-08 23:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/89eabd695957 Disable new graph partial evaluator by default ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: 0d578aeb2b5e Author: Stefan Anzinger Date: 2015-04-09 13:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0d578aeb2b5e [SOLARIS] Call constructor of Arena implicitely; on SolarisStudio the destructor behavior is different ! src/share/vm/graal/graalCodeInstaller.hpp Changeset: 4dbbc4b3bb4d Author: Stefan Anzinger Date: 2015-04-09 13:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4dbbc4b3bb4d Merge Changeset: 5a97208e1824 Author: Gilles Duboscq Date: 2015-04-09 14:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5a97208e1824 CTW: Black-list some package to avoid linking problems when using an Oracle JDK >= 8u40 ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java Changeset: 43b3db5e8a9e Author: Stefan Anzinger Date: 2015-04-09 15:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/43b3db5e8a9e UnsafeArrayType(Writer|Reader): Use naturally aligned Unsafe access (Important for SPARC) ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeReader.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeWriter.java Changeset: 98af261f22f0 Author: Stefan Anzinger Date: 2015-04-09 15:45 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/98af261f22f0 [SPARC] SPARCLMulccOp cannot work on constants; load values before ! graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Changeset: a9e55baaa3cc Author: Stefan Anzinger Date: 2015-04-09 15:46 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a9e55baaa3cc Merge Changeset: 220ecaa0cc9b Author: Stefan Anzinger Date: 2015-04-09 16:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/220ecaa0cc9b Use native byte order on UnsafeArrayTypeReader ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeReader.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeWriter.java Changeset: aff67777d2ea Author: Roland Schatz Date: 2015-04-09 15:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/aff67777d2ea Better verification in assertSnippetKills. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Changeset: 5e9dc1535b62 Author: Roland Schatz Date: 2015-04-09 17:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5e9dc1535b62 Create floating reads in snippets. ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Changeset: 762e03b40d3d Author: Roland Schatz Date: 2015-04-09 17:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/762e03b40d3d Fix unsigned remainder graph builder plugin. + graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/UnsignedIntegerTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: b1700db197c7 Author: Gilles Duboscq Date: 2015-04-09 17:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b1700db197c7 Move com.oracle.nfi implementation to graal.truffle.hotspot since it implements an interface that does not live in the graal class-loader ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionHandle.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionInterface.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionPointer.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeLibraryHandle.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/RawNativeCallNodeFactory.java + graal/com.oracle.graal.truffle.hotspot.amd64/src/com/oracle/graal/truffle/hotspot/amd64/AMD64RawNativeCallNodeFactory.java ! graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java + graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionHandle.java + graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionInterface.java + graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionPointer.java + graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeLibraryHandle.java + graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/NativeCallStubGraphBuilder.java + graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/RawNativeCallNodeFactory.java ! mx/suite.py ! src/share/vm/graal/graalRuntime.cpp Changeset: 50a3be6223a7 Author: Andreas Woess Date: 2015-04-09 15:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/50a3be6223a7 Truffle: remove unused code - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java Changeset: b7ec3020800e Author: Andreas Woess Date: 2015-04-09 15:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b7ec3020800e Truffle: avoid redundant readFieldValue ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java Changeset: 9794217565cd Author: Doug Simon Date: 2015-04-06 00:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9794217565cd replaced method substitutions for [Integer|Long].numberOf[Leading|Trailing]Zeros with InvocationPlugins ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java + graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java - graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/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 Changeset: 30ba345cffeb Author: Doug Simon Date: 2015-04-06 00:19 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/30ba345cffeb replaced method substitution for GraalCompilerTest.breakpoint() with an InvocationPlugin ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java - graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTestSubstitutions.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java Changeset: e807c6f675de Author: Doug Simon Date: 2015-04-06 13:14 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e807c6f675de changed InvocationPlugin.execute to be a default method instead of a static method ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugin.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java Changeset: a2cd0e7072e2 Author: Doug Simon Date: 2015-04-07 17:32 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a2cd0e7072e2 added MethodSubstitutionPlugin as (eventual) replacement for @MethodSubstitution mechanism ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugin.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java + graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodSubstitutionPlugin.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/HotSpotInvocationPlugins.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java + graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java ! mx/suite.py Changeset: 63e4f33dce84 Author: Doug Simon Date: 2015-04-07 17:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/63e4f33dce84 moved registration of AMD64 specific plugins to AMD64GraphBuilderPlugins ! 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/HotSpotGraphBuilderPlugins.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: f2a357ee14e4 Author: Doug Simon Date: 2015-04-07 18:02 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f2a357ee14e4 converted @MethodSubstitutions for java.util.Arrays to MethodSubstitutionPlugins ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraysSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/LongSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: 0c1cd72188dc Author: Doug Simon Date: 2015-04-08 00:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0c1cd72188dc fail fast(er) if the target method of an InvocationPlugin does not exist ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java Changeset: 91f44f419e29 Author: Doug Simon Date: 2015-04-08 10:33 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/91f44f419e29 support substituting non-static methods with a MethodSubstitutionPlugin ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodSubstitutionPlugin.java Changeset: 9d4a36560833 Author: Doug Simon Date: 2015-04-08 10:46 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9d4a36560833 converted @MethodSubstitutions for AES crypto methods to MethodSubstitutionPlugins ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotCryptoSubstitutionTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 91a25b017111 Author: Doug Simon Date: 2015-04-08 10:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/91a25b017111 converted @MethodSubstitutions for java.lang.reflect.Array to MethodSubstitutionPlugins ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraySubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: 1f7ef92cb660 Author: Doug Simon Date: 2015-04-08 11:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1f7ef92cb660 use InvocationPlugin instead of Unsafe to access String.value from within substitution for String.equals ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StringSubstitutions.java Changeset: a74c785068e0 Author: Doug Simon Date: 2015-04-08 11:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a74c785068e0 converted @MethodSubstitutions for jString.equals to MethodSubstitutionPlugins ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodSubstitutionPlugin.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StringSubstitutions.java Changeset: 3081a57f95fd Author: Doug Simon Date: 2015-04-08 22:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3081a57f95fd converted @MethodSubstitutions for java.lang.Math to MethodSubstitutionPlugins moved support for AMD64 specific Math intrinsics into AMD64 specific name spaces ! graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.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/target/Backend.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java + graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ArithmeticLIRGenerator.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/ArithmeticLIRGenerator.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java + graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathIntrinsicNode.java + graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathSubstitutions.java - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MathSubstitutionsX86.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java ! mx/suite.py Changeset: 258f80bce598 Author: Doug Simon Date: 2015-04-08 22:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/258f80bce598 [SPARC] added InvocationPlugins for using HotSpot runtime math methods ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java ! graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java Changeset: ac9d0db0716e Author: Doug Simon Date: 2015-04-08 22:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ac9d0db0716e expose more HotSpot runtime math methods to Graal ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotHostForeignCallsProvider.java Changeset: 74f8a2ec0844 Author: Doug Simon Date: 2015-04-08 22:53 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/74f8a2ec0844 generalized MathRuntimeCallPlugin to ForeignCallPlugin + graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/ForeignCallPlugin.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodSubstitutionPlugin.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java ! graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java Changeset: 9e8f6d379720 Author: Doug Simon Date: 2015-04-08 22:57 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9e8f6d379720 added InvocationPlugins to use recently exposed HotSpot math runtime functions ! graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java ! graal/com.oracle.graal.replacements.sparc/src/com/oracle/graal/replacements/sparc/SPARCGraphBuilderPlugins.java Changeset: 619c0e8bb728 Author: Doug Simon Date: 2015-04-08 23:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/619c0e8bb728 removed unused @MethodSubstitution for Object. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectSubstitutions.java Changeset: dc795777f789 Author: Doug Simon Date: 2015-04-09 08:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/dc795777f789 converted @MethodSubstitutions for java.lang.Object to MethodSubstitutionPlugins ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.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/ObjectSubstitutions.java Changeset: ce38ee1b67ab Author: Doug Simon Date: 2015-04-09 09:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ce38ee1b67ab fix check for registering multiple InvocationPlugins for one method ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java Changeset: 2228b4368946 Author: Doug Simon Date: 2015-04-09 09:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2228b4368946 decouple IntrinsicGraphBuilder from Providers ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 7c94786aad9a Author: Doug Simon Date: 2015-04-09 09:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7c94786aad9a remove uses of GraphBuilderContext.getSnippetReflection() ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Changeset: 43659a795e37 Author: Doug Simon Date: 2015-04-09 09:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/43659a795e37 remove GraphBuilderContext.getSnippetReflection() ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: 9c8743f5ff53 Author: Doug Simon Date: 2015-04-09 10:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9c8743f5ff53 InvocationPlugins can only be applied for direct invokes ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Changeset: 56ff43bb250a Author: Doug Simon Date: 2015-04-09 10:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/56ff43bb250a rename SystemIdentityHashCodeNode to IdentityHashCodeNode and use it for Object.hashCode ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/IdentityHashCodeNode.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/lang/Object_hashCode02.java Changeset: d31e8e4822c3 Author: Doug Simon Date: 2015-04-09 11:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d31e8e4822c3 removed leftover debug code ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java Changeset: d5a1a7c5b43a Author: Doug Simon Date: 2015-04-09 15:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d5a1a7c5b43a fixed bug in default implementation of GraphBuilderContext.parsingReplacement Changeset: 64cf983d55ed Author: Doug Simon Date: 2015-04-09 15:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/64cf983d55ed disable use of IdentityHashCodeNode for Object.hashCode (temp workaround) ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Changeset: 971b890cf5cb Author: Doug Simon Date: 2015-04-09 15:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/971b890cf5cb implement IntrinsicGraphBuilder.toString ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java Changeset: e52678b8198f Author: Doug Simon Date: 2015-04-09 15:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e52678b8198f prevent lowering MacroNodes to InvokeNodes with an invalid bci ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Changeset: 197d955502b3 Author: Doug Simon Date: 2015-04-09 15:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/197d955502b3 fixed canonicalizeprojects issues ! mx/suite.py Changeset: 891e3e7024b8 Author: Doug Simon Date: 2015-04-09 16:46 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/891e3e7024b8 merge fixes ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderContext.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CachingPEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Changeset: d2ce468854b4 Author: Doug Simon Date: 2015-04-09 17:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d2ce468854b4 Merge. ! graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Changeset: c9a8c62c60fc Author: Doug Simon Date: 2015-04-09 18:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c9a8c62c60fc Merge. - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionHandle.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionInterface.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionPointer.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeLibraryHandle.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/RawNativeCallNodeFactory.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java ! mx/suite.py Changeset: 9ea32f3fc8ce Author: Doug Simon Date: 2015-04-09 19:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9ea32f3fc8ce Merge. - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java Changeset: 5d9bad7192f8 Author: Doug Simon Date: 2015-04-09 21:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5d9bad7192f8 disable String.equals intrinsic if RegisterPressure is enabled ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/GraalOptions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: 673e0b242d4d Author: Doug Simon Date: 2015-04-09 22:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/673e0b242d4d fixed race in HotSpotResolvedJavaFieldImpl.getType() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java Changeset: 550e422e5483 Author: Doug Simon Date: 2015-04-09 22:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/550e422e5483 fixed npe in BasicObjectCloneNode ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java Changeset: 9d58a4cda922 Author: Doug Simon Date: 2015-04-09 23:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9d58a4cda922 improved ImmutableCode invariant checking ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsUtil.java Changeset: f5c3284db6f2 Author: Andreas Woess Date: 2015-04-10 00:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f5c3284db6f2 IGV: color black holes black ! src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter Changeset: e0b3dc6b025c Author: Andreas Woess Date: 2015-04-09 23:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e0b3dc6b025c Truffle: profile exception type only for direct calls ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java From doug.simon at oracle.com Sun Apr 12 01:00:56 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sun, 12 Apr 2015 01:00:56 +0000 Subject: hg: graal/graal: 14 new changesets Message-ID: <201504120100.t3C10vZa012814@aojmv0008> Changeset: 7f4339cca304 Author: Stefan Anzinger Date: 2015-04-10 12:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7f4339cca304 [SPARC] Save thread register when doing a foreign call which destroys registers. ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Changeset: dc41766b35e1 Author: Doug Simon Date: 2015-04-10 13:10 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/dc41766b35e1 ensure Graal's GenericInvocationPlugin is used by Truffle FastPE ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Changeset: e7ece52e1ff3 Author: Michael Van De Vanter Date: 2015-04-10 16:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e7ece52e1ff3 Truffle/Instrumentation: remove two helper classes not adding enough value. ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTest.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/impl/SimpleASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/SimpleInstrumentListener.java Changeset: 0e647427eee4 Author: Michael Van De Vanter Date: 2015-04-10 16:58 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0e647427eee4 Merge with dc41766b35e11348281b76fd70b456b6ba3cf7e9 - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java - graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTestSubstitutions.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionHandle.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionInterface.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeFunctionPointer.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/HotSpotNativeLibraryHandle.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/RawNativeCallNodeFactory.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.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/GraalMethodSubstitutions.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 - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java - make/jprt.properties - make/solaris/makefiles/add_gnu_debuglink.make - make/solaris/makefiles/fix_empty_sec_hdr_flags.make - src/os/solaris/add_gnu_debuglink/add_gnu_debuglink.c - src/os/solaris/fix_empty_sec_hdr_flags/fix_empty_sec_hdr_flags.c - src/share/vm/gc_implementation/g1/heapRegionSeq.cpp - src/share/vm/gc_implementation/g1/heapRegionSeq.hpp - src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp - src/share/vm/services/memPtr.cpp - src/share/vm/services/memPtr.hpp - src/share/vm/services/memPtrArray.hpp - src/share/vm/services/memRecorder.cpp - src/share/vm/services/memRecorder.hpp - src/share/vm/services/memSnapshot.cpp - src/share/vm/services/memSnapshot.hpp - src/share/vm/services/memTrackWorker.cpp - src/share/vm/services/memTrackWorker.hpp - test/compiler/intrinsics/mathexact/sanity/Verifier.java - test/testlibrary/com/oracle/java/testlibrary/DynamicVMOptionChecker.java - test/testlibrary/com/oracle/java/testlibrary/TestDynamicVMOption.java Changeset: 37912559d662 Author: Michael Van De Vanter Date: 2015-04-10 17:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/37912559d662 Truffle/Instrumentation: Javadoc work on instrument listener interfaces. ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTInstrumentListener.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/InstrumentListener.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/InstrumentationNode.java Changeset: 0f3d81231ecb Author: Michael Van De Vanter Date: 2015-04-10 17:56 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0f3d81231ecb Truffle/Instrumentation: Javadoc ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTInstrumentListener.java Changeset: 73b1844b5b14 Author: Michael Van De Vanter Date: 2015-04-10 21:00 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/73b1844b5b14 Truffle/Instrumentation: rename InstrumentListener to SimpleInstrumentListener ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/InstrumentationPartialEvaluationTest.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTest.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTInstrumentListener.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/InstrumentListener.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SimpleInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultInstrumentListener.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultSimpleInstrumentListener.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/tools/CoverageTracker.java ! graal/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/instrument/SLInstrumentTestRunner.java Changeset: 263ab98b3bf0 Author: Michael Van De Vanter Date: 2015-04-10 21:14 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/263ab98b3bf0 Truffle/Instrumentation: rename ASTInstrumentListener to StandardInstrumentListener ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/InstrumentationPartialEvaluationTest.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTest.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/SimpleInstrumentListener.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/StandardInstrumentListener.java < graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultASTInstrumentListener.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultStandardInstrumentListener.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/tools/NodeExecCounter.java Changeset: 129a09815063 Author: Michael Van De Vanter Date: 2015-04-10 21:53 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/129a09815063 Truffle/Instrumentation: eclipseformat ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java Changeset: 2818f2862a0d Author: Christian Wimmer Date: 2015-04-11 00:12 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2818f2862a0d Use increasingly big arrays to avoid wasting space when writing few bytes ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeWriter.java Changeset: d689979bf956 Author: Christian Wimmer Date: 2015-04-11 00:14 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d689979bf956 Avoid creating a new lambda object for every FloatConvertNode ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Changeset: 231597f3bbbe Author: Christian Wimmer Date: 2015-04-11 00:15 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/231597f3bbbe Replace iterator with lambda to avoid iterator allocation ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Changeset: 23433619a7cd Author: Christian Wimmer Date: 2015-04-11 00:15 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/23433619a7cd Consistently use JNIHandles::make_local with THREAD parameter ! src/share/vm/graal/graalCompilerToVM.cpp ! src/share/vm/graal/graalRuntime.cpp Changeset: c7f1ab98d950 Author: Christian Wimmer Date: 2015-04-11 00:16 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c7f1ab98d950 Improve speed of Graph partial evaluation ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EncodedGraph.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphEncoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java From doug.simon at oracle.com Tue Apr 14 01:00:19 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 14 Apr 2015 01:00:19 +0000 Subject: hg: graal/graal: 15 new changesets Message-ID: <201504140100.t3E10JAX004461@aojmv0008> Changeset: ca13a009e38b Author: Michael Van De Vanter Date: 2015-04-12 22:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/ca13a009e38b Truffle/Instrumentation: Javadoc on Instrument now includes more thorough notes describing the implementation; client-oriented notes have been rewritten into a documentation page: https://wiki.openjdk.java.net/display/Graal/Listening+for+Execution+Events ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java Changeset: 343021aacd2f Author: Roland Schatz Date: 2015-04-13 12:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/343021aacd2f Use isIllegal to determine whether a stamp is illegal. ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/InferStamps.java Changeset: 7b0ff8da6057 Author: Roland Schatz Date: 2015-04-13 13:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7b0ff8da6057 Make compilation fail if incompatible stamps are combined. ! 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/FloatStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IllegalStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.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/nodes/type/MetaspacePointerStamp.java Changeset: c893d4112f30 Author: Andreas Woess Date: 2015-04-13 16:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c893d4112f30 Truffle: disable inlining only for methods annotated with @TruffleBoundary ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: c4691265275a Author: Doug Simon Date: 2015-04-10 13:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c4691265275a made ReplacementContext and IntrinsicContext top level classes ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotCryptoSubstitutionTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/SnippetStub.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.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java + graal/com.oracle.graal.java/src/com/oracle/graal/java/IntrinsicContext.java + graal/com.oracle.graal.java/src/com/oracle/graal/java/ReplacementContext.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 Changeset: 7cc48e7e6bfe Author: Doug Simon Date: 2015-04-10 16:29 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7cc48e7e6bfe generalized InvocationPluginIdHolder to MethodIdHolder - graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPluginIdHolder.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java + graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodIdHolder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Changeset: dc58f4ca21c9 Author: Doug Simon Date: 2015-04-13 21:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/dc58f4ca21c9 generalized map in InvocationPlugins to MethodIdMap ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/ForeignCallPlugin.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugin.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugins.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodIdHolder.java + graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodIdMap.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodSubstitutionPlugin.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64GraphBuilderPlugins.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Changeset: 44d8f20d4f55 Author: Doug Simon Date: 2015-04-13 21:51 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/44d8f20d4f55 Merge. - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/InstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/SimpleASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/SimpleInstrumentListener.java Changeset: f0d8a33aebd1 Author: Christian Wimmer Date: 2015-04-13 15:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f0d8a33aebd1 Fix handling of replacements during Truffle partial evaluation ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: c8b83aa6cc82 Author: Michael Van De Vanter Date: 2015-04-13 10:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/c8b83aa6cc82 Truffle/Source: remove proposed standard SourceTags; migrate the tags related to Source provenance into thte Source class. ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/source/SourceTest.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/Source.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/SourceTag.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/StandardSourceTag.java Changeset: 06b0a2fb20a1 Author: Michael Van De Vanter Date: 2015-04-13 11:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/06b0a2fb20a1 Truffle/Tools: the coverage tool will now ignore counts for any sources holding the tag CoverageTracker.Tags.NO_COVERAGE. ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/tools/CoverageTracker.java Changeset: f166d264af9f Author: Michael Van De Vanter Date: 2015-04-13 15:00 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f166d264af9f Truflfe/Instrumentaion: migrate client-oriented notes on Probes to a newly written documentation page at https://wiki.openjdk.java.net/display/Graal/Finding+Probes. Replace Probe's Javadoc with implementation notes oriented to implementors. ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/SourceTag.java Changeset: f96165ecb6f1 Author: Michael Van De Vanter Date: 2015-04-13 15:33 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f96165ecb6f1 Truffle/Instrumentation: rename the most recently created kind of Instrument, formerly "ToolNodeblahblah...". It is now defined by SpliceInstrumentListener. This listener allows the client to create an instrument that will *splied* a client-supplied AST fragment directly into a Probe's "instrumentation chain", and this directly into the flow of Truffle execution (with full optimization). ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/InstrumentationPartialEvaluationTest.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/ToolNodeInstrumentationTest.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/SpliceInstrumentListener.java + graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SplicedNode.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ToolNode.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ToolNodeInstrumentListener.java Changeset: 0b2e4d40b683 Author: Michael Van De Vanter Date: 2015-04-13 16:19 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0b2e4d40b683 Truffle/Instrumentation: test code renaming and cleanup for the new kind of instrument, now known as a SpliceInstrument. ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/InstrumentationPartialEvaluationTest.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/InstrumentationTestNodes.java ! graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/SpliceInstrumentTest.java < graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/ToolNodeInstrumentationTest.java Changeset: 518ce9a36939 Author: Michael Van De Vanter Date: 2015-04-13 16:26 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/518ce9a36939 Merge with f0d8a33aebd1e67d464ea8479d4777d73c146648 - graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPluginIdHolder.java From huohuohuomumu at gmail.com Tue Apr 14 07:53:44 2015 From: huohuohuomumu at gmail.com (Yanlin Wang) Date: Tue, 14 Apr 2015 15:53:44 +0800 Subject: private constructors for generated classes Message-ID: I noticed that when using Truffle, constructors for generated classes are private by default.? For example, in the??mumbler? tutorial (http://cesquivias.github.io/blog/2014/12/02/writing-a-language-in-truffle-part-2-using-truffle-and-graal/#installing-graal--truffle), ?the generated class DefineNodeGen has a private constructor.? But for for some special experiments, I want to use these constructors directly. Is there any way (truffle annotations) I can use to make these constructors public? Thanks :) Regards, Grace? From christian.humer at gmail.com Tue Apr 14 10:12:45 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Tue, 14 Apr 2015 10:12:45 +0000 Subject: private constructors for generated classes In-Reply-To: Message-ID: Hi, There is no way to make the node constructors public with an annotation. For quick experiments I usually copy the generated code and alter it or directly or you can modify the generator code. You can alter NodeFactoryFactory#createFactoryMethods and modify the line: ElementUtils.setVisibility(constructor.getModifiers(), Modifier.PRIVATE); to ElementUtils.setVisibility(constructor.getModifiers(), Modifier.PUBLIC); to make the node constructors visible. Happy experimenting. - Christian Humer ------ Original Message ------ From: "Yanlin Wang" To: graal-dev at openjdk.java.net Sent: 14.04.2015 09:53:44 Subject: private constructors for generated classes >I noticed that when using Truffle, constructors for generated classes >are private by default. >For example, in the ?mumbler? tutorial >(http://cesquivias.github.io/blog/2014/12/02/writing-a-language-in-truffle-part-2-using-truffle-and-graal/#installing-graal--truffle), > the generated class DefineNodeGen has a private constructor. > >But for for some special experiments, I want to use these constructors >directly. Is there any way (truffle annotations) I can use to make >these constructors public? Thanks :) > >Regards, >Grace > From java at stefan-marr.de Tue Apr 14 21:00:20 2015 From: java at stefan-marr.de (Stefan Marr) Date: Tue, 14 Apr 2015 23:00:20 +0200 Subject: Truffle update instructions? In-Reply-To: References: Message-ID: Hi Christian: > On 09 Apr 2015, at 22:23, christian.humer at gmail.com wrote: > > [?] -G:+PrintTruffleExpansionHistogram [?] > > You can also run with -G:+TraceTrufflePerformanceWarnings which may also show you potential problems (Note that this tool also outputs a few false positives). Ok, those two tools point at similar things. The histogram shows that there are remaining calls that are not inlined. And the same is pointed out by the performance warnings. It looks like this: [truffle] perf warn not inlined Special call to HotSpotMethod (20|MethodCallTarget) [truffle] perf warn not inlined Special call to HotSpotMethod (43|MethodCallTarget) [truffle] perf warn not inlined Special call to HotSpotMethod (102|MethodCallTarget) [truffle] perf warn non-leaf type checkcast: Lsom/vmobjects/SObject; (118|CheckCast) [truffle] perf warn non-leaf type instanceof: Lsom/vmobjects/SObject; (116|InstanceOf) I also see those calls in IGV. It looks to me like the basic frame access are not compiled for some reason. Is that about right? Any idea what the cause could be? Thanks Stefan PS: I updated to the latest Graal version of today. -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From doug.simon at oracle.com Tue Apr 14 21:44:49 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 14 Apr 2015 21:44:49 +0000 Subject: hg: graal/graal: 48 new changesets Message-ID: <201504142144.t3ELioZS026164@aojmv0008> Changeset: b14a235f06eb Author: Josef Eisl Date: 2015-04-13 14:31 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b14a235f06eb Do not run *AllocatorTest if RegisterPressure is specified. ! 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 Changeset: 9b6ea36013c4 Author: Josef Eisl Date: 2015-04-13 14:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9b6ea36013c4 RegisterConfig: pass registers array to getAllocatableRegisters(PlatformKind). ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterConfig.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/AMD64HotSpotRegisterConfig.java ! graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Changeset: 4278c6500f2a Author: Josef Eisl Date: 2015-04-13 15:01 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4278c6500f2a Add RegisterAllocationConfig. + graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/RegisterAllocationConfig.java Changeset: 916aac9fe6f7 Author: Josef Eisl Date: 2015-04-13 15:10 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/916aac9fe6f7 LinearScan: use RegisterAllocationConfig. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScan.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanPhase.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/RegisterVerifier.java Changeset: 661ed7d3d10d Author: Josef Eisl Date: 2015-04-13 16:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/661ed7d3d10d RegisterConfig: rename getAllocatableRegisters(PK,R[) to filterAllocatableRegisters and remove caching from implementors. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterConfig.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/RegisterAllocationConfig.java ! 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: 6aea1527de7b Author: Josef Eisl Date: 2015-04-13 11:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6aea1527de7b Add OutOfRegistersException. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java + graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/OutOfRegistersException.java Changeset: 6daa0fd4af52 Author: Josef Eisl Date: 2015-04-13 16:53 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6daa0fd4af52 Catch OutOfRegistersException in LinearScanPhase and retry if RegisterPressure was specified. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanPhase.java Changeset: c6545476bc77 Author: Josef Eisl Date: 2015-04-13 17:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c6545476bc77 RegisterAllocationConfig: add 'catch-all' constant for RegisterPressure. ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/RegisterAllocationConfig.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanPhase.java Changeset: badbe99cfaa4 Author: Josef Eisl Date: 2015-04-13 17:10 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/badbe99cfaa4 RegisterConfig: improve javadoc for getAllocatableRegisters and filterAllocatableRegisters. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterConfig.java Changeset: 2b10bb41a298 Author: Josef Eisl Date: 2015-04-14 09:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2b10bb41a298 LinearScan: dump intervals before throwing a OutOfRegistersException. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Changeset: 10766b486cbb Author: Doug Simon Date: 2015-04-14 11:57 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/10766b486cbb added missing space ! mx/mx_graal.py Changeset: 0e5a0403729c Author: Doug Simon Date: 2015-04-14 11:58 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0e5a0403729c lifted register allocation retry under RegisterPressure to GraalCompiler.emitLIR to account for a register allocator that modifies the LIR ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanPhase.java Changeset: 03520505cbf1 Author: Doug Simon Date: 2015-04-14 11:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/03520505cbf1 remove special guards on RegisterPressure ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java Changeset: cea0b7285190 Author: Roland Schatz Date: 2015-04-14 12:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/cea0b7285190 Use correctly typed NULL constant in canonicalization of LoadMethodNode. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Changeset: 35e1b66f2810 Author: Roland Schatz Date: 2015-04-14 14:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/35e1b66f2810 Rename Stamp.illegal() to Stamp.empty(). ! 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/FloatStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IllegalStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/IntegerStamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/Stamp.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/StampFactory.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/VoidStamp.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/type/MetaspacePointerStamp.java ! graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/IntegerStampTest.java ! graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java ! graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampMeetTest.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/InferStamps.java Changeset: 2402d5534773 Author: Stefan Anzinger Date: 2015-04-10 16:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2402d5534773 Simulate recursion on AbstractControlFlowGraph.calcoDominatorRanges as the recursive version exceeds stack size on SPARC ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/cfg/AbstractControlFlowGraph.java Changeset: d9713313e88c Author: Stefan Anzinger Date: 2015-04-14 13:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d9713313e88c Change recursive LoweringPhase.Round.processBlock to state machine with emulated stack. Also use the same traversal in DominatorConditionalEliminationPhase.Instance.processBlock. Required, as the recursive implementation exceeds the stack on SPARC. ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/cfg/AbstractControlFlowGraph.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Changeset: c617a74a9eab Author: Stefan Anzinger Date: 2015-04-14 14:01 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c617a74a9eab Merge - graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPluginIdHolder.java - graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/instrument/ToolNodeInstrumentationTest.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/InstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ToolNode.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ToolNodeInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/SimpleASTInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/SimpleInstrumentListener.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/source/StandardSourceTag.java Changeset: 143c532a550e Author: Stefan Anzinger Date: 2015-04-14 14:05 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/143c532a550e Fix compilation warning ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/cfg/AbstractControlFlowGraph.java Changeset: 033dd4494705 Author: Stefan Anzinger Date: 2015-04-14 17:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/033dd4494705 Fix compare in LoweringPhase.processBlock ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Changeset: 5ad8a163b843 Author: Stefan Anzinger Date: 2015-04-14 17:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5ad8a163b843 Merge Changeset: da2251d7d3c5 Author: Stefan Anzinger Date: 2015-04-14 17:53 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/da2251d7d3c5 Cleanup blacklist for SPARC, add Assume to CompressedNullCheckTest check whether UseCompressedOops is enabled and just check if not running on SPARC on NativeFunctionInterfaceTest ! graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/CompressedNullCheckTest.java ! graal/com.oracle.nfi.test/test/com/oracle/nfi/test/NativeFunctionInterfaceTest.java ! test/blacklist_sparc.txt Changeset: fb96fbd5acbd Author: Doug Simon Date: 2015-04-14 14:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/fb96fbd5acbd added InvocationPlugin.inlineOnly to allow MacroNode creating plugins to indicate they should not be used as top level compilation roots ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugin.java ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodSubstitutionPlugin.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java Changeset: 30cbb666e512 Author: Doug Simon Date: 2015-04-14 14:57 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/30cbb666e512 expand API for retrieving method substitution graphs to indicate the BCI of the invoke being inlined or -1 if the request is not in the context of inlining ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotCryptoSubstitutionTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotHostBackend.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.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.common/src/com/oracle/graal/phases/common/inlining/policy/AbstractInliningPolicy.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/policy/InlineMethodSubstitutionsPolicy.java ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/MethodSubstitutionTest.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StandardMethodSubstitutionsTest.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/StringSubstitutionsTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: f41cd2c2916d Author: Doug Simon Date: 2015-04-14 15:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f41cd2c2916d Merge. Changeset: 37ea76052733 Author: Doug Simon Date: 2015-04-14 22:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/37ea76052733 Merge. Changeset: 18c0f02fa4d2 Author: Christian Humer Date: 2015-04-14 15:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/18c0f02fa4d2 Truffle-DSL: make type systems optional. ! CHANGELOG.md ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ArrayTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteMethodTest.java + graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/NoTypeSystemTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/NodeChildTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemErrorsTest.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/ProcessorContext.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/GeneratorUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/ImplicitCastNodeFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemCodeGenerator.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemNodeFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeExecutableElement.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ImplicitCastData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/MethodSpec.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeChildData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeExecutionData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Parameter.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ParameterSpec.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/SpecializationData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeCastData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeCheckData.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/CreateCastParser.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/GenericParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ImplicitCastParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/MethodSpecParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeMethodParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/SpecializationGroup.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeCastParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeCheckParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemMethodParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java Changeset: f83fd99b2962 Author: Christian Humer Date: 2015-04-14 15:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f83fd99b2962 Truffle-DSL: add support for null literals. + graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/NullLiteralGuardsTest.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpressionResolver.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/DSLExpressionGenerator.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Changeset: 476374f3fe9a Author: Christian Humer Date: 2015-04-14 15:12 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/476374f3fe9a Truffle-DSL: generate better polymorphic execute signatures + graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteGroupingTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteMethodTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/FallbackTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/NoTypeSystemTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/NodeFieldTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/examples/RubyCall.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemNodeFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/MessageContainer.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ParameterSpec.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/SpecializationData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/GenericParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/MethodSpecParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeMethodParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/SpecializationMethodParser.java Changeset: 4f45e4d3361c Author: Christian Humer Date: 2015-04-14 15:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4f45e4d3361c Truffle-DSL: rename GenericParser to Fallbackparser. + graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/FallbackParser.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/GenericParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: a2e295c6cf7c Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a2e295c6cf7c Truffle-DSL: fixed frame might be added twice for polymorphic signatures. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: 810d466073f0 Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/810d466073f0 Truffle-DSL: fixed common supertype was always Object if generic child types contained void. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/AbstractCodeWriter.java Changeset: 354b7f1b4acf Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/354b7f1b4acf Truffle-DSL: fixed frame may be null for shared polymorphic execute methods. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 1ed58a90b510 Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1ed58a90b510 Truffle-DSL: fixed isFrameUsedByAnyGuard() was incomplete ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Changeset: 56eb34a5aa22 Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/56eb34a5aa22 Truffle-DSL: fixed executable input types do not count as generic if there are implicit casts defined for them. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Changeset: 824ef485081f Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/824ef485081f Truffle-DSL: performance optimization for types * specialization complexity in shouldOverrideExecutableType. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: a0d97b639d57 Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a0d97b639d57 Truffle-DSL: do not throw UnexpectedResultException for operations that guarantee the type. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 9a83732f97eb Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9a83732f97eb Truffle-DSL: ensure proper wildcards for generics are filled in; remove unused type system node code generator. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemCodeGenerator.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemNodeFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java Changeset: a778fbcb8d8e Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a778fbcb8d8e Truffle-DSL: fix polymorphic return type was always object if type had implicit casts. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: a77b760a0307 Author: Christian Humer Date: 2015-04-14 19:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a77b760a0307 Truffle-DSL: fixed on-demand generation of getNext. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 833e088ee7d3 Author: Christian Humer Date: 2015-04-14 19:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/833e088ee7d3 Truffle-DSL: fixed invalid execute delegation ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeCodeGenerator.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeMethodParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: c0455554d45b Author: Christian Humer Date: 2015-04-14 15:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c0455554d45b SL: some minor simplifications. ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLExpressionNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/controlflow/SLBlockNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLBigIntegerLiteralNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLEqualNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLFunctionLiteralNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLLessOrEqualNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLLessThanNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLLogicalAndNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLLogicalNotNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLLogicalOrNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLParenExpressionNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLStringLiteralNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/instrument/SLExpressionWrapperNode.java Changeset: 73211b2c7c7a Author: Christian Humer Date: 2015-04-14 15:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/73211b2c7c7a SL: use DSL for property reads. ! 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 Changeset: f7bc60c3a8f6 Author: Christian Humer Date: 2015-04-14 15:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f7bc60c3a8f6 SL: use DSL for property writes. ! 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 Changeset: 2170de9acab0 Author: Christian Humer Date: 2015-04-14 15:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2170de9acab0 SL: use DSL for call dispatches. ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLMain.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLAbstractDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLDirectDispatchNode.java + graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLGenericDispatchNode.java ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLInvokeNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLUninitializedDispatchNode.java Changeset: 71509cb61f17 Author: Christian Humer Date: 2015-04-14 19:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/71509cb61f17 SL: add findbugs dependency to generate findbugs avoid warnings annotations for object comparisons. ! mx/suite.py Changeset: 4514065de564 Author: Christian Humer Date: 2015-04-14 22:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4514065de564 Remove dsl processor dependency from nodeinfo.processor project. ! graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeProcessor.java ! graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeVerifier.java ! mx/suite.py Changeset: bb7e95512781 Author: Christian Humer Date: 2015-04-14 23:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bb7e95512781 SL: fix calls produce less nodes now. ! graal/com.oracle.graal.truffle.test/sl/TestInliningMaxCallerSize.sl From java at stefan-marr.de Tue Apr 14 22:31:56 2015 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 15 Apr 2015 00:31:56 +0200 Subject: TruffleDSL annotation processing runtime exception Message-ID: <30565051-4B2A-4480-8482-C4D016173FC5@stefan-marr.de> Hi Christian: I just update to the latest Graal version and now get an error while annotation processing. The relevant part of the stack traces look like this: java.lang.NullPointerException at com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createCallDelegateExecute(NodeGenFactory. java:1732) at com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createFastPath(NodeGenFactory.java:1705) at com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createExecutableTypeOverride(NodeGenFact ory.java:959) at com.oracle.truffle.dsl.processor.generator.NodeGenFactory.create(NodeGenFactory.java: 216) at com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.generateNodes(NodeCodeGenerator.java: 132) at com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: 51) at com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: 40) at com.oracle.truffle.dsl.processor.AnnotationProcessor.process(AnnotationProcessor.java:82) ... 27 more Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From christian.humer at gmail.com Tue Apr 14 22:33:26 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Tue, 14 Apr 2015 22:33:26 +0000 Subject: TruffleDSL annotation processing runtime exception In-Reply-To: <5291AD99-3D3B-4ACD-B34C-0ECBF60DFFA4@inria.fr> Message-ID: Sorry. The DSL just changed quite a bit (but no breaking changes). Give me some time to clean up the rough edges. Could you point to me to the node that is causing this? Thanks - Christian Humer ------ Original Message ------ From: "Stefan Marr" To: "Christian Humer" ; graal-dev at openjdk.java.net Sent: 15.04.2015 00:29:18 Subject: TruffleDSL annotation processing runtime exception >Hi Christian: > >I just update to the latest Graal version and now get an error while >annotation processing. > >The relevant part of the stack traces look like this: > >java.lang.NullPointerException at > >com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createCallDelegateExecute(NodeGenFactory. > java:1732) at > >com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createFastPath(NodeGenFactory.java:1705) > at > >com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createExecutableTypeOverride(NodeGenFact > ory.java:959) at >com.oracle.truffle.dsl.processor.generator.NodeGenFactory.create(NodeGenFactory.java: > 216) at > >com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.generateNodes(NodeCodeGenerator.java: > 132) at >com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: > 51) at >com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: > 40) at >com.oracle.truffle.dsl.processor.AnnotationProcessor.process(AnnotationProcessor.java:82) >... 27 > more > >Best regards >Stefan > > >-- >Stefan Marr >INRIA Lille - Nord Europe >http://stefan-marr.de/research/ > > > From java at stefan-marr.de Tue Apr 14 22:40:07 2015 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 15 Apr 2015 00:40:07 +0200 Subject: TruffleDSL annotation processing runtime exception In-Reply-To: References: Message-ID: Hi Christian: > On 15 Apr 2015, at 00:33, christian.humer at gmail.com wrote: > > Sorry. The DSL just changed quite a bit (but no breaking changes). Give me some time to clean up the rough edges. No worries, just wanted to report it. > Could you point to me to the node that is causing this? It?s AndMessageNode, NotMessageNode, OrMessageNode, WhilePrimitiveNode, and DoIndexesPrim. (for instance: https://github.com/SOM-st/TruffleSOM/blob/master/src/som/interpreter/nodes/specialized/AndMessageNode.java or https://github.com/SOM-st/TruffleSOM/blob/master/src/som/primitives/arrays/DoIndexesPrim.java) A `git clone https://github.com/SOM-st/TruffleSOM.git` and `ant` should fail currently. Thanks Stefan > > Thanks > - Christian Humer > > > > > ------ Original Message ------ > From: "Stefan Marr" > To: "Christian Humer" ; graal-dev at openjdk.java.net > Sent: 15.04.2015 00:29:18 > Subject: TruffleDSL annotation processing runtime exception > >> Hi Christian: >> >> I just update to the latest Graal version and now get an error while annotation processing. >> >> The relevant part of the stack traces look like this: >> >> java.lang.NullPointerException at >> com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createCallDelegateExecute(NodeGenFactory. >> java:1732) at >> com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createFastPath(NodeGenFactory.java:1705) >> at >> com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createExecutableTypeOverride(NodeGenFact >> ory.java:959) at com.oracle.truffle.dsl.processor.generator.NodeGenFactory.create(NodeGenFactory.java: >> 216) at >> com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.generateNodes(NodeCodeGenerator.java: >> 132) at com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: >> 51) at com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: >> 40) at com.oracle.truffle.dsl.processor.AnnotationProcessor.process(AnnotationProcessor.java:82) ... 27 >> more >> >> 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 doug.simon at oracle.com Wed Apr 15 01:03:22 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 15 Apr 2015 01:03:22 +0000 Subject: hg: graal/graal: Truffle-DSL: fix generic types are not unique in javac. Message-ID: <201504150103.t3F13NG3004108@aojmv0008> Changeset: 6fe8d8a248ba Author: Christian Humer Date: 2015-04-15 00:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6fe8d8a248ba Truffle-DSL: fix generic types are not unique in javac. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java From java at stefan-marr.de Wed Apr 15 11:25:51 2015 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 15 Apr 2015 13:25:51 +0200 Subject: Truffle update instructions? In-Reply-To: References: Message-ID: Hi: In the non-TruffleDSL related changes of last night was something that fixed some of my TruffleSOM benchmarks. However, there are still huge slowdowns. Will investigate further. On the positive side, some of the benchmarks show nice improvements for warmup times. http://som-speed.stefan-marr.de/changes/?tre=10&rev=975521543086049df4471ae1dde279fdd1e34db2&exe=9&env=1 Best regards Stefan > On 14 Apr 2015, at 23:00, Stefan Marr wrote: > > Hi Christian: > > >> On 09 Apr 2015, at 22:23, christian.humer at gmail.com wrote: >> >> [?] -G:+PrintTruffleExpansionHistogram [?] >> >> You can also run with -G:+TraceTrufflePerformanceWarnings which may also show you potential problems (Note that this tool also outputs a few false positives). > > Ok, those two tools point at similar things. The histogram shows that there are remaining calls that are not inlined. And the same is pointed out by the performance warnings. > > It looks like this: > > [truffle] perf warn not inlined Special call to HotSpotMethod (20|MethodCallTarget) > [truffle] perf warn not inlined Special call to HotSpotMethod (43|MethodCallTarget) > [truffle] perf warn not inlined Special call to HotSpotMethod (102|MethodCallTarget) > [truffle] perf warn non-leaf type checkcast: Lsom/vmobjects/SObject; (118|CheckCast) > [truffle] perf warn non-leaf type instanceof: Lsom/vmobjects/SObject; (116|InstanceOf) > > I also see those calls in IGV. > It looks to me like the basic frame access are not compiled for some reason. > > Is that about right? Any idea what the cause could be? > > Thanks > Stefan > > PS: I updated to the latest Graal version of today. > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From christian.humer at gmail.com Wed Apr 15 11:55:57 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Wed, 15 Apr 2015 11:55:57 +0000 Subject: Truffle update instructions? In-Reply-To: Message-ID: I will have a look at the regressions later. Can you run with -G:+TruffleCompilationStatistics in the meantime and see if there are pending compilations for your benchmarks? I'd guess that with the faster warmup some compilations don't have time to complete. This of course just applies if you use an iteration based warmup strategy (instead of a time based). You can also verify this by trying to run with -G:-TruffleBackgroundCompilation. - Christian Humer ------ Original Message ------ From: "Stefan Marr" To: "Christian Humer" Cc: graal-dev at openjdk.java.net Sent: 15.04.2015 13:25:51 Subject: Re: Truffle update instructions? >Hi: > >In the non-TruffleDSL related changes of last night was something that >fixed some of my TruffleSOM benchmarks. > >However, there are still huge slowdowns. >Will investigate further. > >On the positive side, some of the benchmarks show nice improvements for >warmup times. > >http://som-speed.stefan-marr.de/changes/?tre=10&rev=975521543086049df4471ae1dde279fdd1e34db2&exe=9&env=1 > >Best regards >Stefan > >> On 14 Apr 2015, at 23:00, Stefan Marr wrote: >> >> Hi Christian: >> >> >>> On 09 Apr 2015, at 22:23, christian.humer at gmail.com wrote: >>> >>> [?] -G:+PrintTruffleExpansionHistogram [?] >>> >>> You can also run with -G:+TraceTrufflePerformanceWarnings which may >>>also show you potential problems (Note that this tool also outputs a >>>few false positives). >> >> Ok, those two tools point at similar things. The histogram shows that >>there are remaining calls that are not inlined. And the same is >>pointed out by the performance warnings. >> >> It looks like this: >> >> [truffle] perf warn not inlined Special call to >>HotSpotMethod >>(20|MethodCallTarget) >> [truffle] perf warn not inlined Special call to >>HotSpotMethod >>(43|MethodCallTarget) >> [truffle] perf warn not inlined Special call to >>HotSpotMethod >>(102|MethodCallTarget) >> [truffle] perf warn non-leaf type checkcast: Lsom/vmobjects/SObject; >>(118|CheckCast) >> [truffle] perf warn non-leaf type instanceof: Lsom/vmobjects/SObject; >>(116|InstanceOf) >> >> I also see those calls in IGV. >> It looks to me like the basic frame access are not compiled for some >>reason. >> >> Is that about right? Any idea what the cause could be? >> >> Thanks >> Stefan >> >> PS: I updated to the latest Graal version of today. >> >> -- >> 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 oracle.com Wed Apr 15 13:48:33 2015 From: andreas.woess at oracle.com (Andreas Woess) Date: Wed, 15 Apr 2015 15:48:33 +0200 Subject: Truffle update instructions? In-Reply-To: References: Message-ID: <552E6C31.7040708@oracle.com> Hi Stefan, The non-inlined calls to frame methods are definitely a performance issue. While I lifted the inlining cut off in a recent changeset, you still want to make sure these are inlined during partial evaluation, since (a) it's not guaranteed Graal will inline them and (b) they delay other optimizations. The reason appears to be once again the MaterializedFrame field in SBlock.context: in the new version of the partial evaluator, the type check needed to turn the interface call into an inlinable special call is inserted only after partial evaluation is finished. You can probably fix the problem (and the warning) by wrapping a type profile around the context frame (ValueProfile.createClassProfile()). - andreas On 15/04/15 13:25, Stefan Marr wrote: > Hi: > > In the non-TruffleDSL related changes of last night was something that fixed some of my TruffleSOM benchmarks. > > However, there are still huge slowdowns. > Will investigate further. > > On the positive side, some of the benchmarks show nice improvements for warmup times. > > http://som-speed.stefan-marr.de/changes/?tre=10&rev=975521543086049df4471ae1dde279fdd1e34db2&exe=9&env=1 > > Best regards > Stefan > >> On 14 Apr 2015, at 23:00, Stefan Marr wrote: >> >> Hi Christian: >> >> >>> On 09 Apr 2015, at 22:23, christian.humer at gmail.com wrote: >>> >>> [?] -G:+PrintTruffleExpansionHistogram [?] >>> >>> You can also run with -G:+TraceTrufflePerformanceWarnings which may also show you potential problems (Note that this tool also outputs a few false positives). >> Ok, those two tools point at similar things. The histogram shows that there are remaining calls that are not inlined. And the same is pointed out by the performance warnings. >> >> It looks like this: >> >> [truffle] perf warn not inlined Special call to HotSpotMethod (20|MethodCallTarget) >> [truffle] perf warn not inlined Special call to HotSpotMethod (43|MethodCallTarget) >> [truffle] perf warn not inlined Special call to HotSpotMethod (102|MethodCallTarget) >> [truffle] perf warn non-leaf type checkcast: Lsom/vmobjects/SObject; (118|CheckCast) >> [truffle] perf warn non-leaf type instanceof: Lsom/vmobjects/SObject; (116|InstanceOf) >> >> I also see those calls in IGV. >> It looks to me like the basic frame access are not compiled for some reason. >> >> Is that about right? Any idea what the cause could be? >> >> Thanks >> Stefan >> >> PS: I updated to the latest Graal version of today. >> >> -- >> Stefan Marr >> INRIA Lille - Nord Europe >> http://stefan-marr.de/research/ >> >> >> From thomas.wuerthinger at oracle.com Wed Apr 15 14:10:01 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Wed, 15 Apr 2015 16:10:01 +0200 Subject: Truffle update instructions? In-Reply-To: References: Message-ID: <232704BC-F3BC-498B-B702-45E3D75CAA2A@oracle.com> Yes, significantly improved warmup times (should be about 2x) is a major aspect of the next release. How to interpret the numbers in the table you linked? Thanks, thomas > On 15 Apr 2015, at 13:25, Stefan Marr wrote: > > Hi: > > In the non-TruffleDSL related changes of last night was something that fixed some of my TruffleSOM benchmarks. > > However, there are still huge slowdowns. > Will investigate further. > > On the positive side, some of the benchmarks show nice improvements for warmup times. > > http://som-speed.stefan-marr.de/changes/?tre=10&rev=975521543086049df4471ae1dde279fdd1e34db2&exe=9&env=1 > > Best regards > Stefan > >> On 14 Apr 2015, at 23:00, Stefan Marr wrote: >> >> Hi Christian: >> >> >>> On 09 Apr 2015, at 22:23, christian.humer at gmail.com wrote: >>> >>> [?] -G:+PrintTruffleExpansionHistogram [?] >>> >>> You can also run with -G:+TraceTrufflePerformanceWarnings which may also show you potential problems (Note that this tool also outputs a few false positives). >> >> Ok, those two tools point at similar things. The histogram shows that there are remaining calls that are not inlined. And the same is pointed out by the performance warnings. >> >> It looks like this: >> >> [truffle] perf warn not inlined Special call to HotSpotMethod (20|MethodCallTarget) >> [truffle] perf warn not inlined Special call to HotSpotMethod (43|MethodCallTarget) >> [truffle] perf warn not inlined Special call to HotSpotMethod (102|MethodCallTarget) >> [truffle] perf warn non-leaf type checkcast: Lsom/vmobjects/SObject; (118|CheckCast) >> [truffle] perf warn non-leaf type instanceof: Lsom/vmobjects/SObject; (116|InstanceOf) >> >> I also see those calls in IGV. >> It looks to me like the basic frame access are not compiled for some reason. >> >> Is that about right? Any idea what the cause could be? >> >> Thanks >> Stefan >> >> PS: I updated to the latest Graal version of today. >> >> -- >> Stefan Marr >> INRIA Lille - Nord Europe >> http://stefan-marr.de/research/ >> >> >> > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > From java at stefan-marr.de Wed Apr 15 14:13:13 2015 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 15 Apr 2015 16:13:13 +0200 Subject: Truffle update instructions? In-Reply-To: <232704BC-F3BC-498B-B702-45E3D75CAA2A@oracle.com> References: <232704BC-F3BC-498B-B702-45E3D75CAA2A@oracle.com> Message-ID: Hi Thomas: > On 15 Apr 2015, at 16:10, Thomas Wuerthinger wrote: > > How to interpret the numbers in the table you linked? Each benchmark is done in two version, the one with >] at the end, should have reached a stable state, based on a predefined constant and a little headroom. So, for those, in the best case, we see peak performance, without any compilation interfering. The benchmarks with [> at the end are executing exactly once, so, this will include compilation times, and everything else going on. The raw values in the first columns are just time etc. The interesting columns for me are the last two. The Change column shows how the runtime differs with the previous run. So, if runtime increases from 100ms to 140ms, it will indicate a 40% change, and is colored red. The Trend column is the runtime change comparing not the previous but the revision from 10 benchmark runs/pushes ago. Does that help? Best regards Stefan PS: I think, Andreas tip is going in the right direction. For the benchmark with the worst slowdown I saw that none of the closures (blocks) were eliminated. > > Thanks, thomas > > >> On 15 Apr 2015, at 13:25, Stefan Marr wrote: >> >> Hi: >> >> In the non-TruffleDSL related changes of last night was something that fixed some of my TruffleSOM benchmarks. >> >> However, there are still huge slowdowns. >> Will investigate further. >> >> On the positive side, some of the benchmarks show nice improvements for warmup times. >> >> http://som-speed.stefan-marr.de/changes/?tre=10&rev=975521543086049df4471ae1dde279fdd1e34db2&exe=9&env=1 >> >> Best regards >> Stefan >> >>> On 14 Apr 2015, at 23:00, Stefan Marr wrote: >>> >>> Hi Christian: >>> >>> >>>> On 09 Apr 2015, at 22:23, christian.humer at gmail.com wrote: >>>> >>>> [?] -G:+PrintTruffleExpansionHistogram [?] >>>> >>>> You can also run with -G:+TraceTrufflePerformanceWarnings which may also show you potential problems (Note that this tool also outputs a few false positives). >>> >>> Ok, those two tools point at similar things. The histogram shows that there are remaining calls that are not inlined. And the same is pointed out by the performance warnings. >>> >>> It looks like this: >>> >>> [truffle] perf warn not inlined Special call to HotSpotMethod (20|MethodCallTarget) >>> [truffle] perf warn not inlined Special call to HotSpotMethod (43|MethodCallTarget) >>> [truffle] perf warn not inlined Special call to HotSpotMethod (102|MethodCallTarget) >>> [truffle] perf warn non-leaf type checkcast: Lsom/vmobjects/SObject; (118|CheckCast) >>> [truffle] perf warn non-leaf type instanceof: Lsom/vmobjects/SObject; (116|InstanceOf) >>> >>> I also see those calls in IGV. >>> It looks to me like the basic frame access are not compiled for some reason. >>> >>> Is that about right? Any idea what the cause could be? >>> >>> Thanks >>> Stefan >>> >>> PS: I updated to the latest Graal version of today. >>> >>> -- >>> Stefan Marr >>> INRIA Lille - Nord Europe >>> http://stefan-marr.de/research/ >>> >>> >>> >> >> -- >> 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 Wed Apr 15 14:34:47 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Wed, 15 Apr 2015 16:34:47 +0200 Subject: Truffle update instructions? In-Reply-To: References: <232704BC-F3BC-498B-B702-45E3D75CAA2A@oracle.com> Message-ID: <4BE0CA0A-1E30-474C-B576-FEB5027C4D15@oracle.com> Yes, it does. Thanks for the explanation. One remaining question: The second column says ?Time in seconds?. Is this really the number of seconds the benchmark runs? - thomas > On 15 Apr 2015, at 16:13, Stefan Marr wrote: > > Hi Thomas: > > >> On 15 Apr 2015, at 16:10, Thomas Wuerthinger > wrote: >> >> How to interpret the numbers in the table you linked? > > Each benchmark is done in two version, the one with >] at the end, should have reached a stable state, based on a predefined constant and a little headroom. So, for those, in the best case, we see peak performance, without any compilation interfering. > > The benchmarks with [> at the end are executing exactly once, so, this will include compilation times, and everything else going on. > > > The raw values in the first columns are just time etc. > The interesting columns for me are the last two. The Change column shows how the runtime differs with the previous run. So, if runtime increases from 100ms to 140ms, it will indicate a 40% change, and is colored red. > > The Trend column is the runtime change comparing not the previous but the revision from 10 benchmark runs/pushes ago. > > Does that help? > > Best regards > Stefan > > PS: I think, Andreas tip is going in the right direction. For the benchmark with the worst slowdown I saw that none of the closures (blocks) were eliminated. > >> >> Thanks, thomas >> >> >>> On 15 Apr 2015, at 13:25, Stefan Marr wrote: >>> >>> Hi: >>> >>> In the non-TruffleDSL related changes of last night was something that fixed some of my TruffleSOM benchmarks. >>> >>> However, there are still huge slowdowns. >>> Will investigate further. >>> >>> On the positive side, some of the benchmarks show nice improvements for warmup times. >>> >>> http://som-speed.stefan-marr.de/changes/?tre=10&rev=975521543086049df4471ae1dde279fdd1e34db2&exe=9&env=1 >>> >>> Best regards >>> Stefan >>> >>>> On 14 Apr 2015, at 23:00, Stefan Marr wrote: >>>> >>>> Hi Christian: >>>> >>>> >>>>> On 09 Apr 2015, at 22:23, christian.humer at gmail.com wrote: >>>>> >>>>> [?] -G:+PrintTruffleExpansionHistogram [?] >>>>> >>>>> You can also run with -G:+TraceTrufflePerformanceWarnings which may also show you potential problems (Note that this tool also outputs a few false positives). >>>> >>>> Ok, those two tools point at similar things. The histogram shows that there are remaining calls that are not inlined. And the same is pointed out by the performance warnings. >>>> >>>> It looks like this: >>>> >>>> [truffle] perf warn not inlined Special call to HotSpotMethod (20|MethodCallTarget) >>>> [truffle] perf warn not inlined Special call to HotSpotMethod (43|MethodCallTarget) >>>> [truffle] perf warn not inlined Special call to HotSpotMethod (102|MethodCallTarget) >>>> [truffle] perf warn non-leaf type checkcast: Lsom/vmobjects/SObject; (118|CheckCast) >>>> [truffle] perf warn non-leaf type instanceof: Lsom/vmobjects/SObject; (116|InstanceOf) >>>> >>>> I also see those calls in IGV. >>>> It looks to me like the basic frame access are not compiled for some reason. >>>> >>>> Is that about right? Any idea what the cause could be? >>>> >>>> Thanks >>>> Stefan >>>> >>>> PS: I updated to the latest Graal version of today. >>>> >>>> -- >>>> Stefan Marr >>>> INRIA Lille - Nord Europe >>>> http://stefan-marr.de/research/ >>>> >>>> >>>> >>> >>> -- >>> Stefan Marr >>> INRIA Lille - Nord Europe >>> http://stefan-marr.de/research/ >>> >>> >>> >> > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ From java at stefan-marr.de Wed Apr 15 15:27:39 2015 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 15 Apr 2015 17:27:39 +0200 Subject: Truffle update instructions? In-Reply-To: <552E6C31.7040708@oracle.com> References: <552E6C31.7040708@oracle.com> Message-ID: Hi: > On 15 Apr 2015, at 15:48, Andreas Woess wrote: > > The non-inlined calls to frame methods are definitely a performance issue. While I lifted the inlining cut off in a recent changeset, you still want to make sure these are inlined during partial evaluation, since (a) it's not guaranteed Graal will inline them and (b) they delay other optimizations. The reason appears to be once again the MaterializedFrame field in SBlock.context: in the new version of the partial evaluator, the type check needed to turn the interface call into an inlinable special call is inserted only after partial evaluation is finished. You can probably fix the problem (and the warning) by wrapping a type profile around the context frame (ValueProfile.createClassProfile()). Our best friend? Yes, I saw in the Sieve benchmark that closures got allocated where they shouldn?t after inlining. And indeed, the class profile helps. Thanks! There are still some regressions [1], like the FieldLoop, which measures field access performance, but I am currently more worried about compilation failures popping up. Andreas, did you just guess, or do you have a running version of TruffleSOM? I am asking, because it requires at least one patch to Graal currently. I am seeing Fannkuch and List failing. Locally, I see assertions in different phases of the PE failing. When Fannkuch is executed like this: ./graal.sh -cp Smalltalk:Examples/Benchmarks/LanguageFeatures Examples/Benchmarks/BenchmarkHarness.som Fannkuch 130 0 9 VirtualUtil.assertNonReachable(.) fails in PEReadEliminationClosure.applyEffects, on line 104. The offending node is a ?CommitAllocation?, and the allocation seems to refer to a som.interpreter.FrameOnStackMarker. A wild guess, could it be that the allocation is still needed elsewhere, for instance because the FrameOnStackMarker object escaped, which can happen as part of a ReturnException. The ReturnNonLocalNode, will read the marker from the outer lexical frame, to make sure the non-local return is legal. When List is executed like this: ./graal.sh -cp Smalltalk:Examples/Benchmarks/LanguageFeatures Examples/Benchmarks/BenchmarkHarness.som List 500 0 500 The situation is different. The verification after canonicalization fails (after DominatorConditionalEliminationPhase). A GuardProxyNode has a value() of null. I added another graph.verify() before the call to `canonicalizer.apply(.)`, that one doesn?t fail. So, it seems that there is something going on during canonicalization. Any ideas how I could dig deeper into this? Thanks Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From gilwooden at gmail.com Wed Apr 15 16:06:13 2015 From: gilwooden at gmail.com (Gilles Duboscq) Date: Wed, 15 Apr 2015 16:06:13 +0000 Subject: Truffle update instructions? In-Reply-To: References: <552E6C31.7040708@oracle.com> Message-ID: Hi Stefan, On Wed, Apr 15, 2015 at 5:29 PM Stefan Marr wrote: > Hi: > > > On 15 Apr 2015, at 15:48, Andreas Woess > wrote: > > > > The non-inlined calls to frame methods are definitely a performance > issue. While I lifted the inlining cut off in a recent changeset, you still > want to make sure these are inlined during partial evaluation, since (a) > it's not guaranteed Graal will inline them and (b) they delay other > optimizations. The reason appears to be once again the MaterializedFrame > field in SBlock.context: in the new version of the partial evaluator, the > type check needed to turn the interface call into an inlinable special call > is inserted only after partial evaluation is finished. You can probably fix > the problem (and the warning) by wrapping a type profile around the context > frame (ValueProfile.createClassProfile()). > > Our best friend? Yes, I saw in the Sieve benchmark that closures got > allocated where they shouldn?t after inlining. > > And indeed, the class profile helps. Thanks! > > There are still some regressions [1], like the FieldLoop, which measures > field access performance, but I am currently more worried about compilation > failures popping up. > > Andreas, did you just guess, or do you have a running version of > TruffleSOM? > I am asking, because it requires at least one patch to Graal currently. > > I am seeing Fannkuch and List failing. Locally, I see assertions in > different phases of the PE failing. > > When Fannkuch is executed like this: ./graal.sh -cp > Smalltalk:Examples/Benchmarks/LanguageFeatures > Examples/Benchmarks/BenchmarkHarness.som Fannkuch 130 0 9 > > VirtualUtil.assertNonReachable(.) fails in > PEReadEliminationClosure.applyEffects, on line 104. > The offending node is a ?CommitAllocation?, and the allocation seems to > refer to a som.interpreter.FrameOnStackMarker. > A wild guess, could it be that the allocation is still needed elsewhere, > for instance because the FrameOnStackMarker object escaped, which can > happen as part of a ReturnException. The ReturnNonLocalNode, will read the > marker from the outer lexical frame, to make sure the non-local return is > legal. > > When List is executed like this: ./graal.sh -cp > Smalltalk:Examples/Benchmarks/LanguageFeatures > Examples/Benchmarks/BenchmarkHarness.som List 500 0 500 > > The situation is different. > The verification after canonicalization fails (after > DominatorConditionalEliminationPhase). > A GuardProxyNode has a value() of null. > > This verification seems bogus, currently null is ok as a value() for GuardProxyNodes. > I added another graph.verify() before the call to > `canonicalizer.apply(.)`, that one doesn?t fail. > So, it seems that there is something going on during canonicalization. > > Any ideas how I could dig deeper into this? > What happens if you just remove the value() != null assert in ProxyNode? > > Thanks > Stefan > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > > From java at stefan-marr.de Wed Apr 15 16:59:28 2015 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 15 Apr 2015 18:59:28 +0200 Subject: Truffle update instructions? In-Reply-To: References: <552E6C31.7040708@oracle.com> Message-ID: <1D44B70A-66C1-4CFB-9C83-A8B3008EF0AA@stefan-marr.de> Hi Gilles: > On 15 Apr 2015, at 18:06, Gilles Duboscq wrote: > >> When List is executed like this: ./graal.sh -cp Smalltalk:Examples/Benchmarks/LanguageFeatures Examples/Benchmarks/BenchmarkHarness.som List 500 0 500 >> >> The situation is different. >> The verification after canonicalization fails (after DominatorConditionalEliminationPhase). >> A GuardProxyNode has a value() of null. >> > This verification seems bogus, currently null is ok as a value() for GuardProxyNodes. >> >> I added another graph.verify() before the call to `canonicalizer.apply(.)`, that one doesn?t fail. >> So, it seems that there is something going on during canonicalization. >> >> Any ideas how I could dig deeper into this? >> > What happens if you just remove the value() != null assert in ProxyNode? It is going further, but then fails in PEReadEliminationBlockState.java:118 on `assert !obj.isVirtual()`. This object state references in its virtual field a ReturnException. So, I guess that?s still the same issue. The ReturnException is a virtual instance, which I would expect, since we are compiling the complete method, and the exception should normally be turned into a simple return from the method. Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From doug.simon at oracle.com Thu Apr 16 01:00:21 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 16 Apr 2015 01:00:21 +0000 Subject: hg: graal/graal: 23 new changesets Message-ID: <201504160100.t3G10MQ0013381@aojmv0008> Changeset: 21298b90a6bf Author: Michael Van De Vanter Date: 2015-04-14 14:23 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/21298b90a6bf Truffle/Instrumentation: Javadoc cleanup ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeNode.java Changeset: d79e1c137fb7 Author: Michael Van De Vanter Date: 2015-04-14 18:04 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d79e1c137fb7 Merge with 6fe8d8a248ba5c01f752c5a932de4470c9ee29c6 - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemNodeFactory.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeData.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/GenericParser.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLAbstractDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLDirectDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLGenericDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLUninitializedDispatchNode.java Changeset: ec1dca6d288a Author: Christian Humer Date: 2015-04-15 00:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ec1dca6d288a Truffle-DSL: fixed single specializable node migth delegate to a synthetic executable type. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 56a30cfcefaf Author: Christian Humer Date: 2015-04-15 03:14 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/56a30cfcefaf Truffle-DSL: fixed wrong executable delegate. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 05e1ab8c5c6a Author: Doug Simon Date: 2015-04-15 14:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/05e1ab8c5c6a relax expectations on JDK library locations ! mxtool/mx.py Changeset: 05a2b72c071f Author: Christian Humer Date: 2015-04-15 13:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/05a2b72c071f Truffle-DSL: fixed potential non generic executes in uninitialized nodes. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeMethodParser.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: f61ff7f01bc2 Author: Stefan Anzinger Date: 2015-04-15 16:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f61ff7f01bc2 Add CompileTheWorldExcludeMethodFilter to CTW and remove sun.awt.X11 classes from default ctw mx target. ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/CompileTheWorldTest.java ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/MemoryUsageBenchmark.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 ! mx/mx_graal.py Changeset: d3b276db28b8 Author: Stefan Anzinger Date: 2015-04-15 18:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d3b276db28b8 [SPARC] Use NOP only between CBcond ! graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java ! graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCMacroAssembler.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Changeset: 534f0dde2810 Author: Tom Rodriguez Date: 2015-04-14 17:26 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/534f0dde2810 It should be an error for an OopMap to mention a register that can't be found ! src/share/vm/compiler/oopMap.cpp Changeset: a560c9b81f0f Author: Tom Rodriguez Date: 2015-04-14 22:20 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a560c9b81f0f Add suport for oops in vector registers at safepoints + src/cpu/x86/vm/registerMap_x86.cpp ! src/cpu/x86/vm/registerMap_x86.hpp ! src/cpu/x86/vm/register_x86.cpp ! src/cpu/x86/vm/register_x86.hpp ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp ! src/cpu/x86/vm/vmreg_x86.cpp ! src/share/vm/graal/graalEnv.cpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: 018c536858cc Author: Tom Rodriguez Date: 2015-04-15 10:21 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/018c536858cc Merge Changeset: a69a7c0e0ccc Author: Tom Rodriguez Date: 2015-04-07 12:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a69a7c0e0ccc Remove ValuePosition machinery - 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.test/src/com/oracle/graal/lir/test/ValuePositionTest3.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.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 - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ValuePosition.java - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ValuePositionProcedure.java Changeset: cb406df0ecc3 Author: Tom Rodriguez Date: 2015-04-14 11:36 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/cb406df0ecc3 Visit CompositeValues manually ! 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.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64AddressValue.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCAddressValue.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/src/com/oracle/graal/lir/CompositeValue.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRIntrospection.java Changeset: 1af76d197949 Author: Tom Rodriguez Date: 2015-04-14 11:36 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1af76d197949 Specialize LIRInstruction visit paths a little ! graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64AddressValue.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCAddressValue.java ! graal/com.oracle.graal.lir.test/src/com/oracle/graal/lir/test/CompositeValueReplacementTest1.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/InstructionValueConsumer.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/InstructionValueProcedure.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRFrameState.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 ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ValueConsumer.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantLoadOptimization.java Changeset: 3ffe4efcc399 Author: Tom Rodriguez Date: 2015-04-14 11:36 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/3ffe4efcc399 Allocate visiting lambdas earlier ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LocationMarker.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/FixPointIntervalBuilder.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/LSStackSlotAllocator.java Changeset: 1ee4ac09b741 Author: Tom Rodriguez Date: 2015-04-14 11:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/1ee4ac09b741 Avoid some uses of streams ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantTree.java Changeset: 820420c8713c Author: Tom Rodriguez Date: 2015-04-14 11:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/820420c8713c Add int overrides for some log methods ! graal/com.oracle.graal.debug/src/com/oracle/graal/debug/Debug.java Changeset: 5541e9c74d38 Author: Tom Rodriguez Date: 2015-04-14 11:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5541e9c74d38 LocationMarker worklist should be unique ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LocationMarker.java Changeset: 65d8d305f9c0 Author: Tom Rodriguez Date: 2015-04-14 11:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/65d8d305f9c0 Minor linear scan tweaks ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScan.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Changeset: abc059cb0acf Author: Tom Rodriguez Date: 2015-04-14 11:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/abc059cb0acf Guard usages of Debug.log in LinearScan ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScan.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LocationMarker.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/MoveResolver.java Changeset: 92fc95e8667d Author: Tom Rodriguez Date: 2015-04-15 10:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/92fc95e8667d Add more efficient implementation of HotSpotReferenceMap ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ReferenceMap.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotTargetDescription.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: 23d6b95bd687 Author: Tom Rodriguez Date: 2015-04-15 11:03 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/23d6b95bd687 Merge - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemNodeFactory.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeData.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java - graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/GenericParser.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLAbstractDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLDirectDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLGenericDispatchNode.java - graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLUninitializedDispatchNode.java Changeset: b99da6d86cfe Author: Doug Simon Date: 2015-04-15 21:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b99da6d86cfe relax expectations on JDK library locations (bug fixes) ! mxtool/mx.py From doug.simon at oracle.com Thu Apr 16 12:15:23 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 16 Apr 2015 12:15:23 +0000 Subject: hg: graal/graal: 6 new changesets Message-ID: <201504161215.t3GCFTim020216@aojmv0008> Changeset: 6361fa2e3321 Author: Christian Humer Date: 2015-04-15 21:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6361fa2e3321 Truffle-DSL: further fixes for polymorphic execute signatures. ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteEvaluatedTest.java ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteGroupingTest.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/AnnotatedParameterSpec.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ParameterSpec.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/SpecializationData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: eebb05f2d1e8 Author: Christian Wimmer Date: 2015-04-15 21:01 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/eebb05f2d1e8 Fixes for GraphPE ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java + graal/com.oracle.graal.truffle.test/sl/TestDeoptInInlinedFunction.output + graal/com.oracle.graal.truffle.test/sl/TestDeoptInInlinedFunction.sl ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/SLTruffleGraalTestSuite.java ! graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/builtins/SLCallUntilOptimizedBuiltin.java + graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/builtins/SLDeoptimizeWhenCompiledBuiltin.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: ec91b758ebc7 Author: Roland Schatz Date: 2015-04-16 11:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ec91b758ebc7 Make MemoryMapNode a MemoryNode. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java Changeset: c8c0944ce10d Author: Lukas Stadler Date: 2015-04-16 11:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c8c0944ce10d copy all plugins in TruffleCompilerImpl (instead of selected ones) ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Changeset: 658db9861109 Author: Christian Wirth Date: 2015-04-16 13:15 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/658db9861109 include "precompiled.hpp", required by Windows builders. ! src/cpu/x86/vm/registerMap_x86.cpp Changeset: 4213d02d95b5 Author: Stefan Anzinger Date: 2015-04-16 13:51 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4213d02d95b5 Update hsdis for SPARC to latest binutils version (VIS3 and OSA2011 architecture included) ! mx/mx_graal.py From java at stefan-marr.de Thu Apr 16 12:59:44 2015 From: java at stefan-marr.de (Stefan Marr) Date: Thu, 16 Apr 2015 14:59:44 +0200 Subject: TruffleDSL annotation processing runtime exception In-Reply-To: References: Message-ID: <85804A06-DFAD-42D4-BC05-3B36C68A985C@stefan-marr.de> Hi Christian: I updated to the version of today and seems to be fixed now. Thanks! Stefan > On 15 Apr 2015, at 00:40, Stefan Marr wrote: > > Hi Christian: > > >> On 15 Apr 2015, at 00:33, christian.humer at gmail.com wrote: >> >> Sorry. The DSL just changed quite a bit (but no breaking changes). Give me some time to clean up the rough edges. > > No worries, just wanted to report it. > >> Could you point to me to the node that is causing this? > > It?s AndMessageNode, NotMessageNode, OrMessageNode, WhilePrimitiveNode, and DoIndexesPrim. > > (for instance: https://github.com/SOM-st/TruffleSOM/blob/master/src/som/interpreter/nodes/specialized/AndMessageNode.java > or https://github.com/SOM-st/TruffleSOM/blob/master/src/som/primitives/arrays/DoIndexesPrim.java) > > A `git clone https://github.com/SOM-st/TruffleSOM.git` > and `ant` should fail currently. > > Thanks > Stefan > > >> >> Thanks >> - Christian Humer >> >> >> >> >> ------ Original Message ------ >> From: "Stefan Marr" >> To: "Christian Humer" ; graal-dev at openjdk.java.net >> Sent: 15.04.2015 00:29:18 >> Subject: TruffleDSL annotation processing runtime exception >> >>> Hi Christian: >>> >>> I just update to the latest Graal version and now get an error while annotation processing. >>> >>> The relevant part of the stack traces look like this: >>> >>> java.lang.NullPointerException at >>> com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createCallDelegateExecute(NodeGenFactory. >>> java:1732) at >>> com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createFastPath(NodeGenFactory.java:1705) >>> at >>> com.oracle.truffle.dsl.processor.generator.NodeGenFactory.createExecutableTypeOverride(NodeGenFact >>> ory.java:959) at com.oracle.truffle.dsl.processor.generator.NodeGenFactory.create(NodeGenFactory.java: >>> 216) at >>> com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.generateNodes(NodeCodeGenerator.java: >>> 132) at com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: >>> 51) at com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.create(NodeCodeGenerator.java: >>> 40) at com.oracle.truffle.dsl.processor.AnnotationProcessor.process(AnnotationProcessor.java:82) ... 27 >>> more >>> >>> 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/ -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From christian.humer at gmail.com Thu Apr 16 13:10:18 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Thu, 16 Apr 2015 13:10:18 +0000 Subject: Use java.util.List in type system In-Reply-To: Message-ID: Hi Renze, Sorry for the late response. Besides control flow nodes you may use the DSL for any kind of nodes. It supports local speculations on input values, implementing inline caches and global speculations using assumptions. Here are some sources for information regarding Truffle DSL. *) Read com.oracle.truffle.sl. It is very well documented. *) Read the javadoc in com.oracle.truffle.api.dsl.Specialization and follow the references. *) Read com.oracle.truffle.api.dsl.test.examples for more advanced Truffle DSL examples. *) Read the DSL paper at [1]. *) There are papers, video tutorials and talks linked here[2]. Don't miss the Truffle tutorial video by Christian Wimmer [3]. [1] http://lafo.ssw.uni-linz.ac.at/papers/2014_GPCE_TruffleDSL.pdf [2] https://wiki.openjdk.java.net/display/Graal/Publications+and+Presentations [3] https://www.youtube.com/watch?v=N_sOxGkZfTg&feature=youtu.be - Christian Humer ------ Original Message ------ From: "Renze Torensma" To: "Christian Humer" Cc: "Stefan Marr" ; "graal-dev at openjdk.java.net" Sent: 09.04.2015 21:53:50 Subject: Re: Use java.util.List in type system >Hi Christian, > >That?s a lot of information, thanks! I will have to read your email a >couple of times before I understand it completely.. I didn?t even know >about the ValueProfile so I should look into that. Do you have any tips >how I can get more knowledge about when I have to use what parts of the >Truffle DSL? > >Renze > >>On 9 apr. 2015, at 12:33, Christian Humer >>wrote: >> >>Hi Renze, >> >>It seems that my new mail client messed up my mail quite a bit. That >>is unfortunate for this mail client... >> >>>I created a basic List interface so I can swap the current basic >>>implementation for a more optimized one later on without changing the >>>type system and execute functions. >>>Is this considered good practice in Truffle or should I just use the >>>implementation class? And you noted that Truffle inlines everything >>>until it sees a virtual call, so if I understand correctly using the >>>List interface in the type system creates virtual calls when methods >>>on those List interface are called? For example, in ?@Specialization >>>concat(List a, List b) { a.add(b); }" a and b would actually be of >>>class BasicList but specified with interface List, so the add method >>>would be a virtual call and stop inlining even though it should be >>>inlined? >> >>That's exactly where you should add a type profile in order to ensure >>that the class of a and b is known to the compiler. If you leave it as >>it is now it might also work because there is just one implementation >>of List loaded at runtime. Also there are automatic type profiles on >>CallTarget arguments but this are things you should normally not >>depend on too much. >>For a quick solution you could add some type profiles for all >>specializations of the operation like this >>private final ValueProfile aProfile = >>ValueProfile.createClassProfile(); >>private final ValueProfile bProfile = >>ValueProfile.createClassProfile(); >>@Specialization >>List concat(List a, List b) { >>return aProfile.profile(a).add(bProfile.profile(b)); >>} >>Or using the @Cached annotation just for one specialization like this: >>@Specialization >>List concat(List a, List b, >>@Cached("createClassProfile()") ValueProfile aProfile, >>@Cached("createClassProfile()") ValueProfile bProfile) { >>return aProfile.profile(a).add(bProfile.profile(b)); >>} >>I can recommend you to have a look at the ExactClassValueProfile class >>which implements the ValueProfile you are using here. Its interesting >>to see that these profiles just use low-level Truffle API. It >>basically just injects the constant type information into the value >>using Class#cast. >>You might also want to think of adding type profiles to your variable >>reads and global lookups. If this is a good idea depends on the guest >>language you are implementing and how many types and specialized types >>are flowing through the interpreter. >>As you go further along with your array operations you might have >>several specialized data types that implement List. For instance one >>version that uses an int[] as backing store another that uses an >>Object[]. This way its likely that you hit the case where having just >>one type profile is not good enough because the operation is >>polymorphic. To be fast even in these cases you can implement a type >>cache that looks roughly like this: >> @Specialization(limit = "3", guards = {"a.getClass() == >>aClass", "b.getClass() == bClass"}) >> public Object doCached(List a, List b, >> @Cached("a.getClass()") Class aClass, >> @Cached("b.getClass()") Class bClass) { >> return aClass.cast(a).add(bClass.cast(b)); >> } >> @Specialization(contains = "doCached") >> public Object doGeneric(List a, List b) { >> // might produce a virtual call >> return a.add(b); >> } >>This operation caches for 3 combinations of classes that might occur >>at this place in the guest language. To avoid generating code for all >>possible combinations of types the node rewrites to the doGeneric >>specialization as soon as the limit of 3 instantiations of the >>doCached specialization is reached (specified by contains="doCached" >>and limit ="3"). Please also see the javadoc of @Cached for further >>details. >>I'd like to add that you can also use these kind of type caches in a >>generic way by passing in a node that implements your operation from >>the outside or alternatively create it dynamically using the @Cached >>annotation again. >> >>>Also all logic of the list operations like concatenation and >>>insertion is implemented in the BasicList class that implements the >>>List interface, and the addition node simply calls >>>the concat method of the list interface to do the work for it. But >>>Chris Seaton advised me to not implement logic in the type classes >>>like I did now but in the node classes >>>where the operation is specialized (see >>>http://mail.openjdk.java.net/pipermail/graal-dev/2015-April/003015.html >>> >>>>>>). >>>If I apply his advise I think I should limit the List interface >>>to getting and putting objects and use those methods to implement the >>>concat and other operations in the node classes directly? >> >>The main problem with implementing everything in the BasicList class >>is that you can only store runtime feedback in nodes. Storing runtime >>feedback (like type profiles or caches) is an essential capability >>when dealing with complex operations. You have two options here. >>Either you always pass the runtime feedback into your list methods or >>you implement your operations inside of nodes. The first option has >>the advantage that you can implement your operation in the >>implementation class and hide the details from your nodes (although >>the runtime profile you have to pass could be seen as an >>implementation detail). I would recommend this option for the basic >>primitive operations of your list, those which are essential to hide >>the inner workings of your datastructure like random access set or >>get. The second option gives you the full power to express >>specializations with Truffle. Be careful not to duplicate your logic >>over multiple nodes and reuse your Nodes as much as possible just like >>methods. >> >> >>Hope this helps. >> >>- Christian Humer >> >> >>On Wed, Apr 8, 2015 at 10:05 PM Renze Torensma >> wrote: >>>Hi Christian, >>> >>>I created a basic List interface so I can swap the current basic >>>implementation for a more optimized one later on without changing the >>>type system and execute functions. >>>Is this considered good practice in Truffle or should I just use the >>>implementation class? And you noted that Truffle inlines everything >>>until it sees a virtual call, so if I understand correctly using the >>>List interface in the type system creates virtual calls when methods >>>on those List interface are called? For example, in ?@Specialization >>>concat(List a, List b) { a.add(b); }" a and b would actually be of >>>class BasicList but specified with interface List, so the add method >>>would be a virtual call and stop inlining even though it should be >>>inlined? >>> >>>Also all logic of the list operations like concatenation and >>>insertion is implemented in the BasicList class that implements the >>>List interface, and the addition node simply calls >>>the concat method of the list interface to do the work for it. But >>>Chris Seaton advised me to not implement logic in the type classes >>>like I did now but in the node classes >>>where the operation is specialized (see >>>http://mail.openjdk.java.net/pipermail/graal-dev/2015-April/003015.html >>> >>>>>>). >>>If I apply his advise I think I should limit the List interface >>>to getting and putting objects and use those methods to implement the >>>concat and other operations in the node classes directly? >>> >>>Sorry for the long post, >>>Renze >>> >>> > On 7 apr. 2015, at 23:46, Renze Torensma >>>wrote: >>> > >>> > Thanks for your suggestions! Now I know why no current >>>implementation uses the java.util.List subclasses :) >>> > >>> > I will have a look at the implementations of jRuby and ZipPy, and I >>>will start with a minimal version of my own List class. >>> > >>> > Renze >>> >> On 7 apr. 2015, at 20:17, Stefan Marr wrote: >>> >> >>> >> Hi Renze: >>> >> >>> >>> On 07 Apr 2015, at 20:09, Christian Humer >>> wrote: >>> >>> >>> >>> You can get some inspiration on the array implementation of >>>JRuby: >>> >>> >>>https://github.com/jruby/jruby/blob/master/truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java >>> >>> >> >>> >> Also interesting might be ZipPy?s solution: >>> >> >>> >> >>>https://bitbucket.org/ssllab/zippy/src/03c969e32efd9dd6f2949f71b5a8ecd79b962741/edu.uci.python.runtime/src/edu/uci/python/runtime/sequence/?at=default >>> >>> >> >>> >> Best regards >>> >> Stefan >>> >> >>> >> -- >>> >> Stefan Marr >>> >> INRIA Lille - Nord Europe >>> >> http://stefan-marr.de/research/ >>> >> >>> >> >>> >> >>> > >>> > From doug.simon at oracle.com Thu Apr 16 13:14:40 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 16 Apr 2015 13:14:40 +0000 Subject: hg: graal/graal: Truffle-DSL: fixed invalid types compares. they do not work in javac. Message-ID: <201504161314.t3GDEeFr003433@aojmv0008> Changeset: e6b59c7b3991 Author: Christian Humer Date: 2015-04-16 14:43 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e6b59c7b3991 Truffle-DSL: fixed invalid types compares. they do not work in javac. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java From doug.simon at oracle.com Fri Apr 17 01:00:33 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Fri, 17 Apr 2015 01:00:33 +0000 Subject: hg: graal/graal: 11 new changesets Message-ID: <201504170100.t3H10Xgb006454@aojmv0008> Changeset: 1b6783efebc8 Author: Stefan Anzinger Date: 2015-04-16 16:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1b6783efebc8 [SPARC] Fix unstable d2i of NaNs ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Changeset: 0a4bbeae6e31 Author: Stefan Anzinger Date: 2015-04-16 17:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0a4bbeae6e31 [SPARC] Configure registers right for register pressure in gate run ! mx/mx_graal.py Changeset: ec36daea3cf0 Author: Stefan Anzinger Date: 2015-04-16 17:01 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ec36daea3cf0 When OutOfRegisters, give a hint in the exceptions description, which kind of register is running out ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Changeset: 68ff637e95b1 Author: Stefan Anzinger Date: 2015-04-16 17:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/68ff637e95b1 Merge ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.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.test/src/com/oracle/graal/lir/test/ValuePositionTest3.java - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ValuePosition.java - graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ValuePositionProcedure.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java ! mx/mx_graal.py Changeset: 59e8737c06fd Author: Roland Schatz Date: 2015-04-16 18:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/59e8737c06fd Fix bug in LoadJavaMirrorWithKlassPhase. + graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/LoadJavaMirrorWithKlassTest.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/LoadJavaMirrorWithKlassPhase.java Changeset: 5e78d067ebbe Author: Stefan Anzinger Date: 2015-04-16 19:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5e78d067ebbe Do not build IGV in gate when running on SPARC ! mx/mx_graal.py Changeset: 370dbf93f0ca Author: Stefan Anzinger Date: 2015-04-16 20:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/370dbf93f0ca Merge Changeset: 8e5f9310f3aa Author: Christian Humer Date: 2015-04-16 21:29 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8e5f9310f3aa Truffle-DSL: fixed wrong order for implicit casts. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: ef2825da2e43 Author: Christian Humer Date: 2015-04-16 17:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ef2825da2e43 Truffle-DSL: fixed generation of unused synthetic execute methods. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: fdf55f1ffc59 Author: Christian Humer Date: 2015-04-16 22:38 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/fdf55f1ffc59 Truffle-DSL: fixed name conflicts for synthetic polymorphic execute methods. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Changeset: acc86d08e1cc Author: Christian Wimmer Date: 2015-04-16 16:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/acc86d08e1cc Support Sparc without the need of a temporary ByteBuffer for every memory access ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeReader.java ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/UnsafeArrayTypeWriter.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraphEncoderTest.java ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/TypeWriterTest.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphEncoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CachingPEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java From doug.simon at oracle.com Sat Apr 18 01:00:19 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 18 Apr 2015 01:00:19 +0000 Subject: hg: graal/graal: 9 new changesets Message-ID: <201504180100.t3I10JPZ029038@aojmv0008> Changeset: 95931055060f Author: Tom Rodriguez Date: 2015-04-16 22:41 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/95931055060f fix handling of uncompressed vector oopmaps ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java Changeset: a7f216accfb5 Author: Josef Eisl Date: 2015-04-17 11:52 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a7f216accfb5 Add DebugMetric.isEnabled(). ! graal/com.oracle.graal.debug/src/com/oracle/graal/debug/DebugMetric.java ! graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/MetricImpl.java Changeset: 0e1e8879b655 Author: Josef Eisl Date: 2015-04-17 12:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0e1e8879b655 {LS,Simple}StackSlotAllocator: use DebugMetric.isEnabled(). ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/LSStackSlotAllocator.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/SimpleStackSlotAllocator.java Changeset: e413295a3c95 Author: Roland Schatz Date: 2015-04-17 14:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e413295a3c95 Track all values in ReferenceMap. ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ReferenceMap.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRFrameState.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LocationMarker.java ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMap.java Changeset: 44ee46c753b1 Author: Stefan Anzinger Date: 2015-04-17 15:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/44ee46c753b1 [SPARC] Fix issue with overzero (stxa with asi 0xe1 does zeroes 32 bytes, which leads to an overzero); typ fix in adlc doc ! src/cpu/sparc/vm/sparc.ad ! src/share/vm/adlc/Doc/Syntax.doc Changeset: f84166ee0798 Author: Doug Simon Date: 2015-04-17 17:13 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f84166ee0798 removed application of NodeIntrinsificationPhase in ReplacementsImpl since node intrinsification is always done during graph parsing now ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/WriteBarrierAdditionTest.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/Replacements.java - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Changeset: 76e3f83aa4ac Author: Doug Simon Date: 2015-04-17 18:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/76e3f83aa4ac loop safepoints are removed during graph parsing of intrinsics and snippets ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 0fe8b02e5cb6 Author: Doug Simon Date: 2015-04-17 22:15 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0fe8b02e5cb6 moved MethodsElidedInSnippets mechanism ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultGenericInvocationPlugin.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 84ff24bc9604 Author: Tom Rodriguez Date: 2015-04-17 14:12 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/84ff24bc9604 Fixed unsigned compare construction when merging distinct values ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IfCanonicalizerTest.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java From doug.simon at oracle.com Sun Apr 19 01:00:22 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sun, 19 Apr 2015 01:00:22 +0000 Subject: hg: graal/graal: 2 new changesets Message-ID: <201504190100.t3J10MvE006303@aojmv0008> Changeset: a84d57d27727 Author: Chris Seaton Date: 2015-04-18 13:44 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/a84d57d27727 DSL: test for using a static field in a guard. ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MethodGuardsTest.java Changeset: f6369bd988c7 Author: Chris Seaton Date: 2015-04-18 13:44 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/f6369bd988c7 Merge - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java From doug.simon at oracle.com Tue Apr 21 01:00:24 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 21 Apr 2015 01:00:24 +0000 Subject: hg: graal/graal: 49 new changesets Message-ID: <201504210100.t3L10PB0003062@aojmv0008> Changeset: 556b6a4b36b2 Author: Matthias Grimmer Date: 2015-04-20 10:58 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/556b6a4b36b2 Interop: add truffle.interop + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/ForeignAccessArguments.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/TruffleLanguage.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/Argument.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/Execute.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/GetSize.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/HasSize.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/IsBoxed.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/IsExecutable.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/IsNull.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/MessageUtil.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/Read.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/Receiver.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/UnaryMessage.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/Unbox.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/Write.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/node/ForeignObjectAccessHeadNode.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/node/ForeignObjectAccessNode.java + graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/node/ObjectAccessNode.java ! mx/suite.py Changeset: c11ea4cb5765 Author: Matthias Grimmer Date: 2015-04-20 10:58 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c11ea4cb5765 Merge - graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java Changeset: 87e03398a25e Author: Matthias Grimmer Date: 2015-04-20 11:02 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/87e03398a25e Add truffle.interop to truffle.jar ! mx/suite.py Changeset: bf14fc8f5489 Author: Roland Schatz Date: 2015-04-20 12:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bf14fc8f5489 Remove leftover debug code. ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LocationMarker.java Changeset: 66d45b977e44 Author: Roland Schatz Date: 2015-04-20 14:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/66d45b977e44 Add missing //JaCoCo Exclude directives. ! graal/com.oracle.graal.api.directives/src/com/oracle/graal/api/directives/GraalDirectives.java ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AESCryptSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CipherBlockChainingSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectSubstitutions.java ! graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraySubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraysSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/LongSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StringSubstitutions.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java ! mx/suite.py Changeset: 70135380b7d6 Author: Matthias Grimmer Date: 2015-04-20 15:09 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/70135380b7d6 Interop: fix Read message compare ! graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/Read.java Changeset: 81e91799d6a1 Author: Matthias Grimmer Date: 2015-04-20 15:10 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/81e91799d6a1 Merge Changeset: 609c542c0410 Author: Stefan Anzinger Date: 2015-04-20 10:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/609c542c0410 [SPARC] Template interpreter in Graal has a greater code size when running with -Xrunjdwp:.... ! src/cpu/sparc/vm/templateInterpreter_sparc.hpp Changeset: 98e0b349a796 Author: Stefan Anzinger Date: 2015-04-20 10:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/98e0b349a796 [SPARC] CMOVE should use kind of argument instead of compare kind. ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Changeset: b4b103d7f46f Author: Stefan Anzinger Date: 2015-04-20 14:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b4b103d7f46f [SPARC] Fix performance regression with CBcond; Do not use short branch, when constant fits into simm13 but not in simm5 ! graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Changeset: 3ceda1f37dcc Author: Stefan Anzinger Date: 2015-04-20 14:58 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3ceda1f37dcc [SPARC] Remove redundant compare type (kind) for CMOVE ! graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/PrimitiveConstant.java ! graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Changeset: e4a8c886515f Author: Stefan Anzinger Date: 2015-04-20 15:31 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e4a8c886515f Merge Changeset: 2e0a55d381ea Author: Thomas Wuerthinger Date: 2015-04-20 14:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2e0a55d381ea Fix an issue in the ConvertDeoptimizeToGuardPhase that was moving dependent guarded nodes to the wrong new node. ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Changeset: 931b0acc8d2e Author: Thomas Wuerthinger Date: 2015-04-20 14:19 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/931b0acc8d2e Fixed incorrect definition of AbstractBeginNode#anchored and AbstractBeginNode#proxies utility methods. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java Changeset: 53b3a10e2515 Author: Thomas Wuerthinger Date: 2015-04-20 15:38 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/53b3a10e2515 Merge. Changeset: 37b516b9080c Author: Thomas Wuerthinger Date: 2015-04-20 16:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/37b516b9080c Remove unused import. ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java Changeset: 3fe33ec624ea Author: Thomas Wuerthinger Date: 2015-04-20 16:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3fe33ec624ea Merge. Changeset: c8166c23047d Author: Gilles Duboscq Date: 2015-04-15 17:14 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c8166c23047d Remove dead code in graalCodeInstaller.cpp ! src/share/vm/graal/graalCodeInstaller.cpp Changeset: e1c063565b3c Author: Gilles Duboscq Date: 2015-04-15 18:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e1c063565b3c Graal Services: use services files in jre/lib/graal/services ! graal/com.oracle.graal.hotspot.sourcegen/src/com/oracle/graal/hotspot/sourcegen/GenGraalRuntimeInlineHpp.java ! mx/mx_graal.py ! src/share/vm/graal/graalRuntime.cpp Changeset: 9507c925abe9 Author: Gilles Duboscq Date: 2015-04-18 19:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9507c925abe9 fix ! mx/mx_graal.py Changeset: 4527d2428f37 Author: Gilles Duboscq Date: 2015-04-15 18:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4527d2428f37 Convert graalRuntime.cpp to unix line delimiters ! src/share/vm/graal/graalRuntime.cpp Changeset: f26efa511680 Author: Gilles Duboscq Date: 2015-04-15 18:25 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/f26efa511680 ProxyNode: let Optional/non-Optional Input verify null status of edges ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Changeset: 246ff20c0a5d Author: Gilles Duboscq Date: 2015-04-15 18:29 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/246ff20c0a5d Let GuardProxyNode canonicalize away if the proxied guard becomes null ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Changeset: 953666b61a23 Author: Gilles Duboscq Date: 2015-03-16 17:07 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/953666b61a23 Always register stamps for the condition itself ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Changeset: 3fc34aafea30 Author: Gilles Duboscq Date: 2015-04-15 12:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3fc34aafea30 Conditional elimination: check if conditional has known value already ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Changeset: 6868faf48f02 Author: Gilles Duboscq Date: 2015-04-18 19:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6868faf48f02 Conditional Elimination: tryProofCondition: return true if ShortCircuitOrNode could be proven ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Changeset: 13a255e29236 Author: Gilles Duboscq Date: 2015-04-15 20:05 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/13a255e29236 Conditional Elimination: processCheckCast should return as soon as the checkcast has been transformed ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Changeset: 12e94cba3696 Author: Gilles Duboscq Date: 2015-04-20 17:56 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/12e94cba3696 Graal Loader: load all jars matching lib/graal/graal*.jar ! CHANGELOG.md ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java ! graal/com.oracle.graal.hotspot.loader/src/com/oracle/graal/hotspot/loader/Factory.java ! make/defs.make ! mx/mx_graal.py ! src/share/vm/runtime/arguments.cpp Changeset: e121783a0df9 Author: Gilles Duboscq Date: 2015-04-20 14:38 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e121783a0df9 Use the same behaviour for UseLargePages in a graal VM than in a server VM ! src/share/vm/runtime/arguments.cpp Changeset: 38b39b75500c Author: Gilles Duboscq Date: 2015-04-20 14:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/38b39b75500c Mention u40 merge in changelog ! CHANGELOG.md Changeset: 5ea65fe64368 Author: Gilles Duboscq Date: 2015-04-20 18:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5ea65fe64368 Check distributions overlap in gate ! mx/mx_graal.py ! mxtool/mx.py Changeset: 43cec8244540 Author: Christian Wimmer Date: 2015-04-20 10:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/43cec8244540 Enable Graph Partial Evaluation ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Changeset: 934c6ec83d62 Author: Doug Simon Date: 2015-04-20 19:06 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/934c6ec83d62 support for DeoptBefore nodes in late lowered snippets ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CollapseFrameForSingleSideEffectPhase.java Changeset: d35d2ac04970 Author: Doug Simon Date: 2015-04-20 19:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d35d2ac04970 weakened check used by an assertion in the FrameStateAssignmentPhase ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/BytecodeFrame.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java Changeset: 61730e3a9dce Author: Doug Simon Date: 2015-04-20 19:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/61730e3a9dce added disabled test demonstrating bug in arraycopy snippets ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ArrayCopyIntrinsificationTest.java Changeset: 013a466838b9 Author: Doug Simon Date: 2015-04-20 19:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/013a466838b9 Merge. Changeset: 319fbbdb8fb1 Author: Tom Rodriguez Date: 2015-04-15 11:07 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/319fbbdb8fb1 Clean up dead Iterable nodes in TypedGraphNodeIterator ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java ! graal/com.oracle.graal.graph/src/com/oracle/graal/graph/TypedGraphNodeIterator.java Changeset: 2fd31d8e6b58 Author: Tom Rodriguez Date: 2015-04-15 11:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2fd31d8e6b58 Relax assert about over zeroing when ZapUnusedHeapArea is disabled ! src/share/vm/memory/threadLocalAllocBuffer.cpp Changeset: 50fe6a0c6f1d Author: Tom Rodriguez Date: 2015-04-20 11:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/50fe6a0c6f1d Merge Changeset: de8880bbf2e1 Author: Andreas Woess Date: 2015-04-20 14:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/de8880bbf2e1 Truffle: simplify getProperty; minor cleanup ! graal/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Property.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 Changeset: 3006db547d5f Author: Andreas Woess Date: 2015-04-20 15:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3006db547d5f IGV: improve text contrast for partially visible nodes ! src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/FigureWidget.java Changeset: db8f1141631f Author: Andreas Woess Date: 2015-04-20 19:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/db8f1141631f IGV: construct ArrayList with exact size (usually 1) ! src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/FigureWidget.java Changeset: 41f99f9a8f63 Author: Thomas Wuerthinger Date: 2015-04-20 22:42 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/41f99f9a8f63 Remove a wrong short-cut in the scheduler phase. The latest possible block can be above the earliest possible block for virtual states. ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Changeset: eae62344f72c Author: Thomas Wuerthinger Date: 2015-04-20 22:42 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/eae62344f72c Merge. Changeset: b90ad9708e5e Author: Doug Simon Date: 2015-04-20 23:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b90ad9708e5e reverted to more readable name for snippet metrics and counters ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Changeset: 761be5b18c28 Author: Thomas Wuerthinger Date: 2015-04-21 00:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/761be5b18c28 Add StressInvokeWithExceptionNode flag. ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/GraalOptions.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Changeset: 59632bb8e4ad Author: Thomas Wuerthinger Date: 2015-04-21 00:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/59632bb8e4ad Add bootstrap with invoke exception edges to gate. ! mx/mx_graal.py Changeset: bc54c4091715 Author: Thomas Wuerthinger Date: 2015-04-21 00:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bc54c4091715 Merge. Changeset: a671d592a8da Author: Thomas Wuerthinger Date: 2015-04-21 01:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a671d592a8da Modify semantics of StressInvokeWithExceptionNode. ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java From raffaello.giulietti at supsi.ch Tue Apr 21 16:40:43 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Tue, 21 Apr 2015 18:40:43 +0200 Subject: IGV on Windows Message-ID: <55367D8B.2060409@supsi.ch> Hi, I followed the instruction on https://wiki.openjdk.java.net/display/Graal/Windows to build Graal on Windows 7 and the latest JDK 7u79 and JDK 8u45. The build succeeds. However, I cannot start igv, as suggested at the end of https://wiki.openjdk.java.net/display/Graal/Instructions Here is what happens (graal is in C:\dev\graal) C:\dev\graal>mx igv C:\dev\graal>python C:\dev\graal\/mxtool/mx.py igv Error executing 'ant -f C:\dev\graal\src\share\tool\IdealGraphVisualizer\build.xml -l C:\dev\graal\.ideal_graph_visualizer.log run': [Error 2] The system cannot find the file specified ant is on the PATH and the two files mentioned in the error message are both present. Is IGV supposed to work on Windows? If yes, any suggestion on how to dig further? Thanks Raffaello From christian.humer at gmail.com Tue Apr 21 17:09:12 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Tue, 21 Apr 2015 17:09:12 +0000 Subject: IGV on Windows In-Reply-To: <55367D8B.2060409@supsi.ch> Message-ID: Hi Raffaello, This is a problem on Windows only. As a workaround please goto 'C:\dev\graal\src\share\tool\IdealGraphVisualizer\' and run: 'ant run'. - Christian Humer ------ Original Message ------ From: "Raffaello Giulietti" To: "graal-dev at openjdk.java.net" Sent: 21.04.2015 18:40:43 Subject: IGV on Windows >Hi, > >I followed the instruction on >https://wiki.openjdk.java.net/display/Graal/Windows >to build Graal on Windows 7 and the latest JDK 7u79 and JDK 8u45. > >The build succeeds. However, I cannot start igv, as suggested at the >end of >https://wiki.openjdk.java.net/display/Graal/Instructions > > >Here is what happens (graal is in C:\dev\graal) > >C:\dev\graal>mx igv > >C:\dev\graal>python C:\dev\graal\/mxtool/mx.py igv >Error executing 'ant -f >C:\dev\graal\src\share\tool\IdealGraphVisualizer\build.xml -l >C:\dev\graal\.ideal_graph_visualizer.log run': [Error 2] The system >cannot find the file specified > >ant is on the PATH and the two files mentioned in the error message are >both present. > >Is IGV supposed to work on Windows? >If yes, any suggestion on how to dig further? > > >Thanks >Raffaello > From raffaello.giulietti at supsi.ch Tue Apr 21 19:53:33 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Tue, 21 Apr 2015 21:53:33 +0200 Subject: IGV on Windows In-Reply-To: References: Message-ID: <5536AABD.5060400@supsi.ch> Indeed, the workaround works Thanks! Raffaello On 2015-04-21 19:09, christian.humer at gmail.com wrote: > Hi Raffaello, > > This is a problem on Windows only. > > As a workaround please goto > 'C:\dev\graal\src\share\tool\IdealGraphVisualizer\' and run: 'ant run'. > - Christian Humer > > > > > ------ Original Message ------ > From: "Raffaello Giulietti" > To: "graal-dev at openjdk.java.net" > Sent: 21.04.2015 18:40:43 > Subject: IGV on Windows > >> Hi, >> >> I followed the instruction on >> https://wiki.openjdk.java.net/display/Graal/Windows >> to build Graal on Windows 7 and the latest JDK 7u79 and JDK 8u45. >> >> The build succeeds. However, I cannot start igv, as suggested at the >> end of >> https://wiki.openjdk.java.net/display/Graal/Instructions >> >> >> Here is what happens (graal is in C:\dev\graal) >> >> C:\dev\graal>mx igv >> >> C:\dev\graal>python C:\dev\graal\/mxtool/mx.py igv >> Error executing 'ant -f >> C:\dev\graal\src\share\tool\IdealGraphVisualizer\build.xml -l >> C:\dev\graal\.ideal_graph_visualizer.log run': [Error 2] The system >> cannot find the file specified >> >> ant is on the PATH and the two files mentioned in the error message >> are both present. >> >> Is IGV supposed to work on Windows? >> If yes, any suggestion on how to dig further? >> >> >> Thanks >> Raffaello >> > From doug.simon at oracle.com Wed Apr 22 01:00:40 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 22 Apr 2015 01:00:40 +0000 Subject: hg: graal/graal: 14 new changesets Message-ID: <201504220100.t3M10e6V018039@aojmv0008> Changeset: 09d9141cf7d8 Author: Doug Simon Date: 2015-04-15 14:47 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/09d9141cf7d8 converted @MethodSubstitutions for java.lang.Class to MethodSubstitutionPlugins and removed ClassQueryNode since substitutions can now be canonicalized (since non-null KlassPointers can now be optimized) ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/MethodSubstitutionPlugin.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassQueryNode.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotClassSubstitutions.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java Changeset: ae5710f20011 Author: Doug Simon Date: 2015-04-21 09:51 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ae5710f20011 renamed BytecodeFrame.isSyntheticBci to isPlaceholderBci and added getPlaceholderBciName ! graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/BytecodeFrame.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Changeset: 28117ede7606 Author: Doug Simon Date: 2015-04-21 10:32 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/28117ede7606 fixed ImmutableCode related regression ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java Changeset: 986f1c0d6f55 Author: Christian Humer Date: 2015-04-17 16:18 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/986f1c0d6f55 Truffle-DSL: do not generate polymorphic nodes for nodes with all parameters evaluated in all execute methods. ! graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/SpecializationNode.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 82539241ff38 Author: Christian Humer Date: 2015-04-21 11:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/82539241ff38 Truffle-DSL: initialize the polymorphic cached type also if the child node throws an exception. ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 69d03eeb5eed Author: Lukas Stadler Date: 2015-04-21 11:40 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/69d03eeb5eed do not perform read elimination for deleted nodes ! 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/PartialEscapeClosure.java Changeset: 53b2d64f8ad1 Author: Gilles Duboscq Date: 2015-04-21 14:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/53b2d64f8ad1 Distribution overlap is allowed for META-INF*, not just META-INF/services* ! mxtool/mx.py Changeset: 38216fb8941c Author: Gilles Duboscq Date: 2015-04-21 15:46 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/38216fb8941c Add make target for jars in lib/graal ! make/Makefile Changeset: 2ee48d02afe3 Author: Gilles Duboscq Date: 2015-04-21 16:44 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2ee48d02afe3 mx: Merge graal service files ! mx/mx_graal.py Changeset: 0eff75735b29 Author: Gilles Duboscq Date: 2015-04-21 17:32 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0eff75735b29 Merge Changeset: 0ff1d79095ed Author: Christian Wimmer Date: 2015-04-21 09:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0ff1d79095ed Guard for null pointer exception ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Changeset: 8189de5b6a2f Author: Roland Schatz Date: 2015-04-21 14:57 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8189de5b6a2f G1PostWriteBarrier contains a memory barrier, so it has to kill any(). ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Changeset: 2e35a4ea22ac Author: Tom Rodriguez Date: 2015-04-21 10:47 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2e35a4ea22ac Add MaxVectorSize to Graal globals ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp ! src/cpu/x86/vm/vm_version_x86.cpp ! src/share/vm/graal/graalEnv.cpp ! src/share/vm/graal/graalGlobals.hpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: d094ea7e0433 Author: Christian Wimmer Date: 2015-04-21 16:18 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d094ea7e0433 Move PEGraphDecoder from truffle to graal project; factor out SimplifyingGraphDecoder that performs just canonicalization but not method inlining; fix bugs ! graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphEncoder.java + graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimplifyingGraphDecoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeCheckNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CachingPEGraphDecoder.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/PEGraphDecoder.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CachingPEGraphDecoder.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java ! graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java From doug.simon at oracle.com Thu Apr 23 01:00:18 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 23 Apr 2015 01:00:18 +0000 Subject: hg: graal/graal: 9 new changesets Message-ID: <201504230100.t3N10JlY020400@aojmv0008> Changeset: 8f67ddf0dd3b Author: Matthias Grimmer Date: 2015-04-22 11:00 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8f67ddf0dd3b Interop: remove misplaced IllegalStateException ! graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/messages/MessageUtil.java Changeset: 4cba24bef2ee Author: Christian Humer Date: 2015-04-22 15:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4cba24bef2ee Truffle-DSL: fix unnecessary cast in generated isIdentical for types used just in cached expressions . ! graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/CachedTest.java ! graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Changeset: 9cc0395dcd36 Author: Doug Simon Date: 2015-04-21 15:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9cc0395dcd36 improved javadoc for InvocationPlugin.inlineOnly() ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/InvocationPlugin.java Changeset: 5454085a08a7 Author: Doug Simon Date: 2015-04-21 20:23 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5454085a08a7 fixed race in HotSpotSnippetReflectionProvider.getInjectedNodeIntrinsicParameter() ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java Changeset: 3253fe1bed41 Author: Roland Schatz Date: 2015-04-22 16:46 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3253fe1bed41 Remove CompressedNullCheckOp, merge functionality into regular NullCheckOp. ! graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java ! graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/CompressedNullCheckTest.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.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Changeset: 2e9250b29d14 Author: Roland Schatz Date: 2015-04-22 16:54 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2e9250b29d14 Use trapping null check in g1PreWriteBarrier snippet. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Changeset: 266eef1c29e0 Author: Tom Rodriguez Date: 2015-04-22 11:38 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/266eef1c29e0 Mark locks without MonitorIdNode as eliminated ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java Changeset: 71af9afd7ff6 Author: Christian Wimmer Date: 2015-04-22 13:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/71af9afd7ff6 Test the GraphDecoder by encoding and decoding every graph after parsing; fix bugs found by that testing ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSuitesProvider.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Changeset: 814bd3dbc615 Author: Christian Wimmer Date: 2015-04-22 16:18 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/814bd3dbc615 Manage null value manually to work around bug in older JDK versions ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/util/FrequencyEncoder.java From doug.simon at oracle.com Thu Apr 23 10:23:00 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 23 Apr 2015 10:23:00 +0000 Subject: hg: graal/graal: Fix wrong argument order in writeNarrow match rule. Message-ID: <201504231023.t3NAN0Gq011948@aojmv0008> Changeset: 00b66fc966b1 Author: Roland Schatz Date: 2015-04-23 11:25 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/00b66fc966b1 Fix wrong argument order in writeNarrow match rule. ! graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java From java at stefan-marr.de Thu Apr 23 11:54:41 2015 From: java at stefan-marr.de (Stefan Marr) Date: Thu, 23 Apr 2015 13:54:41 +0200 Subject: Truffle update instructions? In-Reply-To: <1D44B70A-66C1-4CFB-9C83-A8B3008EF0AA@stefan-marr.de> References: <552E6C31.7040708@oracle.com> <1D44B70A-66C1-4CFB-9C83-A8B3008EF0AA@stefan-marr.de> Message-ID: <145789D3-9B95-470E-82A5-D49115BF7AE3@stefan-marr.de> Hi: I updated to the latest Graal version and the compilation issues are gone. Overall, the results are pretty nice. http://som-speed.stefan-marr.de/changes/?tre=10&rev=e0f501843e818000ca893c4efe30b6251e37a2f5&exe=9&env=1 Thanks Stefan > On 15 Apr 2015, at 18:59, Stefan Marr wrote: > > Hi Gilles: > >> On 15 Apr 2015, at 18:06, Gilles Duboscq wrote: >> >>> When List is executed like this: ./graal.sh -cp Smalltalk:Examples/Benchmarks/LanguageFeatures Examples/Benchmarks/BenchmarkHarness.som List 500 0 500 >>> >>> The situation is different. >>> The verification after canonicalization fails (after DominatorConditionalEliminationPhase). >>> A GuardProxyNode has a value() of null. >>> >> This verification seems bogus, currently null is ok as a value() for GuardProxyNodes. >>> >>> I added another graph.verify() before the call to `canonicalizer.apply(.)`, that one doesn?t fail. >>> So, it seems that there is something going on during canonicalization. >>> >>> Any ideas how I could dig deeper into this? >>> >> What happens if you just remove the value() != null assert in ProxyNode? > > It is going further, but then fails in PEReadEliminationBlockState.java:118 on `assert !obj.isVirtual()`. > This object state references in its virtual field a ReturnException. > So, I guess that?s still the same issue. The ReturnException is a virtual instance, which I would expect, since we are compiling the complete method, and the exception should normally be turned into a simple return from the method. > > 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 java at stefan-marr.de Fri Apr 24 09:06:26 2015 From: java at stefan-marr.de (Stefan Marr) Date: Fri, 24 Apr 2015 11:06:26 +0200 Subject: Java 8 compatibility In-Reply-To: References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> Message-ID: <2F63D1A3-A499-4184-894C-4A045F9AE7B5@stefan-marr.de> Hi Thomas: > On 04 Apr 2015, at 23:59, Thomas Wuerthinger wrote: > > We would be interested in a patch like you specify below. The only hard requirement we have is that our gate checks (?mx gate?) need to continue to make sure that projects related to the Truffle API can be built with Java 7. I would propose something like the patch below. The idea is to have an additional flag, perhaps `--release`, which is used to enforce the Java compliance levels strictly. I guess, it would also be necessary for the gate command to set the do_release flag to true implicitly. So, the main result of this change is that a casual user can build Graal and Truffle easily with only a single JDK available. I tested it with JDK8u45, and Graal, Truffle, as well as IGV work nicely. Would that be something that could make it into Graal? Best regards Stefan diff --git a/mx/mx_graal.py b/mx/mx_graal.py index 8b33dcf..8ca4636 100644 --- a/mx/mx_graal.py +++ b/mx/mx_graal.py @@ -2570,6 +2570,7 @@ def mx_init(suite): mx.add_argument('--vmprefix', action='store', dest='vm_prefix', help='prefix for running the VM (e.g. "/usr/bin/gdb --args")', metavar='') mx.add_argument('--gdb', action='store_const', const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix "/usr/bin/gdb --args"') mx.add_argument('--lldb', action='store_const', const='lldb --', dest='vm_prefix', help='alias for --vmprefix "lldb --"') + mx.add_argument('--release', action='store_true', dest='do_release', help='Enforce Java version compliance for release build') commands.update({ 'export': [export, '[-options] [zipfile]'], diff --git a/mxtool/mx.py b/mxtool/mx.py index 0a12e8a..38fe930 100755 --- a/mxtool/mx.py +++ b/mxtool/mx.py @@ -209,7 +209,7 @@ class Distribution: elif dep.isProject(): p = dep - if self.javaCompliance: + if self.javaCompliance and _opts.do_release: if p.javaCompliance > self.javaCompliance: abort("Compliance level doesn't match: Distribution {0} requires {1}, but {2} is {3}.".format(self.name, self.javaCompliance, p.name, p.javaCompliance)) @@ -310,9 +310,11 @@ class Project(Dependency): # Verify that a JDK exists for this project if its compliance level is # less than the compliance level of the default JDK jdk = java(self.javaCompliance) - if jdk is None and self.javaCompliance < java().javaCompliance: + if jdk is None and self.javaCompliance < java().javaCompliance and _opts.do_release: abort('Cannot find ' + str(self.javaCompliance) + ' JDK required by ' + name + '. ' + 'Specify it with --extra-java-homes option or EXTRA_JAVA_HOMES environment variable.') + elif not _opts.do_release: + self.javaCompliance = java().javaCompliance # Create directories for projects that don't yet exist if not exists(d): -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From raffaello.giulietti at supsi.ch Fri Apr 24 09:09:20 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Fri, 24 Apr 2015 11:09:20 +0200 Subject: Building Graal on Windows In-Reply-To: <545D0DF8.2010608@supsi.ch> References: <545D0DF8.2010608@supsi.ch> Message-ID: <553A0840.8010100@supsi.ch> Hi, the instructions for building Graal on Windows (https://wiki.openjdk.java.net/display/Graal/Windows) still mention a dependency on "DirectX SDK (Summer 2004)" in step 2. Since that specific SDK is missing from the Microsoft archives and since the build completes even without it, step 2 should be removed from the instructions. Alternatively, the instructions shall provide a trusted, stable and legally compliant feed for the SDK. Anybody entitled to modify the instruction page should please do so for the sake of clarity and useless chasing for the SDK. 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 gilwooden at gmail.com Fri Apr 24 10:00:21 2015 From: gilwooden at gmail.com (Gilles Duboscq) Date: Fri, 24 Apr 2015 10:00:21 +0000 Subject: Java 8 compatibility In-Reply-To: <2F63D1A3-A499-4184-894C-4A045F9AE7B5@stefan-marr.de> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> <2F63D1A3-A499-4184-894C-4A045F9AE7B5@stefan-marr.de> Message-ID: Hello Stefan, I am working on a change where i took a different approach: i added a --relax-compliance flag (the reverse of your --release flag) as well as a RELAX_COMPLIANCE environment variable (to be able to keep it on). It does not change the compliance of the projects (so eclipse and javac still know which version of the language you want to use) but it just allows you to build against a newer JDK (i.e. it will not check that you're not using newer APIs). If we really think this should be the default behaviour I can swap it around and make it a --strict-compliance flag. I don't think this is really about releases, as soon as you're developing you want the checks to be there because they don't cost you anything and it makes developing easier: usages of wrong API will be detected immediately. Also, if you're developing Graal or Truffle you certainly have a JDK 7 just because you get the same benefits in your IDE: you will not get auto-completion for APIs you can't use. ? Gilles On Fri, Apr 24, 2015 at 11:10 AM Stefan Marr wrote: > Hi Thomas: > > > On 04 Apr 2015, at 23:59, Thomas Wuerthinger < > thomas.wuerthinger at oracle.com> wrote: > > > > We would be interested in a patch like you specify below. The only hard > requirement we have is that our gate checks (?mx gate?) need to continue to > make sure that projects related to the Truffle API can be built with Java 7. > > I would propose something like the patch below. > The idea is to have an additional flag, perhaps `--release`, which is used > to enforce the Java compliance levels strictly. > I guess, it would also be necessary for the gate command to set the > do_release flag to true implicitly. > > So, the main result of this change is that a casual user can build Graal > and Truffle easily with only a single JDK available. > I tested it with JDK8u45, and Graal, Truffle, as well as IGV work nicely. > > Would that be something that could make it into Graal? > > > Best regards > Stefan > > > diff --git a/mx/mx_graal.py b/mx/mx_graal.py > index 8b33dcf..8ca4636 100644 > --- a/mx/mx_graal.py > +++ b/mx/mx_graal.py > @@ -2570,6 +2570,7 @@ def mx_init(suite): > mx.add_argument('--vmprefix', action='store', dest='vm_prefix', > help='prefix for running the VM (e.g. "/usr/bin/gdb --args")', > metavar='') > mx.add_argument('--gdb', action='store_const', > const='/usr/bin/gdb --args', dest='vm_prefix', help='alias for --vmprefix > "/usr/bin/gdb --args"') > mx.add_argument('--lldb', action='store_const', const='lldb --', > dest='vm_prefix', help='alias for --vmprefix "lldb --"') > + mx.add_argument('--release', action='store_true', > dest='do_release', help='Enforce Java version compliance for release build') > > commands.update({ > 'export': [export, '[-options] [zipfile]'], > diff --git a/mxtool/mx.py b/mxtool/mx.py > index 0a12e8a..38fe930 100755 > --- a/mxtool/mx.py > +++ b/mxtool/mx.py > @@ -209,7 +209,7 @@ class Distribution: > elif dep.isProject(): > p = dep > > - if self.javaCompliance: > + if self.javaCompliance and _opts.do_release: > if p.javaCompliance > self.javaCompliance: > abort("Compliance level doesn't match: > Distribution {0} requires {1}, but {2} is {3}.".format(self.name, > self.javaCompliance, p.name, p.javaCompliance)) > > @@ -310,9 +310,11 @@ class Project(Dependency): > # Verify that a JDK exists for this project if its compliance > level is > # less than the compliance level of the default JDK > jdk = java(self.javaCompliance) > - if jdk is None and self.javaCompliance < java().javaCompliance: > + if jdk is None and self.javaCompliance < java().javaCompliance > and _opts.do_release: > abort('Cannot find ' + str(self.javaCompliance) + ' JDK > required by ' + name + '. ' + > 'Specify it with --extra-java-homes option or > EXTRA_JAVA_HOMES environment variable.') > + elif not _opts.do_release: > + self.javaCompliance = java().javaCompliance > > # Create directories for projects that don't yet exist > if not exists(d): > > > > > > -- > Stefan Marr > INRIA Lille - Nord Europe > http://stefan-marr.de/research/ > > > > From java at stefan-marr.de Fri Apr 24 11:49:17 2015 From: java at stefan-marr.de (Stefan Marr) Date: Fri, 24 Apr 2015 13:49:17 +0200 Subject: Java 8 compatibility In-Reply-To: References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> <2F63D1A3-A499-4184-894C-4A045F9AE7B5@stefan-marr.de> Message-ID: <76AA40A2-1638-48E9-813F-2AFC36720847@stefan-marr.de> Hi Gilles: > On 24 Apr 2015, at 12:00, Gilles Duboscq wrote: > > If we really think this should be the default behaviour I can swap it around and make it a ?strict-compliance flag. Personally, I would argue that the feature is supposed to improve the initial experience of new users. So, I would make it the standard out-of-the-box behavior. > I don?t think this is really about releases, Yes, I agree, it is only about the compliance at the moment. Well, it was just a first idea in order to get the issue eventually resolved. But your approach sounds good as well. Except, that as I said, I would go for the inverse default behavior and make strict checking an opt-in. Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/ From vitalyd at gmail.com Fri Apr 24 13:55:47 2015 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Fri, 24 Apr 2015 09:55:47 -0400 Subject: Graal final field treatment with respect to optimizations Message-ID: Hi guys, I recently had a thread on hotspot-compiler-dev where John Rose shed some light on what the TrustNonStaticFinalFields experimental flag implies in the C2 compiler: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html Based on that exchange, I see that there are some scenarios where some optimization opportunities are missed, specifically due to missing field profiling. That got me thinking -- how does Graal handle this, and does it do something better here? Clearly Graal has to also be mindful of final fields being changed via reflection, but are there any speculative optimizations around trusting that final fields are mostly unchanged (or plans to do that)? Thanks From renzetorensma at gmail.com Fri Apr 24 17:28:08 2015 From: renzetorensma at gmail.com (Renze Torensma) Date: Fri, 24 Apr 2015 19:28:08 +0200 Subject: Compile error with Xcode 6.3.1 Message-ID: I tried compiling Graal today with the jdk1.8.0_45 on OSX 10.10.3 with Xcode 6.3.1 installed, and got some compiler errors: */filebuff.cpp:109:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] if( !this ) return NULL; // The empty buffer region ~^~~~ */filebuff.cpp:122:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] if( !this ) return br; // Merging into nothing ~^~~~ */filebuff.cpp:244:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] if( !this ) return; // Nothing to print ~^~~~ 3 errors generated. */formssel.cpp:3393:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] if( !this ) return; ~^~~~ 1 error generated. It seems like this error is introduced by clang 6.1 which is bundled with Xcode 6.3: https://bugs.openjdk.java.net/browse/JDK-8077364?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab From christian.thalinger at oracle.com Fri Apr 24 18:30:58 2015 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Fri, 24 Apr 2015 11:30:58 -0700 Subject: Compile error with Xcode 6.3.1 In-Reply-To: References: Message-ID: This is a known issue and was fixed in 9: https://bugs.openjdk.java.net/browse/JDK-8077364 Graal people use the COMPILER_WARNINGS_FATAL variable to ignore these. > On Apr 24, 2015, at 10:28 AM, Renze Torensma wrote: > > I tried compiling Graal today with the jdk1.8.0_45 on OSX 10.10.3 with Xcode 6.3.1 installed, and got some compiler errors: > > */filebuff.cpp:109:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] > > if( !this ) return NULL; // The empty buffer region > > ~^~~~ > > */filebuff.cpp:122:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] > > if( !this ) return br; // Merging into nothing > > ~^~~~ > > */filebuff.cpp:244:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] > > if( !this ) return; // Nothing to print > > ~^~~~ > > 3 errors generated. > > */formssel.cpp:3393:8: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion] > > if( !this ) return; > > ~^~~~ > > 1 error generated. > > It seems like this error is introduced by clang 6.1 which is bundled with Xcode 6.3: https://bugs.openjdk.java.net/browse/JDK-8077364?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab From doug.simon at oracle.com Sat Apr 25 01:00:24 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Sat, 25 Apr 2015 01:00:24 +0000 Subject: hg: graal/graal: 31 new changesets Message-ID: <201504250100.t3P10PvF008487@aojmv0008> Changeset: 0a3bc68fc3a7 Author: Thomas Wuerthinger Date: 2015-04-22 15:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0a3bc68fc3a7 Fix a bug in the schedule phase connected with data dependencies on a block end node that is not a control split node. ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Changeset: 056f90577ed1 Author: Thomas Wuerthinger Date: 2015-04-22 15:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/056f90577ed1 Merge. - graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassQueryNode.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CachingPEGraphDecoder.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java Changeset: 355ebfa2ba95 Author: Thomas Wuerthinger Date: 2015-04-22 15:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/355ebfa2ba95 Merge. Changeset: bb63a1b5487c Author: Thomas Wuerthinger Date: 2015-04-22 16:22 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/bb63a1b5487c Merge. Changeset: c5365790bf49 Author: Thomas Wuerthinger Date: 2015-04-22 19:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c5365790bf49 Adjust scheduling test. ! graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/SchedulingTest2.java Changeset: de2fb3e4df49 Author: Thomas Wuerthinger Date: 2015-04-22 19:50 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/de2fb3e4df49 Merge. Changeset: 87aac173f09d Author: Thomas Wuerthinger Date: 2015-04-22 21:58 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/87aac173f09d Merge. Changeset: a11325faa4d9 Author: Thomas Wuerthinger Date: 2015-04-23 13:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a11325faa4d9 Distinguish ends in the scheduling phase that always have to be the last node from other ends. ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Changeset: 56668f0816f7 Author: Thomas Wuerthinger Date: 2015-04-23 13:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/56668f0816f7 Merge. Changeset: 9212e6b75c07 Author: Gilles Duboscq Date: 2015-04-22 16:45 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9212e6b75c07 Small clean-up in LoopEx ! graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java Changeset: 71e05c3a1e12 Author: Gilles Duboscq Date: 2015-04-21 17:32 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/71e05c3a1e12 Move OptionProcessor to its own project + graal/com.oracle.graal.options.processor/src/META-INF/services/javax.annotation.processing.Processor + graal/com.oracle.graal.options.processor/src/com/oracle/graal/options/processor/OptionProcessor.java - graal/com.oracle.graal.options/src/META-INF/services/javax.annotation.processing.Processor ! graal/com.oracle.graal.options/src/com/oracle/graal/options/Option.java - graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java ! mx/suite.py Changeset: 391f94d4d23f Author: Gilles Duboscq Date: 2015-04-23 14:48 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/391f94d4d23f Move MatchProcessor and HotSpotVMConfigPorcessor to their own projects + graal/com.oracle.graal.compiler.match.processor/src/META-INF/services/javax.annotation.processing.Processor + graal/com.oracle.graal.compiler.match.processor/src/com/oracle/graal/compiler/match/processor/MatchProcessor.java - graal/com.oracle.graal.compiler/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchProcessor.java + graal/com.oracle.graal.hotspotvmconfig.processor/src/META-INF/services/javax.annotation.processing.Processor + graal/com.oracle.graal.hotspotvmconfig.processor/src/com/oracle/graal/hotspotvmconfig/processor/HotSpotVMConfigProcessor.java - graal/com.oracle.graal.hotspotvmconfig/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.hotspotvmconfig/src/com/oracle/graal/hotspotvmconfig/HotSpotVMConfigProcessor.java ! mx/suite.py Changeset: 5d09e1eda922 Author: Gilles Duboscq Date: 2015-04-23 13:31 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5d09e1eda922 Only extract service files for Graal services ! mx/mx_graal.py Changeset: 3f51d02e536f Author: Gilles Duboscq Date: 2015-04-23 14:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3f51d02e536f Make should export graal service files ! make/Makefile ! make/defs.make ! mx/mx_graal.py Changeset: 8cc759c89af7 Author: Roland Schatz Date: 2015-04-23 18:14 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8cc759c89af7 Use @Inherited on @MarkerType annotation. ! graal/com.oracle.graal.nodeinfo/src/com/oracle/graal/nodeinfo/StructuralInput.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultGenericInvocationPlugin.java Changeset: 4dfcb45e7239 Author: Roland Schatz Date: 2015-04-23 18:20 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4dfcb45e7239 Relax assertion in createWriteHub. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Changeset: 4d25c6f34a7d Author: Gilles Duboscq Date: 2015-04-23 20:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/4d25c6f34a7d Use getPlaceholderBciName in HSDebugInfoBuilder assert ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java Changeset: ece51b327e71 Author: Gilles Duboscq Date: 2015-04-23 20:31 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ece51b327e71 All MemoryNode can be used as lastAccessLocation not only MemoryCheckpoints + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/optimize/SchedulingBug_01.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Changeset: 9690597d7a29 Author: Gilles Duboscq Date: 2015-04-23 21:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/9690597d7a29 Group javap queries to discover Graal services ! mx/mx_graal.py Changeset: db2de6c2bf95 Author: Gilles Duboscq Date: 2015-04-23 21:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/db2de6c2bf95 mx create each service file atomically ! mx/mx_graal.py Changeset: ec894427332d Author: Tom Rodriguez Date: 2015-04-23 12:55 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/ec894427332d Don't insert serial barriers for null stores ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierVerificationPhase.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Changeset: fe0531d98fbe Author: Christian Wimmer Date: 2015-04-23 16:50 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fe0531d98fbe GraphDecoder must exactly reproduce the encoded graph, only SimplifyingGraphDecoder can remove unnecessary nodes ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphEncoder.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimplifyingGraphDecoder.java Changeset: 5d7a2915c96c Author: Tom Rodriguez Date: 2015-04-23 17:17 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/5d7a2915c96c Check for placeholder bci even when asserts are disabled ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java Changeset: 05e3ec9d5aa2 Author: Tom Rodriguez Date: 2015-04-23 17:18 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/05e3ec9d5aa2 Make sure an after state is available when lowering checkcast arraycopy ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ArrayCopyIntrinsificationTest.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySnippets.java + graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyStateNode.java Changeset: 905d93bb3d31 Author: Tom Rodriguez Date: 2015-04-23 17:25 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/905d93bb3d31 Merge Changeset: 91d70d102132 Author: roland Date: 2015-03-12 14:15 +0100 URL: http://hg.openjdk.java.net/graal/graal/rev/91d70d102132 8069263: assert(fm == NULL || fm->method_holder() == _participants[n]) failed: sanity Summary: default methods added to classes confuse dependency processing Reviewed-by: kvn ! src/share/vm/code/dependencies.cpp + test/compiler/inlining/DefaultMethodsDependencies.java Changeset: f01ebceea995 Author: Tom Rodriguez Date: 2015-04-22 16:34 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f01ebceea995 Graal should use same soft reference policy as C2 ! src/share/vm/memory/referenceProcessor.cpp Changeset: 0cf5897db25a Author: Tom Rodriguez Date: 2015-04-22 16:42 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0cf5897db25a Better assertion message for NULL deference in graalJavaAccess ! src/share/vm/graal/graalJavaAccess.hpp Changeset: 2daf39328194 Author: Tom Rodriguez Date: 2015-04-23 21:18 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2daf39328194 Better error reporting for missing card marks ! src/share/vm/memory/cardTableRS.cpp Changeset: db96f9915540 Author: Tom Rodriguez Date: 2015-04-23 22:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/db96f9915540 Merge - graal/com.oracle.graal.compiler/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchProcessor.java - graal/com.oracle.graal.hotspotvmconfig/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.hotspotvmconfig/src/com/oracle/graal/hotspotvmconfig/HotSpotVMConfigProcessor.java - graal/com.oracle.graal.options/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java Changeset: bf8cbbfabdcf Author: Tom Rodriguez Date: 2015-04-24 12:05 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/bf8cbbfabdcf Use snippets for incrementing snippet counters ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetCounter.java + graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetCounterNode.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java From raffaello.giulietti at supsi.ch Sun Apr 26 15:51:16 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Sun, 26 Apr 2015 17:51:16 +0200 Subject: overflows in SLDivNode Message-ID: <553D0974.3040406@supsi.ch> Hi, I'm just studying the SL implementation in the last Graal/Truffle update. The long specialization of the division wrongly assumes that /* No overflow is possible on a division. */ When left is Long.MIN_VALUE and right is -1 the division overflows. OK, OK, OK, this is the only case and has a ridiculous (cryptography-like) probability of 2^-128 to happen randomly. And, no, neither java.lang.Math nor ExactMath cover this rare case of overflow. Greetings Raffaello From doug.simon at oracle.com Mon Apr 27 01:00:06 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Mon, 27 Apr 2015 01:00:06 +0000 Subject: hg: graal/graal: Truffle/Instrumentation: Javadoc corrections on Node.{getSourceSection, getEncapsulatingSourceSection} Message-ID: <201504270100.t3R107UX023933@aojmv0008> Changeset: f6f3f44a1830 Author: Michael Van De Vanter Date: 2015-04-25 19:47 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/f6f3f44a1830 Truffle/Instrumentation: Javadoc corrections on Node.{getSourceSection,getEncapsulatingSourceSection} ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/Node.java From doug.simon at oracle.com Mon Apr 27 11:30:02 2015 From: doug.simon at oracle.com (Doug Simon) Date: Mon, 27 Apr 2015 13:30:02 +0200 Subject: Building Graal on Windows In-Reply-To: <553A0840.8010100@supsi.ch> References: <545D0DF8.2010608@supsi.ch> <553A0840.8010100@supsi.ch> Message-ID: <0122983D-8B57-4944-B2B7-15BA44991C6D@oracle.com> Looks like Gilles made the requested change. > On Apr 24, 2015, at 11:09 AM, Raffaello Giulietti wrote: > > Hi, > > the instructions for building Graal on Windows (https://wiki.openjdk.java.net/display/Graal/Windows) still mention a dependency on "DirectX SDK (Summer 2004)" in step 2. > > Since that specific SDK is missing from the Microsoft archives and since the build completes even without it, step 2 should be removed from the instructions. > > Alternatively, the instructions shall provide a trusted, stable and legally compliant feed for the SDK. > > Anybody entitled to modify the instruction page should please do so for the sake of clarity and useless chasing for the SDK. > > 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 raffaello.giulietti at supsi.ch Mon Apr 27 11:31:55 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Mon, 27 Apr 2015 13:31:55 +0200 Subject: Building Graal on Windows In-Reply-To: <0122983D-8B57-4944-B2B7-15BA44991C6D@oracle.com> References: <545D0DF8.2010608@supsi.ch> <553A0840.8010100@supsi.ch> <0122983D-8B57-4944-B2B7-15BA44991C6D@oracle.com> Message-ID: <553E1E2B.8080804@supsi.ch> Yes, I noticed :-) Thanks to Gilles On 2015-04-27 13:30, Doug Simon wrote: > Looks like Gilles made the requested change. > >> On Apr 24, 2015, at 11:09 AM, Raffaello Giulietti wrote: >> >> Hi, >> >> the instructions for building Graal on Windows (https://wiki.openjdk.java.net/display/Graal/Windows) still mention a dependency on "DirectX SDK (Summer 2004)" in step 2. >> >> Since that specific SDK is missing from the Microsoft archives and since the build completes even without it, step 2 should be removed from the instructions. >> >> Alternatively, the instructions shall provide a trusted, stable and legally compliant feed for the SDK. >> >> Anybody entitled to modify the instruction page should please do so for the sake of clarity and useless chasing for the SDK. >> >> 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 raffaello.giulietti at supsi.ch Mon Apr 27 12:17:53 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Mon, 27 Apr 2015 14:17:53 +0200 Subject: overflows in SLDivNode In-Reply-To: <553D0974.3040406@supsi.ch> References: <553D0974.3040406@supsi.ch> Message-ID: <553E28F1.6010104@supsi.ch> The following method (and the equivalent for int) might be added to ExactMath to help implementing the division correctly. public static long divExact(long x, long y) { long r = x / y; if ((x & y & r) < 0) { throw new ArithmeticException("long overflow"); } return r; } Since SL is meant to be an exemplary Truffle language, I feel it will be surely imitated, so it is important to keep it as correct as possible. Greetings Raffaello On 2015-04-26 17:51, Raffaello Giulietti wrote: > Hi, > > I'm just studying the SL implementation in the last Graal/Truffle update. > > The long specialization of the division wrongly assumes that > /* No overflow is possible on a division. */ > > When left is Long.MIN_VALUE and right is -1 the division overflows. > > OK, OK, OK, this is the only case and has a ridiculous > (cryptography-like) probability of 2^-128 to happen randomly. And, no, > neither java.lang.Math nor ExactMath cover this rare case of overflow. > > Greetings > Raffaello From christian.humer at gmail.com Mon Apr 27 13:26:53 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Mon, 27 Apr 2015 13:26:53 +0000 Subject: overflows in SLDivNode In-Reply-To: <553E28F1.6010104@supsi.ch> Message-ID: Hi Raffaello, Thanks for pointing this out. I am a little unsure how to name the divExact method in ExactMath. The term "exact" might be misleading here as it actually rounds towards 0 without throwing the exception. What if we want to add a divExact that throws if the result looses information? I am open to suggestions. Will push a fix just for SL in the meantime. - Christian Humer ------ Original Message ------ From: "Raffaello Giulietti" To: graal-dev at openjdk.java.net Sent: 27.04.2015 14:17:53 Subject: Re: overflows in SLDivNode >The following method (and the equivalent for int) might be added to >ExactMath to help implementing the division correctly. > > > public static long divExact(long x, long y) { > long r = x / y; > if ((x & y & r) < 0) { > throw new ArithmeticException("long overflow"); > } > return r; > } > > >Since SL is meant to be an exemplary Truffle language, I feel it will >be surely imitated, so it is important to keep it as correct as >possible. > > >Greetings >Raffaello > > > > >On 2015-04-26 17:51, Raffaello Giulietti wrote: >>Hi, >> >>I'm just studying the SL implementation in the last Graal/Truffle >>update. >> >>The long specialization of the division wrongly assumes that >>/* No overflow is possible on a division. */ >> >>When left is Long.MIN_VALUE and right is -1 the division overflows. >> >>OK, OK, OK, this is the only case and has a ridiculous >>(cryptography-like) probability of 2^-128 to happen randomly. And, no, >>neither java.lang.Math nor ExactMath cover this rare case of overflow. >> >>Greetings >>Raffaello > From raffaello.giulietti at supsi.ch Mon Apr 27 14:09:13 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Mon, 27 Apr 2015 16:09:13 +0200 Subject: overflows in SLDivNode In-Reply-To: References: Message-ID: <553E4309.1050609@supsi.ch> Hi Christian, I agree that the name is not the most favorable: it's more a mechanical result of "copy'n'paste" from the other names in ExactMath than a conscious choice. In the meantime I took a look at the x86_64 instruction set. In case of an overflow, the idiv instruction raises an exception rather than setting a flag, so I'm not sure how an optimized compiler intrinsic could look. It would probably look differently than the addExact() case. Thanks for the fix. Raffaello On 2015-04-27 15:26, christian.humer at gmail.com wrote: > Hi Raffaello, > > Thanks for pointing this out. > > I am a little unsure how to name the divExact method in ExactMath. The > term "exact" might be misleading here as it actually rounds towards 0 > without throwing the exception. What if we want to add a divExact that > throws if the result looses information? I am open to suggestions. Will > push a fix just for SL in the meantime. > > - Christian Humer > > > > > ------ Original Message ------ > From: "Raffaello Giulietti" > To: graal-dev at openjdk.java.net > Sent: 27.04.2015 14:17:53 > Subject: Re: overflows in SLDivNode > >> The following method (and the equivalent for int) might be added to >> ExactMath to help implementing the division correctly. >> >> >> public static long divExact(long x, long y) { >> long r = x / y; >> if ((x & y & r) < 0) { >> throw new ArithmeticException("long overflow"); >> } >> return r; >> } >> >> >> Since SL is meant to be an exemplary Truffle language, I feel it will >> be surely imitated, so it is important to keep it as correct as possible. >> >> >> Greetings >> Raffaello >> >> >> >> >> On 2015-04-26 17:51, Raffaello Giulietti wrote: >>> Hi, >>> >>> I'm just studying the SL implementation in the last Graal/Truffle >>> update. >>> >>> The long specialization of the division wrongly assumes that >>> /* No overflow is possible on a division. */ >>> >>> When left is Long.MIN_VALUE and right is -1 the division overflows. >>> >>> OK, OK, OK, this is the only case and has a ridiculous >>> (cryptography-like) probability of 2^-128 to happen randomly. And, no, >>> neither java.lang.Math nor ExactMath cover this rare case of overflow. >>> >>> Greetings >>> Raffaello >> > From andreas.woess at oracle.com Mon Apr 27 14:17:43 2015 From: andreas.woess at oracle.com (Andreas Woess) Date: Mon, 27 Apr 2015 16:17:43 +0200 Subject: overflows in SLDivNode In-Reply-To: References: Message-ID: <553E4507.5050402@oracle.com> Thanks for pointing out the bug, Raffaello. We'll fix SL. However, I don't think we should add a divExact method. We cannot intrinsify it (the idiv instruction does not set the overflow flag); for the same reason Java 8 does not have a divideExact. Also, the utility method cannot specialize (whereas the SLDivNode can), so having it does not buy us anything. - andreas On 27/04/15 15:26, christian.humer at gmail.com wrote: > Hi Raffaello, > > Thanks for pointing this out. > > I am a little unsure how to name the divExact method in ExactMath. The > term "exact" might be misleading here as it actually rounds towards 0 > without throwing the exception. What if we want to add a divExact that > throws if the result looses information? I am open to suggestions. > Will push a fix just for SL in the meantime. > > - Christian Humer > > > > > ------ Original Message ------ > From: "Raffaello Giulietti" > To: graal-dev at openjdk.java.net > Sent: 27.04.2015 14:17:53 > Subject: Re: overflows in SLDivNode > >> The following method (and the equivalent for int) might be added to >> ExactMath to help implementing the division correctly. >> >> >> public static long divExact(long x, long y) { >> long r = x / y; >> if ((x & y & r) < 0) { >> throw new ArithmeticException("long overflow"); >> } >> return r; >> } >> >> >> Since SL is meant to be an exemplary Truffle language, I feel it will >> be surely imitated, so it is important to keep it as correct as >> possible. >> >> >> Greetings >> Raffaello >> >> >> >> >> On 2015-04-26 17:51, Raffaello Giulietti wrote: >>> Hi, >>> >>> I'm just studying the SL implementation in the last Graal/Truffle >>> update. >>> >>> The long specialization of the division wrongly assumes that >>> /* No overflow is possible on a division. */ >>> >>> When left is Long.MIN_VALUE and right is -1 the division overflows. >>> >>> OK, OK, OK, this is the only case and has a ridiculous >>> (cryptography-like) probability of 2^-128 to happen randomly. And, no, >>> neither java.lang.Math nor ExactMath cover this rare case of overflow. >>> >>> Greetings >>> Raffaello >> > From raffaello.giulietti at supsi.ch Mon Apr 27 14:23:40 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Mon, 27 Apr 2015 16:23:40 +0200 Subject: overflows in SLDivNode In-Reply-To: <553E4507.5050402@oracle.com> References: <553E4507.5050402@oracle.com> Message-ID: <553E466C.6070802@supsi.ch> Hi Andreas, yes, I just posted a comment on the idiv instruction a couple of minutes ago ;-) OK, the important point is that SL behaves correctly, since its structure will be surely copied by other Truffle language implementations, including the division AST node. On 2015-04-27 16:17, Andreas Woess wrote: > Thanks for pointing out the bug, Raffaello. We'll fix SL. > However, I don't think we should add a divExact method. We cannot > intrinsify it (the idiv instruction does not set the overflow flag); for > the same reason Java 8 does not have a divideExact. Also, the utility > method cannot specialize (whereas the SLDivNode can), so having it does > not buy us anything. > > - andreas > > On 27/04/15 15:26, christian.humer at gmail.com wrote: >> Hi Raffaello, >> >> Thanks for pointing this out. >> >> I am a little unsure how to name the divExact method in ExactMath. The >> term "exact" might be misleading here as it actually rounds towards 0 >> without throwing the exception. What if we want to add a divExact that >> throws if the result looses information? I am open to suggestions. >> Will push a fix just for SL in the meantime. >> >> - Christian Humer >> >> >> >> >> ------ Original Message ------ >> From: "Raffaello Giulietti" >> To: graal-dev at openjdk.java.net >> Sent: 27.04.2015 14:17:53 >> Subject: Re: overflows in SLDivNode >> >>> The following method (and the equivalent for int) might be added to >>> ExactMath to help implementing the division correctly. >>> >>> >>> public static long divExact(long x, long y) { >>> long r = x / y; >>> if ((x & y & r) < 0) { >>> throw new ArithmeticException("long overflow"); >>> } >>> return r; >>> } >>> >>> >>> Since SL is meant to be an exemplary Truffle language, I feel it will >>> be surely imitated, so it is important to keep it as correct as >>> possible. >>> >>> >>> Greetings >>> Raffaello >>> >>> >>> >>> >>> On 2015-04-26 17:51, Raffaello Giulietti wrote: >>>> Hi, >>>> >>>> I'm just studying the SL implementation in the last Graal/Truffle >>>> update. >>>> >>>> The long specialization of the division wrongly assumes that >>>> /* No overflow is possible on a division. */ >>>> >>>> When left is Long.MIN_VALUE and right is -1 the division overflows. >>>> >>>> OK, OK, OK, this is the only case and has a ridiculous >>>> (cryptography-like) probability of 2^-128 to happen randomly. And, no, >>>> neither java.lang.Math nor ExactMath cover this rare case of overflow. >>>> >>>> Greetings >>>> Raffaello >>> >> > From tom.rodriguez at oracle.com Mon Apr 27 17:07:44 2015 From: tom.rodriguez at oracle.com (Tom Rodriguez) Date: Mon, 27 Apr 2015 10:07:44 -0700 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: Message-ID: > On Apr 24, 2015, at 6:55 AM, Vitaly Davidovich wrote: > > Hi guys, > > I recently had a thread on hotspot-compiler-dev where John Rose shed some > light on what the TrustNonStaticFinalFields experimental flag implies in > the C2 compiler: > http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html > > Based on that exchange, I see that there are some scenarios where some > optimization opportunities are missed, specifically due to missing field > profiling. That got me thinking -- how does Graal handle this, and does it > do something better here? Clearly Graal has to also be mindful of final > fields being changed via reflection, but are there any speculative > optimizations around trusting that final fields are mostly unchanged (or > plans to do that)? We have a similar flag TrustFinalDefaultFields which defaults to true. I think anyone modifying final fields of published objects through reflection should just be laughed at and told to go away. The hole that allows modification of final fields through reflection was introduced to support deserialization. Any other use should just be considered undefined behaviour. tom From chris.seaton at oracle.com Mon Apr 27 17:34:47 2015 From: chris.seaton at oracle.com (Chris Seaton) Date: Mon, 27 Apr 2015 18:34:47 +0100 Subject: overflows in SLDivNode In-Reply-To: <553E4507.5050402@oracle.com> References: <553E4507.5050402@oracle.com> Message-ID: Someone writing a Truffle language may look at the ExactMath class, see no exactDivide, and conclude that integer division cannot overflow. Even if our implementation does not give performance gains, it might be good to have it there so that they don?t assume this. Chris > On 27 Apr 2015, at 15:17, Andreas Woess wrote: > > However, I don't think we should add a divExact method. We cannot intrinsify it (the idiv instruction does not set the overflow flag); for the same reason Java 8 does not have a divideExact. Also, the utility method cannot specialize (whereas the SLDivNode can), so having it does not buy us anything. From vitalyd at gmail.com Mon Apr 27 17:39:43 2015 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Mon, 27 Apr 2015 13:39:43 -0400 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: Message-ID: Hi Tom, I'm with you in terms of how this should be treated. However, Cliff Click wrote a couple of blog posts a few years back on this topic: http://www.azulsystems.com/blog/cliff/2011-10-17-writing-to-final-fields-via-reflection http://www.azulsystems.com/blog/cliff/2011-10-27-final-fields-part-2 In short, some popular frameworks make use of this "feature". I suspect the middle ground here would (or should) be to allow for that scenario, but have user specify which class/package/ should be excluded from JIT optimizations. Alternatively, have the compiler track writes to final fields and then deopt without final field optimizations; I think that's what the C2 guys are contemplating, if I understand correctly. However, the thing I'm particularly curious about is what types of additional optimizations, if any, Graal performs when it trusts final fields. In C2, this doesn't appear to do much. In particular, final fields are treated as constants only if enclosing instance is also constant; the only practical difference that I found (in quick playing around with this flag) this makes is that Enum.ordinal() is treated as a constant in compiled code. There were certain "obvious" cases that weren't optimized though, e.g.: 1) final array fields (even ones that were allocated inside the class ctor) didn't have their length propagated as a constant to uses. In addition, range checks were performed on accesses that should be "known" to be legit. Basically, they didn't get the same codegen treatment as static final arrays. 2) There didn't seem to be any "constraint" propagation of final fields. For example, if the constructor throws a NPE if the field is null, the field is still checked for null in uses. Likewise, say if an int field was checked to be > 0, that info does not seem to make its way to uses. John Rose indicated that these types of optimizations aren't done because C2 doesn't do field profiling. I'm not sure #1 counts as profiling as it seems like this type of thing could be detected at parse time. #2 also isn't so much about profiling as about piggybacking on user checks that are then predicated on final fields being unchanged thereafter. Does Graal propagate this type of information to uses? Or more generally, does it perform some set of additional optimizations (even if they're peephole in nature) for final field uses? Thanks On Mon, Apr 27, 2015 at 1:07 PM, Tom Rodriguez wrote: > > > On Apr 24, 2015, at 6:55 AM, Vitaly Davidovich > wrote: > > > > Hi guys, > > > > I recently had a thread on hotspot-compiler-dev where John Rose shed some > > light on what the TrustNonStaticFinalFields experimental flag implies in > > the C2 compiler: > > > http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html > > > > Based on that exchange, I see that there are some scenarios where some > > optimization opportunities are missed, specifically due to missing field > > profiling. That got me thinking -- how does Graal handle this, and does > it > > do something better here? Clearly Graal has to also be mindful of final > > fields being changed via reflection, but are there any speculative > > optimizations around trusting that final fields are mostly unchanged (or > > plans to do that)? > > We have a similar flag TrustFinalDefaultFields which defaults to true. I > think anyone modifying final fields of published objects through reflection > should just be laughed at and told to go away. The hole that allows > modification of final fields through reflection was introduced to support > deserialization. Any other use should just be considered undefined > behaviour. > > tom From gilwooden at gmail.com Mon Apr 27 17:45:27 2015 From: gilwooden at gmail.com (Gilles Duboscq) Date: Mon, 27 Apr 2015 17:45:27 +0000 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: Message-ID: Hi Vitaly, We currently do not respect the TrustNonStaticFinalFields field. We have a "@Stable-like" behaviour for non-static final fields: * static final: We always constant fold * final We constant fold if the receiver is constant and if the value is not default (null, 0, 0.0, false...). This is not what HotSpot normally does and we just enabled this to see what would happen. At some point we'll probably change to only do that if TrustNonStaticFinalFields is true just to respect HotSpot's wish though. * @Stable final array[] We constant fold if the receiver is constant and if the value is not default (null, 0, 0.0, false...) and we apply the @Stable final property for the elements of the array (up to the declared field's dimension). i.e. an access like array[0] would also be constant folded (this would not be done for final: we would access a constant array object the the load from this array would stay). * Some fields are automatically promoted to @Stable The String.value field and synthetic $VALUES, ENUM$VALUES, $SwitchMap$ and $SWITCH_TABLE$ fields (from enums) are automatically promoted to @Stable. We do not do any additional profiling of fields in the runtime. On Fri, Apr 24, 2015 at 3:57 PM Vitaly Davidovich wrote: > Hi guys, > > I recently had a thread on hotspot-compiler-dev where John Rose shed some > light on what the TrustNonStaticFinalFields experimental flag implies in > the C2 compiler: > > http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html > > Based on that exchange, I see that there are some scenarios where some > optimization opportunities are missed, specifically due to missing field > profiling. That got me thinking -- how does Graal handle this, and does it > do something better here? Clearly Graal has to also be mindful of final > fields being changed via reflection, but are there any speculative > optimizations around trusting that final fields are mostly unchanged (or > plans to do that)? > > Thanks > From vitalyd at gmail.com Mon Apr 27 18:02:11 2015 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Mon, 27 Apr 2015 14:02:11 -0400 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: Message-ID: Thanks Gilles. Why is there a restriction that receiver has to be constant as well? In addition, why does the value have to be *not* default? Specifically, an example I mentioned to John was akin to this: final class Foo { private final Object[] _arr = new Object[10]; int capacity() { return _arr.length; } Object getFirst() { return _arr[0]; } } What's the reason capacity() cannot be constant folded to 10 if the receiver is non-constant? Likewise with getFirst(). Is this again because there's no field profiling? I suspect so, but just want to double check. Has any thought been given to doing some (basic) field profiling? Actually, I'm reluctant to call the above profiling since it seems like it could be done at parse/compile time? To me profiling sounds more like "there's a final field of interface type Foo, and we profile to see that at runtime we only have 1 real type stored there, FooImpl", or something like that. Thanks On Mon, Apr 27, 2015 at 1:45 PM, Gilles Duboscq wrote: > Hi Vitaly, > > We currently do not respect the TrustNonStaticFinalFields field. > We have a "@Stable-like" behaviour for non-static final fields: > > * static final: > We always constant fold > > * final > We constant fold if the receiver is constant and if the value is not > default (null, 0, 0.0, false...). This is not what HotSpot normally does > and we just enabled this to see what would happen. At some point we'll > probably change to only do that if TrustNonStaticFinalFields is true just > to respect HotSpot's wish though. > > * @Stable final array[] > We constant fold if the receiver is constant and if the value is not > default (null, 0, 0.0, false...) and we apply the @Stable final property > for the elements of the array (up to the declared field's dimension). i.e. > an access like array[0] would also be constant folded (this would not be > done for final: we would access a constant array object the the load from > this array would stay). > > * Some fields are automatically promoted to @Stable > The String.value field and synthetic $VALUES, ENUM$VALUES, $SwitchMap$ > and $SWITCH_TABLE$ fields (from enums) are automatically promoted to > @Stable. > > We do not do any additional profiling of fields in the runtime. > > > > On Fri, Apr 24, 2015 at 3:57 PM Vitaly Davidovich > wrote: > >> Hi guys, >> >> I recently had a thread on hotspot-compiler-dev where John Rose shed some >> light on what the TrustNonStaticFinalFields experimental flag implies in >> the C2 compiler: >> >> http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html >> >> Based on that exchange, I see that there are some scenarios where some >> optimization opportunities are missed, specifically due to missing field >> profiling. That got me thinking -- how does Graal handle this, and does >> it >> do something better here? Clearly Graal has to also be mindful of final >> fields being changed via reflection, but are there any speculative >> optimizations around trusting that final fields are mostly unchanged (or >> plans to do that)? >> >> Thanks >> > From raffaello.giulietti at supsi.ch Mon Apr 27 18:18:50 2015 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Mon, 27 Apr 2015 20:18:50 +0200 Subject: overflows in SLDivNode In-Reply-To: References: <553E4507.5050402@oracle.com> Message-ID: <553E7D8A.5080803@supsi.ch> I'm not an expert in machine code at all. However, my understanding is that the x86_64 idiv instruction throws the same exception both when a division by 0 occurs and also when the result overflows. Since division by 0 in Java already throws an exception, one could perhaps process an overflow in the same way in a hypothetical intrinsified machine code implementation of divExact(). Or how does the machine code for a division by 0 look? Is the division instruction guarded by a test on the divisor? I'm asking the Graal people here... On 2015-04-27 19:34, Chris Seaton wrote: > Someone writing a Truffle language may look at the ExactMath class, see > no exactDivide, and conclude that integer division cannot overflow. Even > if our implementation does not give performance gains, it might be good > to have it there so that they don?t assume this. > > Chris > >> On 27 Apr 2015, at 15:17, Andreas Woess > > wrote: >> >> However, I don't think we should add a divExact method. We cannot >> intrinsify it (the idiv instruction does not set the overflow flag); >> for the same reason Java 8 does not have a divideExact. Also, the >> utility method cannot specialize (whereas the SLDivNode can), so >> having it does not buy us anything. > From tom.rodriguez at oracle.com Mon Apr 27 18:24:36 2015 From: tom.rodriguez at oracle.com (Tom Rodriguez) Date: Mon, 27 Apr 2015 11:24:36 -0700 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: Message-ID: <59547E3D-B923-4BB9-9900-907E1F37DDE5@oracle.com> > On Apr 27, 2015, at 10:39 AM, Vitaly Davidovich wrote: > > Hi Tom, > > I'm with you in terms of how this should be treated. However, Cliff Click wrote a couple of blog posts a few years back on this topic: > > http://www.azulsystems.com/blog/cliff/2011-10-17-writing-to-final-fields-via-reflection > http://www.azulsystems.com/blog/cliff/2011-10-27-final-fields-part-2 > > In short, some popular frameworks make use of this "feature?. I?m aware of that post. I?m not sure I?d generalize from that too much though. It?s unfortunate the semantics of these kinds of things aren't defined and enforced in a clear fashion. Absent that I still say the right response is to say it's simply a bug. It even likely violates the Java memory model since the proper semantics of final fields for immutable objects may require a barrier for other threads to see the store. > I suspect the middle ground here would (or should) be to allow for that scenario, but have user specify which class/package/ should be excluded from JIT optimizations. Alternatively, have the compiler track writes to final fields and then deopt without final field optimizations; I think that's what the C2 guys are contemplating, if I understand correctly. Yes, we?d discussed that as well. Precise handling of this is a bit uglier because of things like Unsafe since you can?t interpose on those as easily. You?d have to disallow final field optimizations for any field that had it?s offset asked for, so reading the field using Unsafe would also disable the optimization. > > However, the thing I'm particularly curious about is what types of additional optimizations, if any, Graal performs when it trusts final fields. I think you?re reading too much into the name of the flag. Optimization of final fields in general requires a lot more work since it?s poorly specified and unchecked at the VM specification level. The normal Java definite assignment rules are only enforced by javac. So to optimize final in the way a Java user might expect the compiler would have do semantic analysis of the initialization and use of the Java field to determine how it can be treated. > In C2, this doesn't appear to do much. In particular, final fields are treated as constants only if enclosing instance is also constant; the only practical difference that I found (in quick playing around with this flag) this makes is that Enum.ordinal() is treated as a constant in compiled code. There were certain "obvious" cases that weren't optimized though, e.g.: > > 1) final array fields (even ones that were allocated inside the class ctor) didn't have their length propagated as a constant to uses. In addition, range checks were performed on accesses that should be "known" to be legit. Basically, they didn't get the same codegen treatment as static final arrays. > 2) There didn't seem to be any "constraint" propagation of final fields. For example, if the constructor throws a NPE if the field is null, the field is still checked for null in uses. Likewise, say if an int field was checked to be > 0, that info does not seem to make its way to uses. Generally these would fall out of proper CSE of final field accesses across possibly killing calls. It also requires deciding what semantics are actually safe for final fields, which is unspecified at the VM level. My sense is that having the JIT do a perfect job here would likely have little impact on the performance of regular Java code. When enough inlining occurs that all loads and stores are visible then those kinds of optimizations apply all fields. Getting the remaining one is probably of limited value, even though it?s fairly ridiculous that we don?t. tom > > John Rose indicated that these types of optimizations aren't done because C2 doesn't do field profiling. I'm not sure #1 counts as profiling as it seems like this type of thing could be detected at parse time. #2 also isn't so much about profiling as about piggybacking on user checks that are then predicated on final fields being unchanged thereafter. > > Does Graal propagate this type of information to uses? Or more generally, does it perform some set of additional optimizations (even if they're peephole in nature) for final field uses? > > Thanks > > On Mon, Apr 27, 2015 at 1:07 PM, Tom Rodriguez > wrote: > > > On Apr 24, 2015, at 6:55 AM, Vitaly Davidovich > wrote: > > > > Hi guys, > > > > I recently had a thread on hotspot-compiler-dev where John Rose shed some > > light on what the TrustNonStaticFinalFields experimental flag implies in > > the C2 compiler: > > http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html > > > > Based on that exchange, I see that there are some scenarios where some > > optimization opportunities are missed, specifically due to missing field > > profiling. That got me thinking -- how does Graal handle this, and does it > > do something better here? Clearly Graal has to also be mindful of final > > fields being changed via reflection, but are there any speculative > > optimizations around trusting that final fields are mostly unchanged (or > > plans to do that)? > > We have a similar flag TrustFinalDefaultFields which defaults to true. I think anyone modifying final fields of published objects through reflection should just be laughed at and told to go away. The hole that allows modification of final fields through reflection was introduced to support deserialization. Any other use should just be considered undefined behaviour. > > tom > From tom.rodriguez at oracle.com Mon Apr 27 18:35:09 2015 From: tom.rodriguez at oracle.com (Tom Rodriguez) Date: Mon, 27 Apr 2015 11:35:09 -0700 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: Message-ID: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> > On Apr 27, 2015, at 11:02 AM, Vitaly Davidovich wrote: > > Thanks Gilles. > > Why is there a restriction that receiver has to be constant as well? In > addition, why does the value have to be *not* default? Specifically, an > example I mentioned to John was akin to this: > > final class Foo { > private final Object[] _arr = new Object[10]; > > int capacity() { return _arr.length; } > > Object getFirst() { return _arr[0]; } > } > > What's the reason capacity() cannot be constant folded to 10 if the > receiver is non-constant? Likewise with getFirst(). Is this again because > there's no field profiling? I suspect so, but just want to double check. > > Has any thought been given to doing some (basic) field profiling? Actually, > I'm reluctant to call the above profiling since it seems like it could be > done at parse/compile time? To me profiling sounds more like "there's a > final field of interface type Foo, and we profile to see that at runtime we > only have 1 real type stored there, FooImpl", or something like that. I agree field profiling doesn?t seem like it?s the solution you?re talking about here. Years ago I build something like this for HotSpot that did a local symbolic analysis of all field initializations for a class to detect things like your example. At the byte code level you can identify fields which are only stored in the constructor and capture symbolic properties of those initializations. You don?t really need to care about final either, just that the amount of code you need to analyze is restricted through the use of access controls. You can dynamically trap all stores except the ones you?ve analyzying to treat fields as effectively final. In your example the fact that _arr is exactly Object[] is more interesting than having a constant length since store checks aren?t required for Object[]. My experience was that it did some really clever things but that it largely didn?t translate into performance since you?re just shaving a tiny bits of work off something which is generally well optimized in the first place. Type profiling and other speculative optimizations often pick up the interesting things here and maybe that?s what John was getting at with suggesting field profiling. tom > > Thanks > > > On Mon, Apr 27, 2015 at 1:45 PM, Gilles Duboscq wrote: > >> Hi Vitaly, >> >> We currently do not respect the TrustNonStaticFinalFields field. >> We have a "@Stable-like" behaviour for non-static final fields: >> >> * static final: >> We always constant fold >> >> * final >> We constant fold if the receiver is constant and if the value is not >> default (null, 0, 0.0, false...). This is not what HotSpot normally does >> and we just enabled this to see what would happen. At some point we'll >> probably change to only do that if TrustNonStaticFinalFields is true just >> to respect HotSpot's wish though. >> >> * @Stable final array[] >> We constant fold if the receiver is constant and if the value is not >> default (null, 0, 0.0, false...) and we apply the @Stable final property >> for the elements of the array (up to the declared field's dimension). i.e. >> an access like array[0] would also be constant folded (this would not be >> done for final: we would access a constant array object the the load from >> this array would stay). >> >> * Some fields are automatically promoted to @Stable >> The String.value field and synthetic $VALUES, ENUM$VALUES, $SwitchMap$ >> and $SWITCH_TABLE$ fields (from enums) are automatically promoted to >> @Stable. >> >> We do not do any additional profiling of fields in the runtime. >> >> >> >> On Fri, Apr 24, 2015 at 3:57 PM Vitaly Davidovich >> wrote: >> >>> Hi guys, >>> >>> I recently had a thread on hotspot-compiler-dev where John Rose shed some >>> light on what the TrustNonStaticFinalFields experimental flag implies in >>> the C2 compiler: >>> >>> http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html >>> >>> Based on that exchange, I see that there are some scenarios where some >>> optimization opportunities are missed, specifically due to missing field >>> profiling. That got me thinking -- how does Graal handle this, and does >>> it >>> do something better here? Clearly Graal has to also be mindful of final >>> fields being changed via reflection, but are there any speculative >>> optimizations around trusting that final fields are mostly unchanged (or >>> plans to do that)? >>> >>> Thanks >>> >> From vitalyd at gmail.com Mon Apr 27 18:38:07 2015 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Mon, 27 Apr 2015 14:38:07 -0400 Subject: Graal final field treatment with respect to optimizations In-Reply-To: <59547E3D-B923-4BB9-9900-907E1F37DDE5@oracle.com> References: <59547E3D-B923-4BB9-9900-907E1F37DDE5@oracle.com> Message-ID: Ok, thanks Tom; a few comments below ... > So to optimize final in the way a Java user might expect the compiler > would have do semantic analysis of the initialization and use of the Java > field to determine how it can be treated. Yes, compiler would have to perform analysis on the constructor, but naively it seems like the same type of analyses (or subset of) that it already does for method compilations. > My sense is that having the JIT do a perfect job here would likely have > little impact on the performance of regular Java code. When enough > inlining occurs that all loads and stores are visible then those kinds of > optimizations apply all fields. Getting the remaining one is probably of > limited value, even though it?s fairly ridiculous that we don?t. Yes, I don't expect earth shattering performance improvement from doing this. However, there are places where certain checks left behind by compiler (type checks, null checks, range checks, etc) are at least as expensive as the "user code". These things are amortized via CSE when there are more uses of the checked value later on, but when you have these things sprinkled across many leaf calls where not much CSE is available, they kind of suck :). In particular, the array length propagated as constants (or lack thereof really) is very unfortunate. It's also slightly frustrating that I can't propagate/convey knowledge to the compiler in any way; even if I check certain invariants in constructor and actually guarantee those invariants, that knowledge is lost. :( On Mon, Apr 27, 2015 at 2:24 PM, Tom Rodriguez wrote: > > On Apr 27, 2015, at 10:39 AM, Vitaly Davidovich wrote: > > Hi Tom, > > I'm with you in terms of how this should be treated. However, Cliff Click > wrote a couple of blog posts a few years back on this topic: > > > http://www.azulsystems.com/blog/cliff/2011-10-17-writing-to-final-fields-via-reflection > http://www.azulsystems.com/blog/cliff/2011-10-27-final-fields-part-2 > > In short, some popular frameworks make use of this "feature?. > > > I?m aware of that post. I?m not sure I?d generalize from that too much > though. It?s unfortunate the semantics of these kinds of things aren't > defined and enforced in a clear fashion. Absent that I still say the right > response is to say it's simply a bug. It even likely violates the Java > memory model since the proper semantics of final fields for immutable > objects may require a barrier for other threads to see the store. > > I suspect the middle ground here would (or should) be to allow for that > scenario, but have user specify which class/package/ > should be excluded from JIT optimizations. Alternatively, have the > compiler track writes to final fields and then deopt without final field > optimizations; I think that's what the C2 guys are contemplating, if I > understand correctly. > > > Yes, we?d discussed that as well. Precise handling of this is a bit > uglier because of things like Unsafe since you can?t interpose on those as > easily. You?d have to disallow final field optimizations for any field > that had it?s offset asked for, so reading the field using Unsafe would > also disable the optimization. > > > However, the thing I'm particularly curious about is what types of > additional optimizations, if any, Graal performs when it trusts final > fields. > > > I think you?re reading too much into the name of the flag. Optimization > of final fields in general requires a lot more work since it?s poorly > specified and unchecked at the VM specification level. The normal Java > definite assignment rules are only enforced by javac. > > So to optimize final in the way a Java user might expect the compiler > would have do semantic analysis of the initialization and use of the Java > field to determine how it can be treated. > > In C2, this doesn't appear to do much. In particular, final fields are > treated as constants only if enclosing instance is also constant; the only > practical difference that I found (in quick playing around with this flag) > this makes is that Enum.ordinal() is treated as a constant in compiled > code. There were certain "obvious" cases that weren't optimized though, > e.g.: > > 1) final array fields (even ones that were allocated inside the class > ctor) didn't have their length propagated as a constant to uses. In > addition, range checks were performed on accesses that should be "known" to > be legit. Basically, they didn't get the same codegen treatment as static > final arrays. > 2) There didn't seem to be any "constraint" propagation of final fields. > For example, if the constructor throws a NPE if the field is null, the > field is still checked for null in uses. Likewise, say if an int field was > checked to be > 0, that info does not seem to make its way to uses. > > > Generally these would fall out of proper CSE of final field accesses > across possibly killing calls. It also requires deciding what semantics > are actually safe for final fields, which is unspecified at the VM level. > > My sense is that having the JIT do a perfect job here would likely have > little impact on the performance of regular Java code. When enough > inlining occurs that all loads and stores are visible then those kinds of > optimizations apply all fields. Getting the remaining one is probably of > limited value, even though it?s fairly ridiculous that we don?t. > > tom > > > John Rose indicated that these types of optimizations aren't done because > C2 doesn't do field profiling. I'm not sure #1 counts as profiling as it > seems like this type of thing could be detected at parse time. #2 also > isn't so much about profiling as about piggybacking on user checks that are > then predicated on final fields being unchanged thereafter. > > Does Graal propagate this type of information to uses? Or more generally, > does it perform some set of additional optimizations (even if they're > peephole in nature) for final field uses? > > Thanks > > On Mon, Apr 27, 2015 at 1:07 PM, Tom Rodriguez > wrote: > >> >> > On Apr 24, 2015, at 6:55 AM, Vitaly Davidovich >> wrote: >> > >> > Hi guys, >> > >> > I recently had a thread on hotspot-compiler-dev where John Rose shed >> some >> > light on what the TrustNonStaticFinalFields experimental flag implies in >> > the C2 compiler: >> > >> http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html >> > >> > Based on that exchange, I see that there are some scenarios where some >> > optimization opportunities are missed, specifically due to missing field >> > profiling. That got me thinking -- how does Graal handle this, and >> does it >> > do something better here? Clearly Graal has to also be mindful of final >> > fields being changed via reflection, but are there any speculative >> > optimizations around trusting that final fields are mostly unchanged (or >> > plans to do that)? >> >> We have a similar flag TrustFinalDefaultFields which defaults to true. I >> think anyone modifying final fields of published objects through reflection >> should just be laughed at and told to go away. The hole that allows >> modification of final fields through reflection was introduced to support >> deserialization. Any other use should just be considered undefined >> behaviour. >> >> tom > > > > From christian.wimmer at oracle.com Mon Apr 27 18:41:30 2015 From: christian.wimmer at oracle.com (Christian Wimmer) Date: Mon, 27 Apr 2015 11:41:30 -0700 Subject: Graal final field treatment with respect to optimizations In-Reply-To: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> References: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> Message-ID: <553E82DA.9050200@oracle.com> On 04/27/2015 11:35 AM, Tom Rodriguez wrote: > >> On Apr 27, 2015, at 11:02 AM, Vitaly Davidovich wrote: >> >> Thanks Gilles. >> >> Why is there a restriction that receiver has to be constant as well? In >> addition, why does the value have to be *not* default? Specifically, an >> example I mentioned to John was akin to this: >> >> final class Foo { >> private final Object[] _arr = new Object[10]; >> >> int capacity() { return _arr.length; } >> >> Object getFirst() { return _arr[0]; } >> } >> >> What's the reason capacity() cannot be constant folded to 10 if the >> receiver is non-constant? Likewise with getFirst(). Is this again because >> there's no field profiling? I suspect so, but just want to double check. >> >> Has any thought been given to doing some (basic) field profiling? Actually, >> I'm reluctant to call the above profiling since it seems like it could be >> done at parse/compile time? To me profiling sounds more like "there's a >> final field of interface type Foo, and we profile to see that at runtime we >> only have 1 real type stored there, FooImpl", or something like that. > > I agree field profiling doesn?t seem like it?s the solution you?re talking about here. > > Years ago I build something like this for HotSpot that did a local symbolic analysis of all field initializations for a class to detect things like your example. At the byte code level you can identify fields which are only stored in the constructor and capture symbolic properties of those initializations. You don?t really need to care about final either, just that the amount of code you need to analyze is restricted through the use of access controls. You can dynamically trap all stores except the ones you?ve analyzying to treat fields as effectively final. In your example the fact that _arr is exactly Object[] is more interesting than having a constant length since store checks aren?t required for Object[]. > > My experience was that it did some really clever things but that it largely didn?t translate into performance since you?re just shaving a tiny bits of work off something which is generally well optimized in the first place. Type profiling and other speculative optimizations often pick up the interesting things here and maybe that?s what John was getting at with suggesting field profiling. I did a similar thing on Graal a year or so ago, and the result was the same: It did not show any speedups. The good news is that it was quite simple to implement in Graal, with just a little code in the interpreter that invalidates a Java-level assumption when a field is written. -Christian From john.r.rose at oracle.com Mon Apr 27 18:48:42 2015 From: john.r.rose at oracle.com (John Rose) Date: Mon, 27 Apr 2015 11:48:42 -0700 Subject: Graal final field treatment with respect to optimizations In-Reply-To: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> References: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> Message-ID: <3453AA24-23F1-43E8-AC4B-B8B6044AE4D1@oracle.com> On Apr 27, 2015, at 11:35 AM, Tom Rodriguez wrote: > > Type profiling and other speculative optimizations often pick up the interesting things here and maybe that?s what John was getting at with suggesting field profiling. Yep. I think global (class-scope) analysis is what Vitaly is asking about, but as you point out (thanks!) local analysis after inlining gets nearly all of the good bits there. The next technique that adds to local analysis is not global analysis but various profile-driven speculations. Global stuff is easy to think about but seems never to add much. Exception: Whole-program static analysis sometimes has dramatic results. But most Java programs are hostile to whole-program stuff. ? John From doug.simon at oracle.com Mon Apr 27 19:00:17 2015 From: doug.simon at oracle.com (Doug Simon) Date: Mon, 27 Apr 2015 21:00:17 +0200 Subject: Java 8 compatibility In-Reply-To: <76AA40A2-1638-48E9-813F-2AFC36720847@stefan-marr.de> References: <4CA574DA-04A2-4BCE-B575-1F368A24C9F8@stefan-marr.de> <2A2B621A-31CE-43F9-9416-BB301E19581E@oracle.com> <618B6D49-BF6D-4051-86D4-FB1433CB2C73@stefan-marr.de> <2F63D1A3-A499-4184-894C-4A045F9AE7B5@stefan-marr.de> <76AA40A2-1638-48E9-813F-2AFC36720847@stefan-marr.de> Message-ID: <7E4079A0-C1EC-4EEC-AE34-0B02518EDC6C@oracle.com> > On Apr 24, 2015, at 1:49 PM, Stefan Marr wrote: > > Hi Gilles: > >> On 24 Apr 2015, at 12:00, Gilles Duboscq wrote: >> >> If we really think this should be the default behaviour I can swap it around and make it a ?strict-compliance flag. > > Personally, I would argue that the feature is supposed to improve the initial experience of new users. > So, I would make it the standard out-of-the-box behavior. > >> I don?t think this is really about releases, > > Yes, I agree, it is only about the compliance at the moment. > Well, it was just a first idea in order to get the issue eventually resolved. > > But your approach sounds good as well. Except, that as I said, I would go for the inverse default behavior and make strict checking an opt-in. I agree that this is the right compromise. We should add some notes to the wiki page[1] recommending always using strict compliance once a new comer transitions from window shopping to active development. It should definitely be a prerequisite before submitting a patch. -Doug [1] https://wiki.openjdk.java.net/display/Graal/Instructions From vitalyd at gmail.com Mon Apr 27 19:25:21 2015 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Mon, 27 Apr 2015 15:25:21 -0400 Subject: Graal final field treatment with respect to optimizations In-Reply-To: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> References: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> Message-ID: Tom, The cases where this type of optimization would help, I think, is when you're calling into "islands" of code, and can't amortize the cost of the safety checks. Think of looping over Foo instances (using my example above) and calling getFirst() on each one. There's nothing to CSE here, so each access is going to trigger a range check. Another practical example, as I mentioned to John, is efficiently handling the Null Object pattern. If I only have a null object impl loaded at runtime which has nop implementations of methods, CHA correctly figures this out and eliminates the calls to those empty methods. However, the null check is left behind even though the field is final and definitely assigned a non-null value in constructor. The test instruction that gets emitted *is* cheap, but it loads a cacheline that may not otherwise be needed in the "meat" of the method. Had compiler determined that the field could never be null, this could be completely zero-cost abstraction provided a second impl is never loaded. On Mon, Apr 27, 2015 at 2:35 PM, Tom Rodriguez wrote: > > > On Apr 27, 2015, at 11:02 AM, Vitaly Davidovich > wrote: > > > > Thanks Gilles. > > > > Why is there a restriction that receiver has to be constant as well? In > > addition, why does the value have to be *not* default? Specifically, an > > example I mentioned to John was akin to this: > > > > final class Foo { > > private final Object[] _arr = new Object[10]; > > > > int capacity() { return _arr.length; } > > > > Object getFirst() { return _arr[0]; } > > } > > > > What's the reason capacity() cannot be constant folded to 10 if the > > receiver is non-constant? Likewise with getFirst(). Is this again > because > > there's no field profiling? I suspect so, but just want to double check. > > > > Has any thought been given to doing some (basic) field profiling? > Actually, > > I'm reluctant to call the above profiling since it seems like it could be > > done at parse/compile time? To me profiling sounds more like "there's a > > final field of interface type Foo, and we profile to see that at runtime > we > > only have 1 real type stored there, FooImpl", or something like that. > > I agree field profiling doesn?t seem like it?s the solution you?re talking > about here. > > Years ago I build something like this for HotSpot that did a local > symbolic analysis of all field initializations for a class to detect things > like your example. At the byte code level you can identify fields which > are only stored in the constructor and capture symbolic properties of those > initializations. You don?t really need to care about final either, just > that the amount of code you need to analyze is restricted through the use > of access controls. You can dynamically trap all stores except the ones > you?ve analyzying to treat fields as effectively final. In your example the > fact that _arr is exactly Object[] is more interesting than having a > constant length since store checks aren?t required for Object[]. > > My experience was that it did some really clever things but that it > largely didn?t translate into performance since you?re just shaving a tiny > bits of work off something which is generally well optimized in the first > place. Type profiling and other speculative optimizations often pick up > the interesting things here and maybe that?s what John was getting at with > suggesting field profiling. > > tom > > > > > Thanks > > > > > > On Mon, Apr 27, 2015 at 1:45 PM, Gilles Duboscq > wrote: > > > >> Hi Vitaly, > >> > >> We currently do not respect the TrustNonStaticFinalFields field. > >> We have a "@Stable-like" behaviour for non-static final fields: > >> > >> * static final: > >> We always constant fold > >> > >> * final > >> We constant fold if the receiver is constant and if the value is not > >> default (null, 0, 0.0, false...). This is not what HotSpot normally does > >> and we just enabled this to see what would happen. At some point we'll > >> probably change to only do that if TrustNonStaticFinalFields is true > just > >> to respect HotSpot's wish though. > >> > >> * @Stable final array[] > >> We constant fold if the receiver is constant and if the value is not > >> default (null, 0, 0.0, false...) and we apply the @Stable final property > >> for the elements of the array (up to the declared field's dimension). > i.e. > >> an access like array[0] would also be constant folded (this would not be > >> done for final: we would access a constant array object the the load > from > >> this array would stay). > >> > >> * Some fields are automatically promoted to @Stable > >> The String.value field and synthetic $VALUES, ENUM$VALUES, $SwitchMap$ > >> and $SWITCH_TABLE$ fields (from enums) are automatically promoted to > >> @Stable. > >> > >> We do not do any additional profiling of fields in the runtime. > >> > >> > >> > >> On Fri, Apr 24, 2015 at 3:57 PM Vitaly Davidovich > >> wrote: > >> > >>> Hi guys, > >>> > >>> I recently had a thread on hotspot-compiler-dev where John Rose shed > some > >>> light on what the TrustNonStaticFinalFields experimental flag implies > in > >>> the C2 compiler: > >>> > >>> > http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-April/017739.html > >>> > >>> Based on that exchange, I see that there are some scenarios where some > >>> optimization opportunities are missed, specifically due to missing > field > >>> profiling. That got me thinking -- how does Graal handle this, and > does > >>> it > >>> do something better here? Clearly Graal has to also be mindful of final > >>> fields being changed via reflection, but are there any speculative > >>> optimizations around trusting that final fields are mostly unchanged > (or > >>> plans to do that)? > >>> > >>> Thanks > >>> > >> > > From vitalyd at gmail.com Mon Apr 27 20:29:10 2015 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Mon, 27 Apr 2015 16:29:10 -0400 Subject: Graal final field treatment with respect to optimizations In-Reply-To: <3453AA24-23F1-43E8-AC4B-B8B6044AE4D1@oracle.com> References: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> <3453AA24-23F1-43E8-AC4B-B8B6044AE4D1@oracle.com> Message-ID: John, Global/class-scope analysis is probably what I'm asking about - this nomenclature is probably as good as any. I think you guys are all saying that these types of optimizations kick in with sufficient inlining automatically, and I agree. But I think these things all rely on latching onto a dominating check, which means the same type of safety checks won't be performed multiple times. I'm, however, referring to cases where the 1st safety check is the only check - there's nothing else subsequent to it that can piggyback and thus amortize the cost. Here's another example: class Foo { final int[] arr1 = new int [3]; final int[] arr2 = new int[4]; final int[] arr3 = new int[5]; long sum () { return arr1[0] + arr2[0] + arr3[0]; } } There's a range check on each one even though it's "obvious" there shouldn't be one. I'm sure we could come up with more examples, but the common pattern is there's no dominator to use. sent from my phone On Apr 27, 2015 2:48 PM, "John Rose" wrote: > On Apr 27, 2015, at 11:35 AM, Tom Rodriguez > wrote: > > > Type profiling and other speculative optimizations often pick up the > interesting things here and maybe that?s what John was getting at with > suggesting field profiling. > > > Yep. I think global (class-scope) analysis is what Vitaly is asking > about, but as you point out (thanks!) local analysis after inlining gets > nearly all of the good bits there. The next technique that adds to local > analysis is not global analysis but various profile-driven speculations. > Global stuff is easy to think about but seems never to add much. > Exception: Whole-program static analysis sometimes has dramatic results. > But most Java programs are hostile to whole-program stuff. > > ? John > From john.r.rose at oracle.com Mon Apr 27 21:57:06 2015 From: john.r.rose at oracle.com (John Rose) Date: Mon, 27 Apr 2015 14:57:06 -0700 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> <3453AA24-23F1-43E8-AC4B-B8B6044AE4D1@oracle.com> Message-ID: <40E9F46A-FEDD-44A5-9801-5EA606FE4561@oracle.com> On Apr 27, 2015, at 1:29 PM, Vitaly Davidovich wrote: > There's a range check on each one even though it's "obvious" there shouldn't be one. I'm sure we could come up with more examples, but the common pattern is there's no dominator to use. Subset types flow from dominating definitions as well as tests. With enough inlining, the use site can "see" the allocation site, including specific parameters of the allocation, and that's as good as a dominating check for folding up subsequent checks. As an extremely local example, this code becomes a no-op: assert(new int[2].length == 2); The dominating check you are thinking of corresponds to: assert(aa.length == 2 && aa.length == 2); You can probably see that, after inlining, large amounts of code can appear between the allocation site and the checks, but (under generous conditions) the same optimizations apply as in the above trivial cases. ? John From vitalyd at gmail.com Mon Apr 27 22:02:41 2015 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Mon, 27 Apr 2015 18:02:41 -0400 Subject: Graal final field treatment with respect to optimizations In-Reply-To: <40E9F46A-FEDD-44A5-9801-5EA606FE4561@oracle.com> References: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> <3453AA24-23F1-43E8-AC4B-B8B6044AE4D1@oracle.com> <40E9F46A-FEDD-44A5-9801-5EA606FE4561@oracle.com> Message-ID: That's good to know, but I would be quite upset if "new int[2].length == 2" didn't fold :) In the cases I'm thinking of, the allocations aren't part of the inlining horizon; in fact, the allocated objects live for a long time, possibly eternal, but they're not constants to the compiler. On Mon, Apr 27, 2015 at 5:57 PM, John Rose wrote: > On Apr 27, 2015, at 1:29 PM, Vitaly Davidovich wrote: > > There's a range check on each one even though it's "obvious" there > shouldn't be one. I'm sure we could come up with more examples, but the > common pattern is there's no dominator to use. > > Subset types flow from dominating definitions as well as tests. > > With enough inlining, the use site can "see" the allocation site, > including specific parameters of the allocation, and that's as good as a > dominating check for folding up subsequent checks. > > As an extremely local example, this code becomes a no-op: > > assert(new int[2].length == 2); > > The dominating check you are thinking of corresponds to: > > assert(aa.length == 2 && aa.length == 2); > > You can probably see that, after inlining, large amounts of code can > appear between the allocation site and the checks, but (under generous > conditions) the same optimizations apply as in the above trivial cases. > > ? John From doug.simon at oracle.com Tue Apr 28 01:00:08 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Tue, 28 Apr 2015 01:00:08 +0000 Subject: hg: graal/graal: 12 new changesets Message-ID: <201504280100.t3S108Sc004451@aojmv0008> Changeset: ae4941602cfa Author: Gilles Duboscq Date: 2015-04-27 12:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/ae4941602cfa mx: fix crash when there are no services ! mx/mx_graal.py Changeset: 294ed4ce1fa0 Author: Gilles Duboscq Date: 2015-04-24 17:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/294ed4ce1fa0 PrintStreamOption: also forward flushes to the VM ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/PrintStreamOption.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVM.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/CompilerToVMImpl.java ! src/share/vm/graal/graalCompilerToVM.cpp Changeset: c92676a390b8 Author: Gilles Duboscq Date: 2015-04-27 11:55 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c92676a390b8 ReadElimination: only anchor guard if it is different from cachedValue's guard ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java Changeset: b625b459cf45 Author: Christian Humer Date: 2015-04-27 17:24 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/b625b459cf45 SL: fix division long overflow. Contributed-by: Raffaello Giulietti ! graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/SLDivNode.java Changeset: 7f78f999512a Author: Gilles Duboscq Date: 2015-04-27 16:11 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7f78f999512a mx: services: make sure we don't produce empty lines ! mx/mx_graal.py Changeset: 85b0935625c1 Author: Gilles Duboscq Date: 2015-04-27 18:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/85b0935625c1 graalRuntime: make service file parsing more robust: - support various line endings (\r, \n and \r\n) - support # comments - support empty lines ! src/share/vm/graal/graalRuntime.cpp Changeset: 019ae3824a4e Author: Stefan Anzinger Date: 2015-04-27 16:02 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/019ae3824a4e [SPARC] Set MaxVectorSize=8 ! src/cpu/sparc/vm/graalGlobals_sparc.hpp ! src/cpu/x86/vm/graalGlobals_x86.hpp ! src/share/vm/graal/graalGlobals.hpp Changeset: 41f048caa3dd Author: Stefan Anzinger Date: 2015-04-27 18:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/41f048caa3dd Predefine value outside of COMPILERGRAAL ! src/cpu/sparc/vm/graalGlobals_sparc.hpp ! src/cpu/x86/vm/graalGlobals_x86.hpp Changeset: 6e05dd55d795 Author: Stefan Anzinger Date: 2015-04-27 18:37 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/6e05dd55d795 Merge Changeset: 647f571f54da Author: Stefan Anzinger Date: 2015-04-27 19:03 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/647f571f54da Merge Changeset: 0f289b082d3d Author: Christian Wimmer Date: 2015-04-27 11:37 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0f289b082d3d Handle checkCast and instanceOf involving word types using a GraphBuilderPlugin ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderConfiguration.java + graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/TypeCheckPlugin.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java ! graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java ! graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/WordTest.java ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/WordOperationPlugin.java Changeset: b95deaa6ebf6 Author: Tom Rodriguez Date: 2015-04-27 12:20 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b95deaa6ebf6 Fix construction of infopoint frame states ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java From thomas.wuerthinger at oracle.com Tue Apr 28 08:16:21 2015 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Tue, 28 Apr 2015 10:16:21 +0200 Subject: Graal final field treatment with respect to optimizations In-Reply-To: References: <919DB1C3-0BFE-4C31-98F8-3294300D1C82@oracle.com> <3453AA24-23F1-43E8-AC4B-B8B6044AE4D1@oracle.com> <40E9F46A-FEDD-44A5-9801-5EA606FE4561@oracle.com> Message-ID: We have an optimization for our Truffle object model that always speculates on the ?final? property of a value placeholder (e.g., global variable slot or field) independent of whether the placeholder was explicitly declared ?final? by the programmer. This works transitively also for chains of accesses. The optimization is in place for Truffle languages such as JavaScript, Ruby, or Smalltalk. We have a research project to also run Java on top of the Truffle layer such that Java could also profit from this approach. - thomas > On 28 Apr 2015, at 00:02, Vitaly Davidovich wrote: > > That's good to know, but I would be quite upset if "new int[2].length == 2" > didn't fold :) In the cases I'm thinking of, the allocations aren't part of > the inlining horizon; in fact, the allocated objects live for a long time, > possibly eternal, but they're not constants to the compiler. From andreas.woess at oracle.com Tue Apr 28 09:16:47 2015 From: andreas.woess at oracle.com (Andreas Woess) Date: Tue, 28 Apr 2015 11:16:47 +0200 Subject: overflows in SLDivNode In-Reply-To: <553E7D8A.5080803@supsi.ch> References: <553E4507.5050402@oracle.com> <553E7D8A.5080803@supsi.ch> Message-ID: <553F4FFF.8050408@oracle.com> Correct, the idiv instruction has to be guarded by a test on the divisor being 0 or -1 in case an overflow occurred previously (or always). [1] Given that, we could indeed have a divideExact that throws on /0 and MIN_VALUE/-1 and intrinsify it to an idiv without any tests. This method would always deoptimize the caller on overflow and the Truffle language implementer have to rewrite the div node on ArithmeticException to a version not using divideExact (to prevent endless deoptimizations). One minor problem I see with having such a divideExact method is the meaning of the word exact: One could, by the name, expect it to throw when the remainder is non-zero, i.e. the result is truncated and thus not "exact". But I might be nitpicking here... [1] It looks like Graal does not do this yet. But let me double-check. - andreas On 2015-04-27 20:18, Raffaello Giulietti wrote: > I'm not an expert in machine code at all. However, my understanding is > that the x86_64 idiv instruction throws the same exception both when a > division by 0 occurs and also when the result overflows. > > Since division by 0 in Java already throws an exception, one could > perhaps process an overflow in the same way in a hypothetical > intrinsified machine code implementation of divExact(). > > Or how does the machine code for a division by 0 look? Is the division > instruction guarded by a test on the divisor? > > I'm asking the Graal people here... > > > > > On 2015-04-27 19:34, Chris Seaton wrote: >> Someone writing a Truffle language may look at the ExactMath class, see >> no exactDivide, and conclude that integer division cannot overflow. Even >> if our implementation does not give performance gains, it might be good >> to have it there so that they don?t assume this. >> >> Chris >> >>> On 27 Apr 2015, at 15:17, Andreas Woess >> > wrote: >>> >>> However, I don't think we should add a divExact method. We cannot >>> intrinsify it (the idiv instruction does not set the overflow flag); >>> for the same reason Java 8 does not have a divideExact. Also, the >>> utility method cannot specialize (whereas the SLDivNode can), so >>> having it does not buy us anything. From christian.humer at gmail.com Tue Apr 28 15:38:17 2015 From: christian.humer at gmail.com (christian.humer at gmail.com) Date: Tue, 28 Apr 2015 15:38:17 +0000 Subject: overflows in SLDivNode In-Reply-To: <553E466C.6070802@supsi.ch> Message-ID: I've pushed a fix to SL yesterday. http://hg.openjdk.java.net/graal/graal/rev/b625b459cf45 @Andreas feel free to update it if you decide to add an intrinsic. - Christian Humer ------ Original Message ------ From: "Raffaello Giulietti" To: graal-dev at openjdk.java.net Sent: 27.04.2015 16:23:40 Subject: Re: overflows in SLDivNode >Hi Andreas, > >yes, I just posted a comment on the idiv instruction a couple of >minutes ago ;-) > >OK, the important point is that SL behaves correctly, since its >structure will be surely copied by other Truffle language >implementations, including the division AST node. > > > > > >On 2015-04-27 16:17, Andreas Woess wrote: >>Thanks for pointing out the bug, Raffaello. We'll fix SL. >>However, I don't think we should add a divExact method. We cannot >>intrinsify it (the idiv instruction does not set the overflow flag); >>for >>the same reason Java 8 does not have a divideExact. Also, the utility >>method cannot specialize (whereas the SLDivNode can), so having it >>does >>not buy us anything. >> >>- andreas >> >>On 27/04/15 15:26, christian.humer at gmail.com wrote: >>>Hi Raffaello, >>> >>>Thanks for pointing this out. >>> >>>I am a little unsure how to name the divExact method in ExactMath. >>>The >>>term "exact" might be misleading here as it actually rounds towards 0 >>>without throwing the exception. What if we want to add a divExact >>>that >>>throws if the result looses information? I am open to suggestions. >>>Will push a fix just for SL in the meantime. >>> >>>- Christian Humer >>> >>> >>> >>> >>>------ Original Message ------ >>>From: "Raffaello Giulietti" >>>To: graal-dev at openjdk.java.net >>>Sent: 27.04.2015 14:17:53 >>>Subject: Re: overflows in SLDivNode >>> >>>>The following method (and the equivalent for int) might be added to >>>>ExactMath to help implementing the division correctly. >>>> >>>> >>>> public static long divExact(long x, long y) { >>>> long r = x / y; >>>> if ((x & y & r) < 0) { >>>> throw new ArithmeticException("long overflow"); >>>> } >>>> return r; >>>> } >>>> >>>> >>>>Since SL is meant to be an exemplary Truffle language, I feel it >>>>will >>>>be surely imitated, so it is important to keep it as correct as >>>>possible. >>>> >>>> >>>>Greetings >>>>Raffaello >>>> >>>> >>>> >>>> >>>>On 2015-04-26 17:51, Raffaello Giulietti wrote: >>>>>Hi, >>>>> >>>>>I'm just studying the SL implementation in the last Graal/Truffle >>>>>update. >>>>> >>>>>The long specialization of the division wrongly assumes that >>>>>/* No overflow is possible on a division. */ >>>>> >>>>>When left is Long.MIN_VALUE and right is -1 the division overflows. >>>>> >>>>>OK, OK, OK, this is the only case and has a ridiculous >>>>>(cryptography-like) probability of 2^-128 to happen randomly. And, >>>>>no, >>>>>neither java.lang.Math nor ExactMath cover this rare case of >>>>>overflow. >>>>> >>>>>Greetings >>>>>Raffaello >>>> >>> >> > From doug.simon at oracle.com Wed Apr 29 01:00:08 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Wed, 29 Apr 2015 01:00:08 +0000 Subject: hg: graal/graal: 13 new changesets Message-ID: <201504290100.t3T108dl012926@aojmv0008> Changeset: 7d21cdb15e54 Author: Michael Van De Vanter Date: 2015-04-21 15:56 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7d21cdb15e54 Truffle/Instrumentation: remove an interface that no longer adds value ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.java - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SyntaxTagged.java Changeset: d6d9631eb057 Author: Michael Van De Vanter Date: 2015-04-21 17:02 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/d6d9631eb057 TruffleInstrumentation: rename Probe.setTagTrap() to Probe.setBeforeTagTrap() and add Probe.setAfterTagTrap() ! graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Probe.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/SyntaxTagTrap.java Changeset: fc6fd02ecf95 Author: Michael Van De Vanter Date: 2015-04-26 20:50 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/fc6fd02ecf95 Merge with f6f3f44a183051ae5ee581be7c8c6c8cbbc0d5fe - graal/com.oracle.graal.compiler/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchProcessor.java - graal/com.oracle.graal.hotspotvmconfig/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.hotspotvmconfig/src/com/oracle/graal/hotspotvmconfig/HotSpotVMConfigProcessor.java - graal/com.oracle.graal.options/src/META-INF/services/javax.annotation.processing.Processor - graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/CachingPEGraphDecoder.java - graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PEGraphDecoder.java Changeset: bbc6a4347faf Author: Michael Van De Vanter Date: 2015-04-27 20:01 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/bbc6a4347faf Merge with b95deaa6ebf6100bb5a95ab25b2fdc6b9ef5f420 Changeset: a5faa9aafc80 Author: Roland Schatz Date: 2015-04-28 13:08 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a5faa9aafc80 Make the G1PostWriteBarrier snippet kill only private locations. ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Changeset: 48bfffd96d94 Author: Stefan Anzinger Date: 2015-04-28 18:04 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/48bfffd96d94 Disable DeoptALot when making graphs for snippets/susbstitutions ! graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Changeset: 8722ffa310d0 Author: Stefan Anzinger Date: 2015-04-28 18:07 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/8722ffa310d0 [SPARC] Fix comparebranch with sub-int types ! graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java ! graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/bytecode/BC_ifeq.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Changeset: fb2b27418347 Author: Stefan Anzinger Date: 2015-04-28 18:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/fb2b27418347 [SPARC] Improve verify in Compare ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java ! graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Changeset: 7a62f41ed610 Author: Stefan Anzinger Date: 2015-04-28 18:35 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7a62f41ed610 Merge - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SyntaxTagged.java Changeset: a17dc2584e81 Author: Tom Rodriguez Date: 2015-04-28 09:44 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/a17dc2584e81 Fix time reporting in multithreaded CTW ! graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java Changeset: 7d2f6dd603b0 Author: Tom Rodriguez Date: 2015-04-28 09:44 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/7d2f6dd603b0 Make DebugScope lazier and generally reduce overhead of Debug being enabled ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalDebugConfig.java ! graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchPattern.java ! graal/com.oracle.graal.debug/src/com/oracle/graal/debug/Debug.java ! graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/DebugScope.java ! graal/com.oracle.graal.debug/src/com/oracle/graal/debug/internal/MetricImpl.java Changeset: 2b1228d97525 Author: Tom Rodriguez Date: 2015-04-28 10:14 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/2b1228d97525 Cache computation of timer and metric objects for phases ! graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LIRPhase.java ! graal/com.oracle.graal.phases/src/com/oracle/graal/phases/BasePhase.java Changeset: 0b221b4ad707 Author: Tom Rodriguez Date: 2015-04-28 12:58 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/0b221b4ad707 Merge - graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/SyntaxTagged.java From doug.simon at oracle.com Wed Apr 29 09:02:03 2015 From: doug.simon at oracle.com (Doug Simon) Date: Wed, 29 Apr 2015 11:02:03 +0200 Subject: ClassValue perf? In-Reply-To: References: <0897905F-884C-42A2-B37D-9703B13100A3@oracle.com> Message-ID: We considered using ClassValue in Graal for associating each Node with its NodeClass. Accessing the NodeClass is a very common operation in Graal (e.g., it?s used to iterate over a Node?s inputs). However, brief experimentation showed implementing this with ClassValue performed significantly worse than a direct field access[1]. We currently use ClassValue to link Class values with their Graal mirrors. Accessing this link is infrequent enough that the performance trade off against injecting a field to java.lang.Class[2] is acceptable. The memory footprint improvement suggested in JDK-8031043 would still help. -Doug [1] http://hg.openjdk.java.net/graal/graal/file/0b221b4ad707/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java#l206 [2] http://hg.openjdk.java.net/graal/graal/rev/606959535fd4 > On Apr 27, 2015, at 6:40 PM, Christian Thalinger wrote: > > >> On Apr 24, 2015, at 2:17 PM, John Rose wrote: >> >> On Apr 24, 2015, at 5:38 AM, Charles Oliver Nutter wrote: >>> >>> Hey folks! >>> >>> I'm wondering how the performance of ClassValue looks on recent >>> OpenJDK 7 and 8 builds. JRuby 9000 will be Java 7+ only, so this is >>> one place I'd like to simplify our code a bit. >>> >>> I could measure myself, but I'm guessing some of you have already done >>> a lot of exploration or have benchmarks handy. So, what say you? >> >> I'm listening too. We don't have any special optimizations for CVs, >> and I'm hoping the generic code is a good-enough start. > > A while ago (wow; it?s more than a year already) I was working on: > > [#JDK-8031043] ClassValue's backing map should have a smaller initial size - Java Bug System > > and we had a conversation about it: > > http://mail.openjdk.java.net/pipermail/mlvm-dev/2014-January/005597.html > > It?s not about performance directly but it?s about memory usage and maybe the one-value-per-class optimization John suggests is in fact a performance improvement. Someone should pick this one up. > >> ? John >> _______________________________________________ >> mlvm-dev mailing list >> mlvm-dev at openjdk.java.net >> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > > _______________________________________________ > mlvm-dev mailing list > mlvm-dev at openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev From doug.simon at oracle.com Thu Apr 30 01:00:08 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 30 Apr 2015 01:00:08 +0000 Subject: hg: graal/graal: 14 new changesets Message-ID: <201504300100.t3U1080a019093@aojmv0008> Changeset: e13c65f874e5 Author: iveresov Date: 2015-04-28 17:08 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/e13c65f874e5 Make G1 and Graal be friends in JDK9 ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java ! src/share/vm/code/nmethod.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp ! src/share/vm/memory/barrierSet.hpp Changeset: b7f05f4ca66e Author: iveresov Date: 2015-04-28 17:21 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/b7f05f4ca66e Fix code install assertions to work with G1 ! src/share/vm/graal/graalCompilerToVM.cpp Changeset: 4c3cc6a12df2 Author: Tom Rodriguez Date: 2015-04-28 17:21 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/4c3cc6a12df2 Fix assert in test when running UseG1GC ! graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/LoadJavaMirrorWithKlassTest.java Changeset: 33ff6b03fad1 Author: Michael Haupt Date: 2015-04-29 08:31 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/33ff6b03fad1 add support for control flow window and basic block view on graphs Contributed-by: Michael Haupt Contributed-by: Peter Hofer Contributed-by: Thomas Wuerthinger + src/share/tools/IdealGraphVisualizer/ControlFlow/build.xml + src/share/tools/IdealGraphVisualizer/ControlFlow/manifest.mf + src/share/tools/IdealGraphVisualizer/ControlFlow/nbproject/build-impl.xml + src/share/tools/IdealGraphVisualizer/ControlFlow/nbproject/genfiles.properties + src/share/tools/IdealGraphVisualizer/ControlFlow/nbproject/platform.properties + src/share/tools/IdealGraphVisualizer/ControlFlow/nbproject/project.properties + src/share/tools/IdealGraphVisualizer/ControlFlow/nbproject/project.xml + src/share/tools/IdealGraphVisualizer/ControlFlow/nbproject/suite.properties + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/BlockConnectionWidget.java + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/BlockWidget.java + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/Bundle.properties + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowAction.java + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowScene.java + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowTopComponent.form + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowTopComponent.java + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowTopComponentSettings.xml + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/ControlFlowTopComponentWstcref.xml + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/DoubleClickSelectAction.java + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/HierarchicalGraphLayout.java + src/share/tools/IdealGraphVisualizer/ControlFlow/src/com/sun/hotspot/igv/controlflow/layer.xml + src/share/tools/IdealGraphVisualizer/Graph/src/com/sun/hotspot/igv/graph/Block.java ! src/share/tools/IdealGraphVisualizer/Graph/src/com/sun/hotspot/igv/graph/Diagram.java ! src/share/tools/IdealGraphVisualizer/Graph/src/com/sun/hotspot/igv/graph/Figure.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/ClusterEdge.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/ClusterIngoingConnection.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/ClusterInputSlotNode.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/ClusterNode.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/ClusterOutgoingConnection.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/ClusterOutputSlotNode.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/HierarchicalClusterLayoutManager.java + src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/InterClusterConnection.java + src/share/tools/IdealGraphVisualizer/Layout/src/com/sun/hotspot/igv/layout/Cluster.java ! src/share/tools/IdealGraphVisualizer/Layout/src/com/sun/hotspot/igv/layout/LayoutGraph.java ! src/share/tools/IdealGraphVisualizer/Layout/src/com/sun/hotspot/igv/layout/Vertex.java ! src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramScene.java ! src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/DiagramViewModel.java ! src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/EditorTopComponent.java + src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/EnableBlockLayoutAction.java + src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/BlockWidget.java ! src/share/tools/IdealGraphVisualizer/nbproject/project.properties Changeset: 2b03d4ce9bce Author: Michael Haupt Date: 2015-04-29 10:29 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/2b03d4ce9bce merge Changeset: a0b348543802 Author: Doug Simon Date: 2015-04-29 11:16 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/a0b348543802 removed assertion that can never fail ! graal/com.oracle.graal.java/src/com/oracle/graal/java/IntrinsicContext.java Changeset: c1b476cae62d Author: Doug Simon Date: 2015-04-29 11:21 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/c1b476cae62d added missing newline ! graal/com.oracle.graal.options.processor/src/META-INF/services/javax.annotation.processing.Processor Changeset: e69bc2b6c79a Author: Gilles Duboscq Date: 2015-04-28 11:59 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/e69bc2b6c79a ConditionalElimination: check that begin node is still alive before processing ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Changeset: 7ffff68b31fb Author: Gilles Duboscq Date: 2015-04-29 14:36 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/7ffff68b31fb Add assert in PEReadEliminationClosure ! graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java Changeset: d7361045859a Author: Gilles Duboscq Date: 2015-04-29 14:39 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d7361045859a Remove unique id from TruffleDebugJavaMethod name ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleDebugJavaMethod.java Changeset: 1621af5cb444 Author: Gilles Duboscq Date: 2015-04-29 14:41 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/1621af5cb444 Print Graal installed code name when printing frames or diassembly ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/compiler/disassembler.cpp ! src/share/vm/runtime/frame.cpp Changeset: 271eee87201c Author: Gilles Duboscq Date: 2015-04-29 15:27 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/271eee87201c Update readme and changelog ! CHANGELOG.md ! README.md Changeset: 754f2b20d8bc Author: Gilles Duboscq Date: 2015-04-29 17:28 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/754f2b20d8bc Skip invokes with a placeholder framestate in MethodCallTargetNode.simplify ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Changeset: 060e6f7ac89e Author: Gilles Duboscq Date: 2015-04-29 17:31 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/060e6f7ac89e Added tag graal-0.7 for changeset 754f2b20d8bc ! .hgtags From doug.simon at oracle.com Thu Apr 30 13:25:23 2015 From: doug.simon at oracle.com (doug.simon at oracle.com) Date: Thu, 30 Apr 2015 13:25:23 +0000 Subject: hg: graal/graal: 6 new changesets Message-ID: <201504301325.t3UDPOfY025733@aojmv0008> Changeset: 31a1589aecdf Author: Tom Rodriguez Date: 2015-04-29 18:09 -0700 URL: http://hg.openjdk.java.net/graal/graal/rev/31a1589aecdf Make Truffle respect -XX:+DebugNonSafepoints ! graal/com.oracle.graal.graphbuilderconf/src/com/oracle/graal/graphbuilderconf/GraphBuilderConfiguration.java ! graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/HotSpotTruffleRuntime.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java ! graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Changeset: d114be1b5b3f Author: Christian Wirth Date: 2015-04-30 11:30 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/d114be1b5b3f explicitly convert to int to satisfy windows builder ! src/share/vm/code/nmethod.cpp Changeset: 3db205e86ef1 Author: Lukas Stadler Date: 2015-04-30 13:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3db205e86ef1 use InvalidateReprofile for LoadFieldNode with null receiver ! graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Changeset: 0c03a7b7081f Author: Lukas Stadler Date: 2015-04-30 13:26 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/0c03a7b7081f fix in DominatorConditionalEliminationPhase for If/ShortCircuitOr with xNegated=true ! graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java Changeset: 3e96f7c93dd1 Author: Stefan Anzinger Date: 2015-04-30 13:17 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/3e96f7c93dd1 Fix ObjectStamp.join with when joining arrays of Interfaces ! graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/AbstractObjectStamp.java + graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/bytecode/BC_checkcast03.java Changeset: 5bf34f450660 Author: Stefan Anzinger Date: 2015-04-30 13:49 +0200 URL: http://hg.openjdk.java.net/graal/graal/rev/5bf34f450660 Merge From headius at headius.com Thu Apr 30 13:42:43 2015 From: headius at headius.com (Charles Oliver Nutter) Date: Thu, 30 Apr 2015 08:42:43 -0500 Subject: ClassValue perf? In-Reply-To: References: <0897905F-884C-42A2-B37D-9703B13100A3@oracle.com> Message-ID: On Wed, Apr 29, 2015 at 4:02 AM, Doug Simon wrote: > We considered using ClassValue in Graal for associating each Node with its NodeClass. Accessing the NodeClass is a very common operation in Graal (e.g., it?s used to iterate over a Node?s inputs). However, brief experimentation showed implementing this with ClassValue performed significantly worse than a direct field access[1]. We currently use ClassValue to link Class values with their Graal mirrors. Accessing this link is infrequent enough that the performance trade off against injecting a field to java.lang.Class[2] is acceptable. That's what I'm banking on too. My case is similar to Groovy's: I need a way to *initially* get the metaclass for a given JVM class. Unlike Groovy, however, we still have to wrap Java objects in a JRuby-aware wrapper, so subsequent accesses of the class via that object are via a plain field. So the impact of ClassValue will mostly be at the border between Ruby and Java, when we need to initially build that wrapper and put some metaclass in it. Of course the disadvantage of the wrapper is the wrapper itself. If we could inject our IRubyObject interface into java.lang.Object my life would be much better. But I digress. > The memory footprint improvement suggested in JDK-8031043 would still help. I'll have to take a look at that. We're pretty memory-sensitive since Ruby's already fairly heap-intensive. - Charlie