From paul.sandoz at oracle.com Wed Jun 1 14:17:24 2016 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Wed, 1 Jun 2016 16:17:24 +0200 Subject: Java shared memory In-Reply-To: <808B4C05-4F65-4DD4-9E12-49423A84CC0A@gmail.com> References: <6B8F88FE-24AF-40E6-96DE-D7443667DA47@gmail.com> <574C9E41.30302@redhat.com> <808B4C05-4F65-4DD4-9E12-49423A84CC0A@gmail.com> Message-ID: Hi Radek, > On 31 May 2016, at 12:44, Radek wrote: > > Dear Paul and Adrew, > > Indeed I?ve messed up with a coping long. I don?t know why I have done it, as my first approach actually involved buff.getLong(). I?ve took, as well, closer look at my tests and right now I use JDK9 build 120, as a reference points. > > There is a performance gain (build 120 vs custom slow debug) but right now it?s 12%, not so huge. Maybe after code polishing and additional optimisation I could get 15-20%. > I am still skeptical, sorry. I strongly recommend writing JMH benchmarks, and also run with the perfasm option to produce the hot parts of the generated benchmarked code. Otherwise it?s hard to trust the results. But it?s hard to trust *any* performance results :-) using JMH makes it easier to evaluate. > I don?t know if in such a case my work could be interesting. > My suggestion is to look more closely at Panama, there might be some synergy and reuse of what you are learned in HotSpot. Paul. > Best regards, > Radek > PS Attached please find latest results, the MappedByteBuffer case uses for (int i=0; i < mbuff.limit(); i+=8) loop. > From brian.goetz at oracle.com Mon Jun 6 21:14:04 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Mon, 06 Jun 2016 21:14:04 +0000 Subject: hg: valhalla/valhalla/jdk: More formal separation of interpreter classpath vs underlying JVM classpath. For each interpreted class, create a proxy class that is loaded for its representation; methods on the proxy class make callbacks to the interpreter. Interpreter generates a stream of events for what it does; make tests consume these events and assert the right things are being interpreted vs executed natively. Message-ID: <201606062114.u56LE4fq002340@aojmv0008.oracle.com> Changeset: b0f73e4de9d6 Author: briangoetz Date: 2016-06-06 17:13 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/b0f73e4de9d6 More formal separation of interpreter classpath vs underlying JVM classpath. For each interpreted class, create a proxy class that is loaded for its representation; methods on the proxy class make callbacks to the interpreter. Interpreter generates a stream of events for what it does; make tests consume these events and assert the right things are being interpreted vs executed natively. + interpreter/src/valhalla/interpreter/ClassModel.java ! interpreter/src/valhalla/interpreter/Interpreter.java + interpreter/src/valhalla/interpreter/InterpreterEvent.java + interpreter/src/valhalla/interpreter/ProxyClassBuilder.java + interpreter/test-common/src/valhalla/interpreter/XRunnable.java + interpreter/test-common/test-common.iml + interpreter/test-helpers/test-helpers.iml + interpreter/test-helpers/test/valhalla/interpreter/ArrayListTestHelper.java + interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper1.java + interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper3.java + interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper4.java + interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper5.java + interpreter/test/valhalla/interpreter/InterpretBootclassTest.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java + interpreter/test/valhalla/interpreter/ResolveTest.java From org.openjdk at io7m.com Tue Jun 7 14:05:47 2016 From: org.openjdk at io7m.com (org.openjdk at io7m.com) Date: Tue, 7 Jun 2016 14:05:47 +0000 Subject: Variants/case classes/algebraic data types/sums/oh my! Message-ID: <20160607140547.70371716@copperhead.int.arc7.info> Hello! As a Java developer with a background in functional programming and type systems, I often (which is to say, more or less constantly) find myself writing emulations of algebraic data types to solve day-to-day problems in all of my Java projects. For those that don't know what an algebraic data type is, you may possibly know them by one of the other names often used: * Variant types * Case classes (from Scala, Kotlin, Ceylon, etc) * Sum types (a term more common in literature than languages) For those that still don't know them, I have a somewhat old article here aimed at Java programmers that will probably serve as a reasonable introduction: http://io7m.com/documents/ccat/ I won't spend a great deal of time advocating for their use here. Suffices to say that they are a very fundamental part of the type systems such as Haskell, O'Caml, etc, and are used to great effect in writing very concise code that enjoys many safety and correctness properties. The types themselves have also been adopted by the majority of statically typed JVM languages with varying degrees of completeness: http://io7m.com/documents/adt-jvm/ An excellent video on how Jane Street use algebraic data types to write software that absolutely must work correctly is Yaron Minsky's Effective ML: https://www.youtube.com/watch?v=DM2hEBwEWPc The section at 18 minutes ("Make illegal states unrepresentable") is where the discussion on these types begins. Currently, almost all of the statically typed alternative JVM languages implement some form of algebraic data types. Languages such as Scala and Frege support them as completely as languages such as Haskell, with full structural pattern matching. Languages such as Kotlin and Ceylon implement a more limited form known as case analysis. There are also numerous library implementations of the types in Java, but they all have various shortcomings due to lacking the required support from both the virtual machine and the Java language itself. I believe that all of the existing languages could benefit from both JVM and Java language support for the types, and I believe that support could be provided with minimal, non-intrusive changes to the virtual machine (an extra piece of class metadata, no new bytecode instructions, a couple of extra syntax rules in the Java language that likely build upon the existing switch statement, and no new keywords). The reason for the additional virtual machine support is that I would hope that sooner or later the various language implementations would standardize on an internal representation for the types so that, for example, a type declared in Kotlin could be used from Java in the same manner that it could be in Kotlin, with the same static guarantees. Currently, each language implements the types using proprietary metadata stored as annotations, the types cannot interoperate properly between languages. The reason for the Java language support is because currently, library implementations of the types have to rely on rather clumsy Visitor-based approaches, and incur a cost in both performance and ease of use. I'm writing to this list because I believe there is significant overlap with the work being done on value types, as algebraic data types are almost always used in a value-typeish context. Naturally, additions to the language and VM will overlap other projects, but I had to start somewhere! I recently wrote a very rough and low-detail proposal in a GitHub comment for a project that is looking to implement yet another generator for pseudo algebraic data types in Java: https://github.com/immutables/immutables/issues/47#issuecomment-221533004 I'm hoping that this can be the starting point for discussion. As with all language proposals: none of the syntax is final and is obviously subject to changes/improvements/outright destruction. Regards, Mark From brian.goetz at oracle.com Thu Jun 9 15:05:04 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 09 Jun 2016 15:05:04 +0000 Subject: hg: valhalla/valhalla/jdk: Migrate interpreter from ASM to JDK ClassFile parser; increase transparency between interpreter and bytecode so as to better support experimental bytecode forms. Message-ID: <201606091505.u59F54Q2024129@aojmv0008.oracle.com> Changeset: cf12b592bf8e Author: briangoetz Date: 2016-06-09 11:04 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/cf12b592bf8e Migrate interpreter from ASM to JDK ClassFile parser; increase transparency between interpreter and bytecode so as to better support experimental bytecode forms. ! interpreter/src/valhalla/interpreter/ClassModel.java ! interpreter/src/valhalla/interpreter/Frame.java + interpreter/src/valhalla/interpreter/Insn.java + interpreter/src/valhalla/interpreter/InternalHelpers.java ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/src/valhalla/interpreter/InterpreterError.java + interpreter/src/valhalla/interpreter/MethodModel.java ! interpreter/src/valhalla/interpreter/OpcodeHandler.java ! interpreter/src/valhalla/interpreter/ProxyClassBuilder.java + interpreter/src/valhalla/interpreter/StandardClassModel.java + interpreter/src/valhalla/interpreter/StandardInterpreter.java + interpreter/src/valhalla/interpreter/StandardMethodModel.java + interpreter/src/valhalla/interpreter/Util.java ! interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper1.java ! interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper3.java ! interpreter/test/valhalla/interpreter/InterpretBootclassTest.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java ! interpreter/test/valhalla/interpreter/ResolveTest.java From brian.goetz at oracle.com Thu Jun 9 16:44:56 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 09 Jun 2016 16:44:56 +0000 Subject: hg: valhalla/valhalla/jdk: Add a Main launcher for the interpreter; Main [ -cp classpath ] [ -trace ] main-class [ args ... ] Message-ID: <201606091644.u59GivuH029907@aojmv0008.oracle.com> Changeset: 786c857536a9 Author: briangoetz Date: 2016-06-09 12:44 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/786c857536a9 Add a Main launcher for the interpreter; Main [ -cp classpath ] [ -trace ] main-class [ args ... ] ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/src/valhalla/interpreter/InterpreterEvent.java + interpreter/src/valhalla/interpreter/Main.java ! interpreter/src/valhalla/interpreter/StandardInterpreter.java ! interpreter/test/valhalla/interpreter/InterpretBootclassTest.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java From brian.goetz at oracle.com Thu Jun 9 18:51:39 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 09 Jun 2016 18:51:39 +0000 Subject: hg: valhalla/valhalla/jdk: More test cases; bugfixes for mismatches where native VM and interpreter had different view of a loaded class. Two failing test cases. Message-ID: <201606091851.u59IpddT014797@aojmv0008.oracle.com> Changeset: 2c3e092e1b5d Author: briangoetz Date: 2016-06-09 14:51 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/2c3e092e1b5d More test cases; bugfixes for mismatches where native VM and interpreter had different view of a loaded class. Two failing test cases. ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/src/valhalla/interpreter/ProxyClassBuilder.java ! interpreter/src/valhalla/interpreter/StandardClassModel.java ! interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper1.java + interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper1a.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java From brian.goetz at oracle.com Thu Jun 9 19:34:28 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 09 Jun 2016 19:34:28 +0000 Subject: hg: valhalla/valhalla/jdk: Don't forget IDE files Message-ID: <201606091934.u59JYS8A000544@aojmv0008.oracle.com> Changeset: 01f5c9ebab50 Author: briangoetz Date: 2016-06-09 15:34 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/01f5c9ebab50 Don't forget IDE files + interpreter/interpreter.iml ! interpreter/src/valhalla/interpreter/ProxyClassBuilder.java From brian.goetz at oracle.com Thu Jun 9 21:04:57 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 09 Jun 2016 21:04:57 +0000 Subject: hg: valhalla/valhalla/jdk: Bugfix: use interpreter class loader instead of default when converting method descriptor strings into MethodType. Failing tests: 1. Message-ID: <201606092104.u59L4vPo003740@aojmv0008.oracle.com> Changeset: 1ba172980186 Author: briangoetz Date: 2016-06-09 17:04 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/1ba172980186 Bugfix: use interpreter class loader instead of default when converting method descriptor strings into MethodType. Failing tests: 1. ! interpreter/src/valhalla/interpreter/Frame.java ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/src/valhalla/interpreter/StandardInterpreter.java ! interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper3.java From brian.goetz at oracle.com Fri Jun 10 02:20:17 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Fri, 10 Jun 2016 02:20:17 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: For final field writes from , use reflection instead of putStatic MH. More logging. More checks that proxy classes are loaded before use. Fixed broken IDE configuration that was causing some classes to be on both the execution and interpretatino class path. More tests. Failing tests: 2. Message-ID: <201606100220.u5A2KHQm012651@aojmv0008.oracle.com> Changeset: f9072be260c9 Author: briangoetz Date: 2016-06-09 22:20 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/f9072be260c9 Interpreter: For final field writes from , use reflection instead of putStatic MH. More logging. More checks that proxy classes are loaded before use. Fixed broken IDE configuration that was causing some classes to be on both the execution and interpretatino class path. More tests. Failing tests: 2. ! interpreter/interpreter.iml ! interpreter/src/valhalla/interpreter/ClassModel.java ! interpreter/src/valhalla/interpreter/InternalHelpers.java ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/src/valhalla/interpreter/InterpreterEvent.java ! interpreter/src/valhalla/interpreter/ProxyClassBuilder.java ! interpreter/src/valhalla/interpreter/StandardMethodModel.java ! interpreter/test-common/test-common.iml ! interpreter/test-helpers/test-helpers.iml ! interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper1.java ! interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper5.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java From john.r.rose at oracle.com Fri Jun 10 07:32:59 2016 From: john.r.rose at oracle.com (john.r.rose at oracle.com) Date: Fri, 10 Jun 2016 07:32:59 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: Repair and simplify method selection logic. Handle native and abstract methods more gracefully. Add test for default method selection. Failing tests: 1 (testEnum). Message-ID: <201606100732.u5A7WxYI016945@aojmv0008.oracle.com> Changeset: 2e69293d5e12 Author: jrose Date: 2016-06-10 00:32 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/2e69293d5e12 Interpreter: Repair and simplify method selection logic. Handle native and abstract methods more gracefully. Add test for default method selection. Failing tests: 1 (testEnum). ! interpreter/src/valhalla/interpreter/InternalHelpers.java ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper1.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java From brian.goetz at oracle.com Fri Jun 10 16:40:40 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Fri, 10 Jun 2016 16:40:40 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: misc cleanups, extend special handling for final field writes to PUTFIELD as well as PUTSTATIC Message-ID: <201606101640.u5AGef6V010615@aojmv0008.oracle.com> Changeset: 5d236453e343 Author: briangoetz Date: 2016-06-10 12:40 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/5d236453e343 Interpreter: misc cleanups, extend special handling for final field writes to PUTFIELD as well as PUTSTATIC ! interpreter/src/valhalla/interpreter/Frame.java ! interpreter/src/valhalla/interpreter/InternalHelpers.java ! interpreter/src/valhalla/interpreter/Interpreter.java + interpreter/test-helpers/test/valhalla/interpreter/ConstructorTestHelper.java - interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper5.java + interpreter/test-helpers/test/valhalla/interpreter/StaticInitTestHelper.java ! interpreter/test/valhalla/interpreter/FrameTest.java ! interpreter/test/valhalla/interpreter/InterpretBootclassTest.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java + interpreter/test/valhalla/interpreter/InterpreterTestCase.java From brian.goetz at oracle.com Fri Jun 10 19:29:59 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Fri, 10 Jun 2016 19:29:59 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: new test cases for arrays. Failing tests: 2 Message-ID: <201606101929.u5AJTxV2024985@aojmv0008.oracle.com> Changeset: 6821244a6e2c Author: briangoetz Date: 2016-06-10 15:29 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/6821244a6e2c Interpreter: new test cases for arrays. Failing tests: 2 ! interpreter/test-helpers/test/valhalla/interpreter/ConstructorTestHelper.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java From org.openjdk at io7m.com Fri Jun 10 19:58:32 2016 From: org.openjdk at io7m.com (org.openjdk at io7m.com) Date: Fri, 10 Jun 2016 19:58:32 +0000 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160607140547.70371716@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> Message-ID: <20160610195832.41ed7957@copperhead.int.arc7.info> On 2016-06-07T14:05:47 +0000 wrote: > > I recently wrote a very rough and low-detail proposal in a GitHub > comment for a project that is looking to implement yet another > generator for pseudo algebraic data types in Java: > Tough crowd. Is noone interested in this? To be clear, I was looking to try to start implementing something myself, and was hoping for discussion on what exactly should be implemented. I've got a fairly clear idea of the semantics of what I'm looking for, but suspected that there'd be overlap with the existing valhalla work (hence the post to this list). Is there a different list I should be approaching first? Mark From brian.goetz at oracle.com Fri Jun 10 23:09:56 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Fri, 10 Jun 2016 23:09:56 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: Special-case dispatch for array clone operations; all tests pass. Message-ID: <201606102309.u5AN9urm018823@aojmv0008.oracle.com> Changeset: 0ce7c64463e2 Author: briangoetz Date: 2016-06-10 19:09 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/0ce7c64463e2 Interpreter: Special-case dispatch for array clone operations; all tests pass. ! interpreter/src/valhalla/interpreter/Interpreter.java From john.r.rose at oracle.com Sat Jun 11 00:49:09 2016 From: john.r.rose at oracle.com (john.r.rose at oracle.com) Date: Sat, 11 Jun 2016 00:49:09 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: simplify workaround for array clone Message-ID: <201606110049.u5B0n9Yp006659@aojmv0008.oracle.com> Changeset: c6766c447aac Author: jrose Date: 2016-06-10 17:49 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/c6766c447aac Interpreter: simplify workaround for array clone ! interpreter/src/valhalla/interpreter/Interpreter.java From brian.goetz at oracle.com Sat Jun 11 01:54:24 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Sat, 11 Jun 2016 01:54:24 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: add (failling) test case for reflection Message-ID: <201606110154.u5B1sPjn006259@aojmv0008.oracle.com> Changeset: 1be991c83c66 Author: briangoetz Date: 2016-06-10 21:54 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/1be991c83c66 Interpreter: add (failling) test case for reflection ! interpreter/src/valhalla/interpreter/ClassModel.java ! interpreter/src/valhalla/interpreter/InternalHelpers.java ! interpreter/src/valhalla/interpreter/Interpreter.java + interpreter/test-helpers/test/valhalla/interpreter/AnnoHelper.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java From john.r.rose at oracle.com Sat Jun 11 02:17:35 2016 From: john.r.rose at oracle.com (John Rose) Date: Fri, 10 Jun 2016 19:17:35 -0700 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160610195832.41ed7957@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> Message-ID: <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> On Jun 10, 2016, at 12:58 PM, org.openjdk at io7m.com wrote: > > On 2016-06-07T14:05:47 +0000 > wrote: >> >> I recently wrote a very rough and low-detail proposal in a GitHub >> comment for a project that is looking to implement yet another >> generator for pseudo algebraic data types in Java: >> > > Tough crowd. Is noone interested in this? > > To be clear, I was looking to try to start implementing something > myself, and was hoping for discussion on what exactly should be > implemented. I've got a fairly clear idea of the semantics of what I'm > looking for, but suspected that there'd be overlap with the existing > valhalla work (hence the post to this list). > > Is there a different list I should be approaching first? We are concentrating on stuff which is probably a prerequisite to doing a good job with ADTs. I like your review (in adt-jvm) of existing attempts to do them on the JVM. To me as a JVM geek the most interesting paragraph was this: > The library implementations of algebraic types in Java all suffer from the same weaknesses due to lack of support two concepts in Java: The ability to make a set of classes closed, and the ability to efficiently select one class from a closed set in O(1) time and without allocating memory. That gives me an idea about how the JVM enhancements we are talking about might play out when ADTs are added. For example, the proposed nestmate mechanism can be used to create small sealed class hierarchies. You make the related classes nestmates, and mark their constructors private. We can also do things to seal interfaces, if we need to. It's all a question of effort, priority, and resource. The O(1) thing is tricky to evaluate. I think the folks who use enums as kind-tags are on the right path there, since enums allow both separate compilation and efficient (O(1)) switching. Elsewhere (note 4) you mention heap allocation as a design constraint, and it's a big one for Java API designs, and even bigger for language feature design. The problem of allocation is one reason we are working on value types first, because successful value types will allow programmers and library designers to say what they mean with values and not worry about GC load. In general, Valhalla is about reducing the number of pointers and objects, in favor of richer APIs involving primitives and inlined structures (values). I think a successful ADT mechanism for Java is a long way off, but I'm glad you and others are thinking about it. Please do think about how it will look on top of Valhalla. Also, do keep thinking about specific, low-level, generic JVM mechanisms that could support ADTs. By "low-level" I mean defined in terms of JVM operations, not language features (of any language), and by "generic" I mean JVM facilities that are logically complete and consistent without reference to a particular application (such as ADTs). For example, sealed JVM types should be definable without reference to ADTs, yet be useful for ADTs and several other use cases. I hope this helps! ? John From john.r.rose at oracle.com Sat Jun 11 07:06:11 2016 From: john.r.rose at oracle.com (john.r.rose at oracle.com) Date: Sat, 11 Jun 2016 07:06:11 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: better processing of caller sensitive and varargs MHs Message-ID: <201606110706.u5B76Bn3026752@aojmv0008.oracle.com> Changeset: 6bfe9ce6659d Author: jrose Date: 2016-06-11 00:06 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/6bfe9ce6659d Interpreter: better processing of caller sensitive and varargs MHs ! interpreter/src/valhalla/interpreter/InternalHelpers.java ! interpreter/src/valhalla/interpreter/Interpreter.java From forax at univ-mlv.fr Sat Jun 11 11:18:40 2016 From: forax at univ-mlv.fr (Remi Forax) Date: Sat, 11 Jun 2016 13:18:40 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> Message-ID: <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> In my opinion, you can breakdown the support of ADT into 3 parts, - definition of a case class - definition of a closed type - pattern matching The first two parts are not very interesting, at least not from the VM point of view, the pattern matching part is in my opinion, the one that is fun. Also note that there are two different semantics for the pattern matching, you have the Scala way, were each case is tested linearly so if a test do a side effect, a further test can see the effect (this semantics is also called predicate dispatching [1]) or you have the "switch on class" semantics where you jump to the right action. At runtime, the best way to implement the later semantics nowadays is to implement a kind of dynamic visitor (a hashmap of lambda), here is a way to implement it in Java [2]. Now, what can be fun in the context of valhalla is to consider the way to define the closed class 'hierarchy' as a kind of specialization, as John said, switching on an integer or an enum value seems the most promising. So an ADT can be seen as a specialization over an integer. interface Expr { } value class Value implements Expr<0> { final int value; } value class Add implements Expr<1> { final Expr left; final Expr right; } static int eval(Expr expr) { switch(K) { case 0: return ((Value)expr).value; case 1: Add add = (Add)expr; return eval(add.left) + eval(add.right); default: throw new AssertionError(); } } because K is reified, there will be two methods eval() at runtime, one specialized for K = 0 and an other for K = 1, which means that the switch will be constant fold (the real 'switch' is done when selecting the specialization). Obviously, one can come with a nice syntax sugar on top of that to avoid users having to number things (enum are better here because they are an indirection on an integer which is better for separate compilation) and insert the cast automatically. cheers, R?mi [1] https://homes.cs.washington.edu/~mernst/pubs/dispatching-ecoop98-abstract.html [2] https://github.com/forax/design-pattern-reloaded/blob/master/src/main/java/visitor/visitor6.java ----- Mail original ----- > De: "John Rose" > ?: "org openjdk" > Cc: valhalla-dev at openjdk.java.net > Envoy?: Samedi 11 Juin 2016 04:17:35 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > On Jun 10, 2016, at 12:58 PM, org.openjdk at io7m.com wrote: > > > > On 2016-06-07T14:05:47 +0000 > > wrote: > >> > >> I recently wrote a very rough and low-detail proposal in a GitHub > >> comment for a project that is looking to implement yet another > >> generator for pseudo algebraic data types in Java: > >> > > > > Tough crowd. Is noone interested in this? > > > > To be clear, I was looking to try to start implementing something > > myself, and was hoping for discussion on what exactly should be > > implemented. I've got a fairly clear idea of the semantics of what I'm > > looking for, but suspected that there'd be overlap with the existing > > valhalla work (hence the post to this list). > > > > Is there a different list I should be approaching first? > > We are concentrating on stuff which is probably a prerequisite to doing a > good job with ADTs. > > I like your review (in adt-jvm) of existing attempts to do them on the JVM. > > To me as a JVM geek the most interesting paragraph was this: > > > The library implementations of algebraic types in Java all suffer from the > > same weaknesses due to lack of support two concepts in Java: The ability > > to make a set of classes closed, and the ability to efficiently select one > > class from a closed set in O(1) time and without allocating memory. > > That gives me an idea about how the JVM enhancements we are talking about > might play out when ADTs are added. > > For example, the proposed nestmate mechanism can be used to create small > sealed class hierarchies. You make the related classes nestmates, and mark > their constructors private. We can also do things to seal interfaces, if we > need to. It's all a question of effort, priority, and resource. > > The O(1) thing is tricky to evaluate. I think the folks who use enums as > kind-tags are on the right path there, since enums allow both separate > compilation and efficient (O(1)) switching. > > Elsewhere (note 4) you mention heap allocation as a design constraint, and > it's a big one for Java API designs, and even bigger for language feature > design. The problem of allocation is one reason we are working on value > types first, because successful value types will allow programmers and > library designers to say what they mean with values and not worry about GC > load. > > In general, Valhalla is about reducing the number of pointers and objects, in > favor of richer APIs involving primitives and inlined structures (values). > > I think a successful ADT mechanism for Java is a long way off, but I'm glad > you and others are thinking about it. Please do think about how it will > look on top of Valhalla. > > Also, do keep thinking about specific, low-level, generic JVM mechanisms that > could support ADTs. By "low-level" I mean defined in terms of JVM > operations, not language features (of any language), and by "generic" I mean > JVM facilities that are logically complete and consistent without reference > to a particular application (such as ADTs). For example, sealed JVM types > should be definable without reference to ADTs, yet be useful for ADTs and > several other use cases. > > I hope this helps! > > ? John From brian.goetz at oracle.com Sat Jun 11 16:24:06 2016 From: brian.goetz at oracle.com (Brian Goetz) Date: Sat, 11 Jun 2016 12:24:06 -0400 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160607140547.70371716@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> Message-ID: <47e82cd2-4c62-c6b2-277e-76e00e477e61@oracle.com> To amplify John's comments -- we are very interested in these topics, but we believe there are some fundamentals that have to be addressed first. No need to dive into great detail about how great case classes / destructuring pattern matches are; we are more than aware :) > I believe that all of the existing languages could benefit from both > JVM and Java language support for the types, and I believe that support > could be provided with minimal, non-intrusive changes to the virtual > machine (an extra piece of class metadata, no new bytecode > instructions, a couple of extra syntax rules in the Java language that > likely build upon the existing switch statement, and no new keywords). By way of setting expectations .... there are no minimal, non-intrusive language or JVM features. Usually, it requires a tremendous amount of work to make a feature merely *seem* less intrusive; consider lambdas, which are "just" function literals -- except making them work required entirely overhauling type inference and method overload selection -- which if done right, no one notices. That said, we're willing to invest in big features -- but as John mentioned, there are some things ahead of this one on the queue, which are probably prerequisites for doing this well. (For example, value types are a prerequisite for useful tuples.) So, with those expectation-settings comments aside, we're interested to see what you come up with, and we encourage you to follow the valhalla discussions to see where we're going. (In particular, I'm interested in hearing what you think the VM is missing for these features.) From org.openjdk at io7m.com Sat Jun 11 17:25:35 2016 From: org.openjdk at io7m.com (org.openjdk at io7m.com) Date: Sat, 11 Jun 2016 17:25:35 +0000 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> Message-ID: <20160611172535.64a5becf@copperhead.int.arc7.info> 'Ello! Responses inline. On 2016-06-10T19:17:35 -0700 John Rose wrote: > > We are concentrating on stuff which is probably a prerequisite to doing a good job with ADTs. Yep, that's good to know. On my end, at least, I would not want to implement something that required all ADTish things to be value types, although 90% of the declarations are likely to be value types. My main concern was in implementing something that was actually compatible with the value type work. Simple example: An ADTish definition would probably have a "sealed abstract" root, but as I understand it, value types must be final. It'd be pretty rough to implement ADTs like that and then find out at the last minute "Oh, you can't actually make them value types!". Can a concrete value class extend another value type? No. (Because concrete value classes are final.) Can a value class be abstract or non-final? No. (Abstract value classes do not presently seem worthwhile.) That seems like a fairly large conflict there... > > I like your review (in adt-jvm) of existing attempts to do them on > the JVM. > > To me as a JVM geek the most interesting paragraph was this: > > > The library implementations of algebraic types in Java all suffer > > from the same weaknesses due to lack of support two concepts in > > Java: The ability to make a set of classes closed, and the ability > > to efficiently select one class from a closed set in O(1) time and > > without allocating memory. > > That gives me an idea about how the JVM enhancements we are talking > about might play out when ADTs are added. > > For example, the proposed nestmate mechanism can be used to create > small sealed class hierarchies. You make the related classes > nestmates, and mark their constructors private. I hadn't heard of nestmates, but a search turned up this: http://mail.openjdk.java.net/pipermail/valhalla-spec-experts/2016-January/000060.html That actually sounds like a much more general form of what I had in mind, and I'm glad it exists! To implement basic case analysis over a type T, I believe you only need access to the immediate children of T. Actual structural pattern matching can be implemented easily using nested case analysis. In other words (again making up syntax on the spot, sorry!): class T { class A extends T { } class B extends T { } class C extends T { class D extends C { } class E extends C { } } } T x; switch (x) { case (A a): { ... } case (B b): { ... } case (C (D d)): { ... } case (C (E e)): { ... } } // would obviously compile down to something like: switch (x) { case (A a): { ... } case (B b): { ... } case (C c): { switch (c) { case (D d): { ... } case (E e): { ... } } } } It's not clear to me from the nestmates proposal if children of a NestTop can also be NestTops (I think this would be needed, or at least another level of indirection would be needed to use the nestmates data directly for implementing matching as shown above). > We can also do things to seal interfaces, if we need to. It's all a > question of effort, priority, and resource. Is there a lot of difference in implementation between sealing interfaces and sealing classes? I don't know the mechanics. Sealed interfaces are definitely something I'd like as they obviously enable the very powerful notion of being able to select types from disjoint categories (making up syntax on the spot): sealed interface T { } sealed interface U { } class A implements T { } class B implements T { } class C implements T, U { } class D implements U { } T x; switch (x) { case (A a): { ... } case (B b): { ... } case (C c): { ... } // case (D d): *compile time error* } U x; switch (x) { // case (A a): *compile time error* // case (B b): *compile time error* case (C c): { ... } case (D d): { ... } } This is something that Scala already implements, so it's at least possible without JVM support (if you don't care that your concept of being sealed doesn't make it into other languages that consume your types), although I've no idea if there are soundness issues as it's been a couple of years since I've touched the language. > The O(1) thing is tricky to evaluate. I think the folks who use enums as kind-tags are on the right path there, since enums allow both separate compilation and efficient (O(1)) switching. Yes, I think so. I was leaning towards basically copying the implementation of enums, until you mentioned nestmates... > Elsewhere (note 4) you mention heap allocation as a design constraint, and it's a big one for Java API designs, and even bigger for language feature design. The problem of allocation is one reason we are working on value types first, because successful value types will allow programmers and library designers to say what they mean with values and not worry about GC load. > > In general, Valhalla is about reducing the number of pointers and objects, in favor of richer APIs involving primitives and inlined structures (values). It does sound quite wonderful. This actually came up in conversation with someone recently, but do you think that lambdas will benefit from this work? It seems that with the combination of escape analysis and value types, you could stack allocate closures. I've spent a good part of two years working on two open-source 3D renderers written in Java. A lot of effort was spent on the second implementation transforming all capturing lambdas to non-capturing forms by threading explicit context parameters through the types. This obviously doesn't work too well if you're trying to use other APIs that use lambdas and that don't provide a means to thread a context value. http://io7m.github.io/r1/ https://github.com/io7m/r2 It would be great if I could move back to capturing lambdas, simplify the API, and not worry about the volume of heap allocations occurred by using lambdas (N * 60) times a second! > Also, do keep thinking about specific, low-level, generic JVM mechanisms that could support ADTs. By "low-level" I mean defined in terms of JVM operations, not language features (of any language), and by "generic" I mean JVM facilities that are logically complete and consistent without reference to a particular application (such as ADTs). For example, sealed JVM types should be definable without reference to ADTs, yet be useful for ADTs and several other use cases. Trust me, I never stop thinking about ADTs. ;) M From org.openjdk at io7m.com Sat Jun 11 17:36:25 2016 From: org.openjdk at io7m.com (org.openjdk at io7m.com) Date: Sat, 11 Jun 2016 17:36:25 +0000 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> Message-ID: <20160611173625.7d9cad4c@copperhead.int.arc7.info> 'Ello! On 2016-06-11T13:18:40 +0200 Remi Forax wrote: > In my opinion, you can breakdown the support of ADT into 3 parts, > - definition of a case class > - definition of a closed type > - pattern matching > > The first two parts are not very interesting, at least not from the VM point of view, the pattern matching part is in my opinion, the one that is fun. > Also note that there are two different semantics for the pattern matching, you have the Scala way, were each case is tested linearly so if a test do a side effect, a further test can see the effect (this semantics is also called predicate dispatching [1]) or you have the "switch on class" semantics where you jump to the right action. Interesting. Is this Scala you're referring to where the tests can have side effects? I'm mainly familiar with that style of linear matching from Haskell and OCaml, where the left hand side is simply a pattern and isn't something that's evaluated. > At runtime, the best way to implement the later semantics nowadays is to implement a kind of dynamic visitor (a hashmap of lambda), > here is a way to implement it in Java [2]. Hah, I've not seen that formulation before. It does have the unfortunate side effect in that you lose exhaustiveness checks. When an extra case is added to Vehicle, the compiler isn't going to tell you that you now need to add an extra method to all of your visitors. The traditional generic visitor approach does give you that property: http://io7m.com/documents/adt-jvm/#genvis Add another subclass to the class being visited, add another case to the visitor type, and now the compiler tells you everywhere in your code where the anonymous visitor instances are now incomplete. > Now, what can be fun in the context of valhalla is to consider the way to define the closed class 'hierarchy' as a kind of specialization, > as John said, switching on an integer or an enum value seems the most promising. So an ADT can be seen as a specialization over an integer. > > interface Expr { > } > value class Value implements Expr<0> { > final int value; > } > value class Add implements Expr<1> { > final Expr left; > final Expr right; > } > > static int eval(Expr expr) { > switch(K) { > case 0: > return ((Value)expr).value; > case 1: > Add add = (Add)expr; > return eval(add.left) + eval(add.right); > default: > throw new AssertionError(); > } > } > > because K is reified, there will be two methods eval() at runtime, one specialized for K = 0 and an other for K = 1, > which means that the switch will be constant fold (the real 'switch' is done when selecting the specialization). I'm intrigued by this. Is the per-value specialization something that's currently implemented? That looks a bit dependently-typed to me... > Obviously, one can come with a nice syntax sugar on top of that to avoid users having to number things (enum are better here because they are an indirection on an integer which is better for separate compilation) and insert the cast automatically. Right! M From org.openjdk at io7m.com Sat Jun 11 17:44:12 2016 From: org.openjdk at io7m.com (org.openjdk at io7m.com) Date: Sat, 11 Jun 2016 17:44:12 +0000 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <47e82cd2-4c62-c6b2-277e-76e00e477e61@oracle.com> References: <20160607140547.70371716@copperhead.int.arc7.info> <47e82cd2-4c62-c6b2-277e-76e00e477e61@oracle.com> Message-ID: <20160611174412.27951100@copperhead.int.arc7.info> 'Ello. On 2016-06-11T12:24:06 -0400 Brian Goetz wrote: > To amplify John's comments -- we are very interested in these topics, > but we believe there are some fundamentals that have to be addressed > first. No need to dive into great detail about how great case classes / > destructuring pattern matches are; we are more than aware :) *AHEM* Yes, they're a serious addiction. > > I believe that all of the existing languages could benefit from both > > JVM and Java language support for the types, and I believe that support > > could be provided with minimal, non-intrusive changes to the virtual > > machine (an extra piece of class metadata, no new bytecode > > instructions, a couple of extra syntax rules in the Java language that > > likely build upon the existing switch statement, and no new keywords). > > By way of setting expectations .... there are no minimal, non-intrusive > language or JVM features. Usually, it requires a tremendous amount of > work to make a feature merely *seem* less intrusive; consider lambdas, > which are "just" function literals -- except making them work required > entirely overhauling type inference and method overload selection -- > which if done right, no one notices. I guess I was just speaking in relative terms. I'd deem intrusive changes to be, for example, new bytecode instructions. The addition of switching on strings, I'd deem as relatively minor (although of course, I may be totally wrong - perhaps it was a nightmare). > That said, we're willing to invest in big features -- but as John > mentioned, there are some things ahead of this one on the queue, which > are probably prerequisites for doing this well. (For example, value > types are a prerequisite for useful tuples.) > > So, with those expectation-settings comments aside, we're interested to > see what you come up with, and we encourage you to follow the valhalla > discussions to see where we're going. (In particular, I'm interested in > hearing what you think the VM is missing for these features.) Yep, will do. I think the bulk of it was being able to specify in class metadata that a class/interface is sealed (perhaps just ACC_SEALED) and that it has a given list of immediate child classes (we don't need to talk about the entire set of descendants of a class, as implementing matching seems to only require going one inheritance step deep at a time). This seems to be covered in a more general form in the nestmates proposal, so maybe I won't actually need to implement much! M From forax at univ-mlv.fr Sat Jun 11 18:40:06 2016 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sat, 11 Jun 2016 20:40:06 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160611173625.7d9cad4c@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <20160611173625.7d9cad4c@copperhead.int.arc7.info> Message-ID: <1808553913.629527.1465670406825.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "org openjdk" > ?: "Remi Forax" , valhalla-dev at openjdk.java.net > Envoy?: Samedi 11 Juin 2016 19:36:25 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > 'Ello! > Hi ! > On 2016-06-11T13:18:40 +0200 > Remi Forax wrote: > > > In my opinion, you can breakdown the support of ADT into 3 parts, > > - definition of a case class > > - definition of a closed type > > - pattern matching > > > > The first two parts are not very interesting, at least not from the VM > > point of view, the pattern matching part is in my opinion, the one that is > > fun. > > Also note that there are two different semantics for the pattern matching, > > you have the Scala way, were each case is tested linearly so if a test do > > a side effect, a further test can see the effect (this semantics is also > > called predicate dispatching [1]) or you have the "switch on class" > > semantics where you jump to the right action. > > Interesting. Is this Scala you're referring to where the tests can have > side effects? I'm mainly familiar with that style of linear matching > from Haskell and OCaml, where the left hand side is simply a pattern > and isn't something that's evaluated. You should take a look to Scala, it's is a JVM language, i.e. it compiles to bytecode and run on the JVM. The matching part is done by invoking a method unapply() on the constructed pattern [1], one goal of Scala (at least in the early days) was to try to implement most of the features of the language as library calls, the unapply() trick fits well that model. The ugly side effect :) of that trick is that you can do side effect when performing the matching. > > > At runtime, the best way to implement the later semantics nowadays is to > > implement a kind of dynamic visitor (a hashmap of lambda), > > here is a way to implement it in Java [2]. > > Hah, I've not seen that formulation before. > > It does have the unfortunate side effect in that you lose > exhaustiveness checks. When an extra case is added to Vehicle, the > compiler isn't going to tell you that you now need to add an extra > method to all of your visitors. The traditional generic visitor > approach does give you that property: > > http://io7m.com/documents/adt-jvm/#genvis > > Add another subclass to the class being visited, add another case to > the visitor type, and now the compiler tells you everywhere in your > code where the anonymous visitor instances are now > incomplete. You can not change the Visitor interface without breaking the backward compatibility, basically, with the Visitor of the Gof book, you can not add a new subclass. That's why i've created this formulation, it lets anyone to create a new subclass, as you said at the expense of loosing the precise type checking of the compiler. BTW, ADT pattern matching and Design Pattern Visitor are dual, it was called the "expression problem" by Philip Wadler (see [2] and [3] for the full story). > > > Now, what can be fun in the context of valhalla is to consider the way to > > define the closed class 'hierarchy' as a kind of specialization, > > as John said, switching on an integer or an enum value seems the most > > promising. So an ADT can be seen as a specialization over an integer. > > > > interface Expr { > > } > > value class Value implements Expr<0> { > > final int value; > > } > > value class Add implements Expr<1> { > > final Expr left; > > final Expr right; > > } > > > > static int eval(Expr expr) { > > switch(K) { > > case 0: > > return ((Value)expr).value; > > case 1: > > Add add = (Add)expr; > > return eval(add.left) + eval(add.right); > > default: > > throw new AssertionError(); > > } > > } > > > > because K is reified, there will be two methods eval() at runtime, one > > specialized for K = 0 and an other for K = 1, > > which means that the switch will be constant fold (the real 'switch' is > > done when selecting the specialization). > > I'm intrigued by this. Is the per-value specialization something that's > currently implemented? That looks a bit dependently-typed to me... It's not currently implemented but i see not reason to not try to (see my talk at the next JVM Summit (if the talk is accepted)). By example, i think that we need something like that if we want to re-implement method handle combiners as a kind of specialization. > > > Obviously, one can come with a nice syntax sugar on top of that to avoid > > users having to number things (enum are better here because they are an > > indirection on an integer which is better for separate compilation) and > > insert the cast automatically. > > Right! > > M > R?mi [1] http://www.scala-lang.org/old/node/112 [2] https://en.wikipedia.org/wiki/Expression_problem [3] http://homepages.inf.ed.ac.uk/wadler/papers/expression/expression.txt From org.openjdk at io7m.com Sat Jun 11 19:34:49 2016 From: org.openjdk at io7m.com (org.openjdk at io7m.com) Date: Sat, 11 Jun 2016 19:34:49 +0000 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <1808553913.629527.1465670406825.JavaMail.zimbra@u-pem.fr> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <20160611173625.7d9cad4c@copperhead.int.arc7.info> <1808553913.629527.1465670406825.JavaMail.zimbra@u-pem.fr> Message-ID: <20160611193449.67aeaf50@copperhead.int.arc7.info> On 2016-06-11T20:40:06 +0200 forax at univ-mlv.fr wrote: > You should take a look to Scala, it's is a JVM language, i.e. it compiles to bytecode and run on the JVM. > The matching part is done by invoking a method unapply() on the constructed pattern [1], one goal of Scala (at least in the early days) was to try to implement most of the features of the language as library calls, the unapply() trick fits well that model. The ugly side effect :) of that trick is that you can do side effect when performing the matching. I'm reasonably familiar with Scala as it was about two years ago. I'd forgotten that matching was implemented like that for patterns. I agree it's ugly, I don't think that's something that's desirable in an implementation of this stuff. > > Add another subclass to the class being visited, add another case to > > the visitor type, and now the compiler tells you everywhere in your > > code where the anonymous visitor instances are now > > incomplete. > > You can not change the Visitor interface without breaking the backward compatibility, > basically, with the Visitor of the Gof book, you can not add a new subclass. > That's why i've created this formulation, it lets anyone to create a new subclass, > as you said at the expense of loosing the precise type checking of the compiler. > > BTW, ADT pattern matching and Design Pattern Visitor are dual, it was called the "expression problem" by Philip Wadler (see [2] and [3] for the full story). I'd argue that that's a feature. For these types, we specifically *want* code to break when their definition is changed in any way: The compiler's telling us "here are all the places in your code that now need to be updated". It's one of the greatest refactoring tools. Code that uses the dynamic approach may retain some form of backwards compatibility due to the fact that it still compiles, but it's now incorrect (because it can't handle the new cases that are now going to be given to it), and the compiler can't help. I'm not actually convinced by Wadler. We're getting somewhat off topic, but I think that he turned something into a problem that actually isn't a problem, and it stems from the idea that code must keep compiling in the face of changes. For the types I define that are conceptually closed, I *want* code to stop compiling when I change them, because it means my program is now incorrect. For the types I define that are conceptually open, I obviously want it to be very difficult to make a change that could cause compilation errors or demand recompilation of existing code. I feel like they're two opposing requirements, both with satisfactory solutions, and that it's not actually a problem. I'm sure we could go on all night! > > > > I'm intrigued by this. Is the per-value specialization something that's > > currently implemented? That looks a bit dependently-typed to me... > > It's not currently implemented but i see not reason to not try to (see my talk at the next JVM Summit (if the talk is accepted)). By example, i think that we need something like that if we want to re-implement method handle combiners as a kind of specialization. I was curious and slightly terrified of the idea that this would allow for the declaration of the classic dependently-typed length-indexed lists in Java, but I see that it doesn't quite work at that level (or at least, I assume it doesn't). M From joe.darcy at oracle.com Sat Jun 11 19:43:24 2016 From: joe.darcy at oracle.com (joe darcy) Date: Sat, 11 Jun 2016 12:43:24 -0700 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160611174412.27951100@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> <47e82cd2-4c62-c6b2-277e-76e00e477e61@oracle.com> <20160611174412.27951100@copperhead.int.arc7.info> Message-ID: <73a52bdc-47d6-23a4-abe5-5baaa49df7bd@oracle.com> On 6/11/2016 10:44 AM, org.openjdk at io7m.com wrote: > 'Ello. > > On 2016-06-11T12:24:06 -0400 > Brian Goetz wrote: > >> To amplify John's comments -- we are very interested in these topics, >> but we believe there are some fundamentals that have to be addressed >> first. No need to dive into great detail about how great case classes / >> destructuring pattern matches are; we are more than aware :) > *AHEM* > > Yes, they're a serious addiction. > >>> I believe that all of the existing languages could benefit from both >>> JVM and Java language support for the types, and I believe that support >>> could be provided with minimal, non-intrusive changes to the virtual >>> machine (an extra piece of class metadata, no new bytecode >>> instructions, a couple of extra syntax rules in the Java language that >>> likely build upon the existing switch statement, and no new keywords). >> By way of setting expectations .... there are no minimal, non-intrusive >> language or JVM features. Usually, it requires a tremendous amount of >> work to make a feature merely *seem* less intrusive; consider lambdas, >> which are "just" function literals -- except making them work required >> entirely overhauling type inference and method overload selection -- >> which if done right, no one notices. > I guess I was just speaking in relative terms. I'd deem intrusive > changes to be, for example, new bytecode instructions. The addition of > switching on strings, I'd deem as relatively minor (although of course, > I may be totally wrong - perhaps it was a nightmare). > FYI, switching on strings in JDK 7 was implemented entirely in javac without any JVM changes needed: "Project Coin: Anatomy of adding strings in switch to javac," https://blogs.oracle.com/darcy/entry/project_coin_string_switch_anatomy Cheers, -Joe From john.r.rose at oracle.com Sat Jun 11 23:02:52 2016 From: john.r.rose at oracle.com (John Rose) Date: Sat, 11 Jun 2016 16:02:52 -0700 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> Message-ID: On Jun 11, 2016, at 4:18 AM, Remi Forax wrote: > because K is reified, there will be two methods eval() at runtime, one specialized for K = 0 and an other for K = 1, > which means that the switch will be constant fold (the real 'switch' is done when selecting the specialization). That is an interesting use case for non-type class template parameters! (The C++ world is full of non-type template parameters; the question there is which small slice of that complexity we might want to adopt.) Even without int-typed or enum-typed template parameters, you could do what you need for ADTs by using enums and a sealed top type. Here's a variation that works today: abstract class Expr { private Expr() {} // sealed hierarchy enum $Kind { k$Value, k$Add }; abstract $Kind $kind(); // direct dispatch hook static final class Value extends Expr { $Kind $kind() { return $Kind.k$Value; } final int value; Value(int value) { this.value = value; } } static final class Add extends Expr { $Kind $kind() { return $Kind.k$Add; } final Expr left; final Expr right; Add(Expr left, Expr right) { this.left = left; this.right = right; } } } class Client { static int eval(Expr expr) { switch(expr.$kind()) { case k$Value: return ((Expr.Value)expr).value; case k$Add: Expr.Add add = (Expr.Add)expr; return eval(add.left) + eval(add.right); default: throw new AssertionError(); } } public static void main(String... av) { System.out.println(eval(new Expr.Add(new Expr.Value(40), new Expr.Value(2)))); // => 42 } } /* Does not compile: Expr bad() { class Bad extends Expr { // error: Expr() has private access in Expr Expr.$Kind $kind() { return Expr.$Kind.k$Value; } } return new Bad(); } */ We will want to give users a way to code such things with values also. But since values can cannot take part in subtype relations abstract classes, the pattern above would have to be reformulated to use wildcards or interfaces. (Abstract classes are pretty old fashioned anyway.) With wildcards, you could have Expr, Expr, and Expr, where Value and Add would be contained in Expr instead of deriving from Expr; all would be values. With interfaces, you'd have Value, Add, and Expr, where Expr is an interface and the others are values. interface Expr { enum $Kind { k$Value, k$Add }; $Kind $kind(); // direct dispatch hook } value class Value implements Expr { $Kind $kind() { return $Kind.k$Value; } final int value; Value(int value) { this.value = value; } } value class Add implements Expr { $Kind $kind() { return $Kind.k$Add; } final Expr left; final Expr right; Add(Expr left, Expr right) { this.left = left; this.right = right; } } In either case you'd want a way to seal the top type against unwanted subtypes (specializations or implementations). Here's a straw man for the interface version. I have zero desire to discuss source code syntax, and a range of options in mind for bytecode syntaxes. A bytecode attribute would be straightforward, but a specially marked pseudo-constructor is also a possibility. __Sealed({Value, Add}) interface Expr { // sealed hierarchy __Sealed({Value, Add}) Expr() {} // empty pseudo-constructor accessible only to two subtypes ? } In all of the sample code above, the use of enums and accessors, instead of lambdas and visitors, is a old fashioned "retro" style. It is exactly analogous to the external iterators of early Java instead of the stream-shaped internal iterators of Java 8. I like to work with the retro external decoding style because it leads to simple bytecode shapes, and can be sugared pretty well (cf. Java extended-for). But in the end we might want to use a more modern lambda-driven style (unapply or some other "morphism"). The main design problem with internal iterators or matchers is they tend to require lots of auxiliary types to express the functional APIs. ? John From brian.goetz at oracle.com Sun Jun 12 00:04:58 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Sun, 12 Jun 2016 00:04:58 +0000 Subject: hg: valhalla/valhalla/jdk: Add ANT file for running tests Message-ID: <201606120004.u5C04wjh007176@aojmv0008.oracle.com> Changeset: 04b3b59f601e Author: briangoetz Date: 2016-06-11 19:59 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/04b3b59f601e Add ANT file for running tests + interpreter/.idea/ant.xml + interpreter/build.xml From forax at univ-mlv.fr Sun Jun 12 00:12:24 2016 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sun, 12 Jun 2016 02:12:24 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> Message-ID: <1695164527.649099.1465690344655.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "John Rose" > ?: "R?mi Forax" > Cc: "org openjdk" , valhalla-dev at openjdk.java.net > Envoy?: Dimanche 12 Juin 2016 01:02:52 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! Hi John, > On Jun 11, 2016, at 4:18 AM, Remi Forax < forax at univ-mlv.fr > wrote: > > because K is reified, there will be two methods eval() at runtime, one > > specialized for K = 0 and an other for K = 1, > > > which means that the switch will be constant fold (the real 'switch' is > > done > > when selecting the specialization). > > That is an interesting use case for non-type class template parameters! Here is another one, class ArrayList { final E[] array; int size; public U> void forEach(U consumer) { for(int i = 0; i < size; i++) { consumer.accept(array[i]); } } } In the snippet above, forEach is specialized by the value of the lambda taken as argument, which is another way to say that he code of forEach and the code of the lambda should be inlined together. > (The C++ world is full of non-type template parameters; the question there is > which small slice of that complexity we might want to adopt.) For now, i would say 'try to come with a specialization mechanism as general as possible' and see if it's possible, a user defined SpecializeDynamic being the ultimate golden hammer (Mj?lnir ?). All the specializations by a value can be implemented by doing constant pool patching (as this is done by unsafe.defineAnonymousClass), but here we don't want the anonymous part (and we don't need the host class access because it's superseded by the nestmate idea). > Even without int-typed or enum-typed template parameters, you could do what > you need for ADTs by using enums and a sealed top type. > Here's a variation that works today: > abstract class Expr { > private Expr() {} // sealed hierarchy > enum $Kind { k$Value, k$Add }; > abstract $Kind $kind(); // direct dispatch hook > static final class Value extends Expr { > $Kind $kind() { return $Kind.k$Value; } > final int value; > Value(int value) { this.value = value; } > } > static final class Add extends Expr { > $Kind $kind() { return $Kind.k$Add; } > final Expr left; > final Expr right; > Add(Expr left, Expr right) { this.left = left; this.right = right; } > } > } > class Client { > static int eval(Expr expr) { > switch(expr.$kind()) { > case k$Value: > return ((Expr.Value)expr).value; > case k$Add: > Expr.Add add = (Expr.Add)expr; > return eval(add.left) + eval(add.right); > default: > throw new AssertionError(); > } > } > public static void main(String... av) { > System.out.println(eval(new Expr.Add(new Expr.Value(40), new > Expr.Value(2)))); // => 42 > } > } > /* Does not compile: > Expr bad() { > class Bad extends Expr { // error: Expr() has private access in Expr > Expr.$Kind $kind() { return Expr.$Kind.k$Value; } > } > return new Bad(); > } > */ yes, but it's less valhalla-ish no :) > We will want to give users a way to code such things with values also. But > since values can cannot take part in subtype relations abstract classes, the > pattern above would have to be reformulated to use wildcards or interfaces. > (Abstract classes are pretty old fashioned anyway.) since we have default method in interface now, designing with a public abstract class is an error, an abstract class is a class so it leaks implementation details. > With wildcards, you could have Expr, Expr, and Expr, where > Value and Add would be contained in Expr instead of deriving from Expr; all > would be values. being an Expr instead of being a subtype of an Expr is important, but i don't know if it's not just for type safety, so it can be a problem for the compiler and not the runtime. > With interfaces, you'd have Value, Add, and Expr, where Expr is an interface > and the others are values. > interface Expr { > enum $Kind { k$Value, k$Add }; > $Kind $kind(); // direct dispatch hook > } > value class Value implements Expr { > $Kind $kind() { return $Kind.k$Value; } > final int value; > Value(int value) { this.value = value; } > } > value class Add implements Expr { > $Kind $kind() { return $Kind.k$Add; } > final Expr left; > final Expr right; > Add(Expr left, Expr right) { this.left = left; this.right = right; } > } > In either case you'd want a way to seal the top type against unwanted > subtypes (specializations or implementations). Here's a straw man for the > interface version. I have zero desire to discuss source code syntax, and a > range of options in mind for bytecode syntaxes. A bytecode attribute would > be straightforward, but a specially marked pseudo-constructor is also a > possibility. > __Sealed({Value, Add}) interface Expr { // sealed hierarchy > __Sealed({Value, Add}) Expr() {} // empty pseudo-constructor accessible only > to two subtypes > ? > } > In all of the sample code above, the use of enums and accessors, instead of > lambdas and visitors, is a old fashioned "retro" style. It is exactly > analogous to the external iterators of early Java instead of the > stream-shaped internal iterators of Java 8. I like to work with the retro > external decoding style because it leads to simple bytecode shapes, and can > be sugared pretty well (cf. Java extended-for). For a human, in term of Java code, the internal iteration is easier to write (at least until we have some ways to define a coroutine or a generator), but it's harder for Hotspot. I want to see that as an implementation issue more than a fundamental rule.If Hotspot was able to not share the profiles between different inline blobs of the same code by c1, then c2 will have less polymorphic/megamorphic callsites to deal with (i beleive that both TurboFan(v8/chrome) and FTL(nitro/safari) doesn't have that issue). > But in the end we might want to use a more modern lambda-driven style > (unapply or some other "morphism"). The main design problem with internal > iterators or matchers is they tend to require lots of auxiliary types to > express the functional APIs. but less functional types means a way to define structural types, no ? > ? John R?mi From john.r.rose at oracle.com Sun Jun 12 01:34:48 2016 From: john.r.rose at oracle.com (John Rose) Date: Sat, 11 Jun 2016 18:34:48 -0700 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <1695164527.649099.1465690344655.JavaMail.zimbra@u-pem.fr> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <1695164527.649099.1465690344655.JavaMail.zimbra@u-pem.fr> Message-ID: <457128F5-FA13-491E-9026-5F8698B3E946@oracle.com> On Jun 11, 2016, at 5:12 PM, forax at univ-mlv.fr wrote: > > > De: "John Rose" > ?: "R?mi Forax" > Cc: "org openjdk" , valhalla-dev at openjdk.java.net > Envoy?: Dimanche 12 Juin 2016 01:02:52 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > Hi John, > >>> On Jun 11, 2016, at 4:18 AM, Remi Forax wrote: >>> >>> because K is reified, there will be two methods eval() at runtime, one specialized for K = 0 and an other for K = 1, >>> which means that the switch will be constant fold (the real 'switch' is done when selecting the specialization). >>> >> That is an interesting use case for non-type class template parameters! >> > Here is another one, > class ArrayList { > final E[] array; > int size; > > public U> void forEach(U consumer) { > for(int i = 0; i < size; i++) { > consumer.accept(array[i]); > } > } > } I think there are two simple ways to interpret your suggestion. One is to split and specialize forEach by concrete consumer *type*, and one is to specialize by consumer *instance*. public <__SpecializePerType U extends Consumer> void forEach(U consumer) { for(int i = 0; i < size; i++) { consumer.accept(array[i]); } } public <__SpecializePerInstanceOf U extends Consumer> void forEach(U consumer) { for(int i = 0; i < size; i++) { consumer.accept(array[i]); } } > In the snippet above, forEach is specialized by the value of the lambda taken as argument, which is another way to say that he code of forEach and the code of the lambda should be inlined together. Yes; function parameters to templates are an important organizing feature for C++ STL algorithms. The sort method is also a good candidate for such treatment. C++ expresses per-type specialization using type parameters and per-instance specialization using non-type parameters. The general problem here is what I call the loop customization problem, which is to code loops once and compile them into enough specialized versions to unlock a desirable level of optimization. The JVM ought to create and maintain a library of specializations of forEach (or sort), one for each significantly different "loop shape syndrome" determined by a specific consumer (or comparator, for sort). A syndrome must specify all the information needed to produce well optimized native code for the algorithm loop, but it should not over-specify details not needed to optimize the loop. For example, the consumer may be packing results into an array; the syndrome should express that fact, but not over-specify by working only for one specific array instance. Should the syndrome specify the exact type of the array? That's an open question. What if the consumer is packing away only those elements that match some filter predicate? In that case the filter predicate is part of the syndrome too, since the loop needs to open-code it. What if it's a bound-checking predicate; should the exact bounds be part of the syndrome? Probably not but that's an open question too. Or, if the collection is has a non-unit stride (into the sink array), should the stride be syndrome or not? Again, more open questions, to be solved by a mixture of static guidance from the programmer and online feedback from profile and type hierarchy. You can see how streams intensify the loop customization problem by mixing together syndrome and non-syndrome data into a single stream; the terminal operation needs to sort it out and select from a repertoire of efficient loop bodies. This is not soluble by lots of inlining (and so it's not exactly what some call the "inlining problem"), because the control flow might spread across multiple threads (for parallel streams). If you use the C++ approach, each function is a distinct syndrome triggering a distinct specialization of the algorithm. I think the STL libraries are organized carefully so that template parameters are *always* used as syndromes, and normal parameters are *never* used as syndromes. This makes sense, but the cost is a static decision between what's shared and what's split for optimization, with a bias towards splitting and code bloat. But in the JVM we like to give the runtime environment a share in decisions about sharing vs. splitting for optimization, so it's a more delicate question. The JVM likes to start with code sharing (even interpretation) and then "ramp up" splitting and optimization where there is clear evidence that the investment makes sense. We get to good loops even though there is no static splitting or optimization. So in the case of List.forEach either formulation of specialization (by type, or by instance) is only an imperfect starting point, if our goal is to get the best loops. In our current setup, we get per-type specialization *if* the provided consumer is a value type. If it's a legacy reference type, we will use erasure. Perhaps the closest we can get in today's draft design space is this: public > void forEach(U consumer) { for(int i = 0; i < size; i++) { consumer.accept(array[i]); } } This would seem to say, "I need a value type which implements the given interface U, please, and I want you to create a specialization for each such type." (To be clear: Such a use of "val" is only a suggestion, not any plan of record. But it does fall out of some of our intensive conversations last month, in which it appears that interfaces may have "val", "ref", and "any" specializations, with respect to their "this" type.) In that case, the JVM has to activate some sort of library mechanism for maintaining specializations of forEach, which is good. Initially, there will be a separate specialization only per *type* of consumer, which will probably capture the presence of a filter predicate (if there is one) but not the nature of the predicate. So this goes a certain way towards defining a syndrome that will solve the loop customization problem, but not all the way. >> (The C++ world is full of non-type template parameters; the question there is which small slice of that complexity we might want to adopt.) > > For now, i would say 'try to come with a specialization mechanism as general as possible' and see if it's possible, > a user defined SpecializeDynamic being the ultimate golden hammer (Mj?lnir ?). > All the specializations by a value can be implemented by doing constant pool patching (as this is done by unsafe.defineAnonymousClass), > but here we don't want the anonymous part (and we don't need the host class access because it's superseded by the nestmate idea). > >> Even without int-typed or enum-typed template parameters, you could do what you need for ADTs by using enums and a sealed top type. >> >> Here's a variation that works today: >> ... > yes, but it's less valhalla-ish no :) Totally. But it's also a heuristic for better code shapes in the Valhalla future. >> We will want to give users a way to code such things with values also. But since values can cannot take part in subtype relations abstract classes, the pattern above would have to be reformulated to use wildcards or interfaces. (Abstract classes are pretty old fashioned anyway.) > since we have default method in interface now, designing with a public abstract class is an error, an abstract class is a class so it leaks implementation details. Yep. An abstract class is not abstract enough, and interfaces are getting concrete enough, by stealing features from abstract classes. Which is why I am toying with the idea of putting pseudo-constructors in interfaces, in order to steal away the ability of a supertype to control its subtypes by restricting access to its "constructor". Why can't an interface have a nullary no-op constructor, just like Object? (We can make it abstract to avoid questions of behavior.) Anyway, abstract classes can seal their subtypes, and that's what I want to steal away from them. >> With wildcards, you could have Expr, Expr, and Expr, where Value and Add would be contained in Expr instead of deriving from Expr; all would be values. > > being an Expr instead of being a subtype of an Expr is important, but i don't know if it's not just for type safety, so it can be a problem for the compiler and not the runtime. Expr becomes a box for either a Value or an Add (but not both, and not anything else). That models the categorical mathematics well enough, and everything else is sugar. (From a certain distance.) > >> With interfaces, you'd have Value, Add, and Expr, where Expr is an interface and the others are values. >> ... >> In all of the sample code above, the use of enums and accessors, instead of lambdas and visitors, is a old fashioned "retro" style. It is exactly analogous to the external iterators of early Java instead of the stream-shaped internal iterators of Java 8. I like to work with the retro external decoding style because it leads to simple bytecode shapes, and can be sugared pretty well (cf. Java extended-for). >> > For a human, in term of Java code, the internal iteration is easier to write (at least until we have some ways to define a coroutine or a generator), but it's harder for Hotspot. Yes. That's why extended-for is such a brilliant bit of sugar. Codes like a catamorphism, JITs like Fortran. (I also look forward to for-comprehensions and "extended-do" some day, but sequential-code monads come after streams, values, and ADTs.) > I want to see that as an implementation issue more than a fundamental rule.If Hotspot was able to not share the profiles between different inline blobs of the same code by c1, then c2 will have less polymorphic/megamorphic callsites to deal with (i beleive that both TurboFan(v8/chrome) and FTL(nitro/safari) doesn't have that issue). That will help, but IMO split profiles are not a full solution, not even an 80% solution. It's too automagic, depending on obscure differences between inlining policies of tiers. The problem is the programmer can't easily predict and control the splits. It will work for demos and benchmarks and when it fails there's no recourse. We need some way to (gently, provisionally) distinguish syndrome from non-syndrome, and point out the points where syndromes have to be baked into customized loops. >> But in the end we might want to use a more modern lambda-driven style (unapply or some other "morphism"). The main design problem with internal iterators or matchers is they tend to require lots of auxiliary types to express the functional APIs. > but less functional types means a way to define structural types, no ? I guess I want to say I think we should reach for both. A "syndrome" as I've been describing it is really a bit of structural typing, and it can "hide" under a simple-looking function or stream. It's like syntax sugar for loops that the JIT expands into simple code. ? John From brian.goetz at oracle.com Sun Jun 12 15:24:29 2016 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 12 Jun 2016 11:24:29 -0400 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160611172535.64a5becf@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <20160611172535.64a5becf@copperhead.int.arc7.info> Message-ID: > Can a concrete value class extend another value type? No. > (Because concrete value classes are final.) > Can a value class be abstract or non-final? No. > (Abstract value classes do not presently seem worthwhile.) > > That seems like a fairly large conflict there... Value types are /*representationally monomorphic*/ but can implement interfaces. So in your example, if T and C are interfaces, you don't have a problem. The motivation for this restriction is simple: this is what lets values "act like an int" -- pass them by value, flatten them into objects and arrays -- all without requiring object headers to be stapled on. > It's not clear to me from the nestmates proposal if children of a > NestTop can also be NestTops (I think this would be needed, or at least > another level of indirection would be needed to use the nestmates data > directly for implementing matching as shown above). A class belongs to exactly one nest; nests form a partition of classes, and therefore enjoy all the nice mathematical properties of partitions (e.g., arbitrary choice of canonical member, etc.) A nest is a means of saying "this group of classes derive from a common accessibility domain." This supports both inner classes (multiple classes defined in a source file can be considered to trust each other) and parameterized classes (List and List can be considered to trust each other.) Nests are not intended to be a general "friend" mechanism; they merely capture (a generalization of) the "derived from a common source unit" notion. > > It does sound quite wonderful. This actually came up in conversation > with someone recently, but do you think that lambdas will benefit from > this work? It seems that with the combination of escape analysis and > value types, you could stack allocate closures. Yes, this is an obvious goal. We were careful to define the semantics of lambda capture to disavow any assumptions of identity, which would allow us to (eventually) represent lambdas as values, including lambdas with captures. The cost difference between stateless and capturing lambdas is entirely an accident of representation, and with a better representation, this can be improved. That said, the hard part of getting here is not the VM mechanics, but how it fits into the type system, and maintaining compatibility with how things work now. From brian.goetz at oracle.com Sun Jun 12 15:46:26 2016 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 12 Jun 2016 11:46:26 -0400 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160611174412.27951100@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> <47e82cd2-4c62-c6b2-277e-76e00e477e61@oracle.com> <20160611174412.27951100@copperhead.int.arc7.info> Message-ID: > I think the bulk of it was being able to specify in class metadata that > a class/interface is sealed (perhaps just ACC_SEALED) and that it has a > given list of immediate child classes (we don't need to talk about the > entire set of descendants of a class, as implementing matching seems > to only require going one inheritance step deep at a time). This > seems to be covered in a more general form in the nestmates proposal, so > maybe I won't actually need to implement much! > > The nestmate proposal doesn't (yet) discuss sealing in detail, but the concept is pretty simple: sealing is a generalization of finality which says "may only be extended by members of the same nest." Since nests will probably map 1:1 to compilation units, this covers most ADT situations pretty cleanly. Extending sealing to interfaces is an additional step, but works the same way -- we have to insert the word "direct" into the rule ("may only be *directly* implemented by members of the same nest".) There are some more details to work out, of course, but this is just to say that nestmates enable sealing in a fairly straightforward way. From vitalyd at gmail.com Sun Jun 12 17:30:21 2016 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Sun, 12 Jun 2016 13:30:21 -0400 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <457128F5-FA13-491E-9026-5F8698B3E946@oracle.com> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <1695164527.649099.1465690344655.JavaMail.zimbra@u-pem.fr> <457128F5-FA13-491E-9026-5F8698B3E946@oracle.com> Message-ID: On Saturday, June 11, 2016, John Rose wrote: > On Jun 11, 2016, at 5:12 PM, forax at univ-mlv.fr wrote: > > > > > > De: "John Rose" > > > ?: "R?mi Forax" > > > Cc: "org openjdk" >, > valhalla-dev at openjdk.java.net > > Envoy?: Dimanche 12 Juin 2016 01:02:52 > > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > Hi John, > > > >>> On Jun 11, 2016, at 4:18 AM, Remi Forax > wrote: > >>> > >>> because K is reified, there will be two methods eval() at runtime, one > specialized for K = 0 and an other for K = 1, > >>> which means that the switch will be constant fold (the real 'switch' > is done when selecting the specialization). > >>> > >> That is an interesting use case for non-type class template parameters! > >> > > Here is another one, > > class ArrayList { > > final E[] array; > > int size; > > > > public U> void forEach(U consumer) { > > for(int i = 0; i < size; i++) { > > consumer.accept(array[i]); > > } > > } > > } > > I think there are two simple ways to interpret your suggestion. One is to > split and specialize forEach by concrete consumer *type*, and one is to > specialize by consumer *instance*. > > public <__SpecializePerType U extends Consumer> void > forEach(U consumer) { > for(int i = 0; i < size; i++) { > consumer.accept(array[i]); > } > } > public <__SpecializePerInstanceOf U extends Consumer> void > forEach(U consumer) { > for(int i = 0; i < size; i++) { > consumer.accept(array[i]); > } > } > > > > In the snippet above, forEach is specialized by the value of the lambda > taken as argument, which is another way to say that he code of forEach and > the code of the lambda should be inlined together. > > Yes; function parameters to templates are an important organizing feature > for C++ STL algorithms. The sort method is also a good candidate for such > treatment. C++ expresses per-type specialization using type parameters and > per-instance specialization using non-type parameters. Goes without saying, but non-type parameters are very useful to propagate constants, possibly quite "far" with sufficient inlining, and open up more optimization opportunities. I'd love something similar in Java. > > The general problem here is what I call the loop customization problem, > which is to code loops once and compile them into enough specialized > versions to unlock a desirable level of optimization. The JVM ought to > create and maintain a library of specializations of forEach (or sort), one > for each significantly different "loop shape syndrome" determined by a > specific consumer (or comparator, for sort). > > A syndrome must specify all the information needed to produce well > optimized native code for the algorithm loop, but it should not > over-specify details not needed to optimize the loop. For example, the > consumer may be packing results into an array; the syndrome should express > that fact, but not over-specify by working only for one specific array > instance. Should the syndrome specify the exact type of the array? That's > an open question. > > What if the consumer is packing away only those elements that match some > filter predicate? In that case the filter predicate is part of the > syndrome too, since the loop needs to open-code it. What if it's a > bound-checking predicate; should the exact bounds be part of the syndrome? > Probably not but that's an open question too. Or, if the collection is has > a non-unit stride (into the sink array), should the stride be syndrome or > not? Again, more open questions, to be solved by a mixture of static > guidance from the programmer and online feedback from profile and type > hierarchy. > > You can see how streams intensify the loop customization problem by mixing > together syndrome and non-syndrome data into a single stream; the terminal > operation needs to sort it out and select from a repertoire of efficient > loop bodies. This is not soluble by lots of inlining (and so it's not > exactly what some call the "inlining problem"), because the control flow > might spread across multiple threads (for parallel streams). Hmm, why would control flow being spread across threads imply this isn't the "inlining problem"? Seems like two orthogonal issues. > > If you use the C++ approach, each function is a distinct syndrome > triggering a distinct specialization of the algorithm. I think the STL > libraries are organized carefully so that template parameters are *always* > used as syndromes, and normal parameters are *never* used as syndromes. > This makes sense, but the cost is a static decision between what's shared > and what's split for optimization, with a bias towards splitting and code > bloat. But in the JVM we like to give the runtime environment a share in > decisions about sharing vs. splitting for optimization, so it's a more > delicate question. The JVM likes to start with code sharing (even > interpretation) and then "ramp up" splitting and optimization where there > is clear evidence that the investment makes sense. We get to good loops > even though there is no static splitting or optimization. The JVM has the advantage of knowing the hot code paths (well, C++ compilers with PGO are similar). Splitting/specializing for those and "incurring code bloat" ought to pay off assuming the splitting/specialization provides more pertinent info to the optimizer (fairly safe assumption for most cases, I think). So what's needed is to embed enough information into the bytecode/metadata such that the JIT can exercise its optionality on splitting/specialization. > > So in the case of List.forEach either formulation of specialization (by > type, or by instance) is only an imperfect starting point, if our goal is > to get the best loops. > > In our current setup, we get per-type specialization *if* the provided > consumer is a value type. If it's a legacy reference type, we will use > erasure. Perhaps the closest we can get in today's draft design space is > this: > > public > void forEach(U consumer) { > for(int i = 0; i < size; i++) { > consumer.accept(array[i]); > } > } > > This would seem to say, "I need a value type which implements the given > interface U, please, and I want you to create a specialization for each > such type." (To be clear: Such a use of "val" is only a suggestion, not > any plan of record. But it does fall out of some of our intensive > conversations last month, in which it appears that interfaces may have > "val", "ref", and "any" specializations, with respect to their "this" type.) Indicating the need/desire for specialization by using value types seems subpar as it's mixing two different concerns. What if my consumer needs to mutate itself upon visiting the elements? Or has some other requirement that makes it unsuitable/undesirable to be a value type? Seems like we'd want a different mechanism to indicate this intent. > > In that case, the JVM has to activate some sort of library mechanism for > maintaining specializations of forEach, which is good. Initially, there > will be a separate specialization only per *type* of consumer, which will > probably capture the presence of a filter predicate (if there is one) but > not the nature of the predicate. So this goes a certain way towards > defining a syndrome that will solve the loop customization problem, but not > all the way. > > >> (The C++ world is full of non-type template parameters; the question > there is which small slice of that complexity we might want to adopt.) > > > > For now, i would say 'try to come with a specialization mechanism as > general as possible' and see if it's possible, > > a user defined SpecializeDynamic being the ultimate golden hammer > (Mj?lnir ?). > > All the specializations by a value can be implemented by doing constant > pool patching (as this is done by unsafe.defineAnonymousClass), > > but here we don't want the anonymous part (and we don't need the host > class access because it's superseded by the nestmate idea). > > > >> Even without int-typed or enum-typed template parameters, you could do > what you need for ADTs by using enums and a sealed top type. > >> > >> Here's a variation that works today: > >> ... > > yes, but it's less valhalla-ish no :) > > Totally. But it's also a heuristic for better code shapes in the Valhalla > future. > > >> We will want to give users a way to code such things with values also. > But since values can cannot take part in subtype relations abstract > classes, the pattern above would have to be reformulated to use wildcards > or interfaces. (Abstract classes are pretty old fashioned anyway.) > > since we have default method in interface now, designing with a public > abstract class is an error, an abstract class is a class so it leaks > implementation details. > > Yep. An abstract class is not abstract enough, and interfaces are getting > concrete enough, by stealing features from abstract classes. Which is why > I am toying with the idea of putting pseudo-constructors in interfaces, in > order to steal away the ability of a supertype to control its subtypes by > restricting access to its "constructor". Why can't an interface have a > nullary no-op constructor, just like Object? (We can make it abstract to > avoid questions of behavior.) Anyway, abstract classes can seal their > subtypes, and that's what I want to steal away from them. Abstract classes still optimize better (eg single impl CHA case) and dispatch quicker (in megamorphic situations). One could define an abstract class with nothing but virtual methods, in which case it doesn't leak any impl details, but just shapes the type topology of implementers. > > >> With wildcards, you could have Expr, Expr, and Expr, > where Value and Add would be contained in Expr instead of deriving from > Expr; all would be values. > > > > being an Expr instead of being a subtype of an Expr is important, but i > don't know if it's not just for type safety, so it can be a problem for the > compiler and not the runtime. > > Expr becomes a box for either a Value or an Add (but not both, and not > anything else). That models the categorical mathematics well enough, and > everything else is sugar. (From a certain distance.) > > > > >> With interfaces, you'd have Value, Add, and Expr, where Expr is an > interface and the others are values. > >> ... > >> In all of the sample code above, the use of enums and accessors, > instead of lambdas and visitors, is a old fashioned "retro" style. It is > exactly analogous to the external iterators of early Java instead of the > stream-shaped internal iterators of Java 8. I like to work with the retro > external decoding style because it leads to simple bytecode shapes, and can > be sugared pretty well (cf. Java extended-for). > >> > > For a human, in term of Java code, the internal iteration is easier to > write (at least until we have some ways to define a coroutine or a > generator), but it's harder for Hotspot. > > Yes. That's why extended-for is such a brilliant bit of sugar. Codes > like a catamorphism, JITs like Fortran. (I also look forward to > for-comprehensions and "extended-do" some day, but sequential-code monads > come after streams, values, and ADTs.) > > > I want to see that as an implementation issue more than a fundamental > rule.If Hotspot was able to not share the profiles between different inline > blobs of the same code by c1, then c2 will have less > polymorphic/megamorphic callsites to deal with (i beleive that both > TurboFan(v8/chrome) and FTL(nitro/safari) doesn't have that issue). > > That will help, but IMO split profiles are not a full solution, not even > an 80% solution. It's too automagic, depending on obscure differences > between inlining policies of tiers. The problem is the programmer can't > easily predict and control the splits. It will work for demos and > benchmarks and when it fails there's no recourse. We need some way to > (gently, provisionally) distinguish syndrome from non-syndrome, and point > out the points where syndromes have to be baked into customized loops. The existing JIT is very automagic as is, why stop now? :) Jokes aside, having more determinism would be great. > > >> But in the end we might want to use a more modern lambda-driven style > (unapply or some other "morphism"). The main design problem with internal > iterators or matchers is they tend to require lots of auxiliary types to > express the functional APIs. > > but less functional types means a way to define structural types, no ? > > I guess I want to say I think we should reach for both. A "syndrome" as > I've been describing it is really a bit of structural typing, and it can > "hide" under a simple-looking function or stream. It's like syntax sugar > for loops that the JIT expands into simple code. > > ? John -- Sent from my phone From forax at univ-mlv.fr Sun Jun 12 18:12:35 2016 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sun, 12 Jun 2016 20:12:35 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <1695164527.649099.1465690344655.JavaMail.zimbra@u-pem.fr> <457128F5-FA13-491E-9026-5F8698B3E946@oracle.com> Message-ID: <1811984641.711432.1465755155021.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "Vitaly Davidovich" > ?: "John Rose" > Cc: "R?mi Forax" , valhalla-dev at openjdk.java.net > Envoy?: Dimanche 12 Juin 2016 19:30:21 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > On Saturday, June 11, 2016, John Rose < john.r.rose at oracle.com > wrote: > > On Jun 11, 2016, at 5:12 PM, forax at univ-mlv.fr wrote: > > > > > > > > > > > > De: "John Rose" < john.r.rose at oracle.com > > > > > ?: "R?mi Forax" < forax at univ-mlv.fr > > > > > Cc: "org openjdk" < org.openjdk at io7m.com >, valhalla-dev at openjdk.java.net > > > > Envoy?: Dimanche 12 Juin 2016 01:02:52 > > > > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > > > Hi John, > > > > > > > >>> On Jun 11, 2016, at 4:18 AM, Remi Forax < forax at univ-mlv.fr > wrote: > > > >>> > > > >>> because K is reified, there will be two methods eval() at runtime, one > > >>> specialized for K = 0 and an other for K = 1, > > > >>> which means that the switch will be constant fold (the real 'switch' is > > >>> done when selecting the specialization). > > > >>> > > > >> That is an interesting use case for non-type class template parameters! > > > >> > > > > Here is another one, > > > > class ArrayList { > > > > final E[] array; > > > > int size; > > > > > > > > public U> void forEach(U consumer) { > > > > for(int i = 0; i < size; i++) { > > > > consumer.accept(array[i]); > > > > } > > > > } > > > > } > > > I think there are two simple ways to interpret your suggestion. One is to > > split and specialize forEach by concrete consumer *type*, and one is to > > specialize by consumer *instance*. > > > public <__SpecializePerType U extends Consumer> void forEach(U > > consumer) { > > > for(int i = 0; i < size; i++) { > > > consumer.accept(array[i]); > > > } > > > } > > > public <__SpecializePerInstanceOf U extends Consumer> void > > forEach(U consumer) { > > > for(int i = 0; i < size; i++) { > > > consumer.accept(array[i]); > > > } > > > } > > > > In the snippet above, forEach is specialized by the value of the lambda > > > taken as argument, which is another way to say that he code of forEach > > > and > > > the code of the lambda should be inlined together. > > > Yes; function parameters to templates are an important organizing feature > > for > > C++ STL algorithms. The sort method is also a good candidate for such > > treatment. C++ expresses per-type specialization using type parameters and > > per-instance specialization using non-type parameters. > > Goes without saying, but non-type parameters are very useful to propagate > constants, possibly quite "far" with sufficient inlining, and open up more > optimization opportunities. I'd love something similar in Java. It remember me that you can 'constantify' everything you want in Java https://gist.github.com/anonymous/7cabe890a28547dad0401dc7883cc4a7 R?mi From vitalyd at gmail.com Sun Jun 12 18:28:45 2016 From: vitalyd at gmail.com (Vitaly Davidovich) Date: Sun, 12 Jun 2016 14:28:45 -0400 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <1811984641.711432.1465755155021.JavaMail.zimbra@u-pem.fr> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <1695164527.649099.1465690344655.JavaMail.zimbra@u-pem.fr> <457128F5-FA13-491E-9026-5F8698B3E946@oracle.com> <1811984641.711432.1465755155021.JavaMail.zimbra@u-pem.fr> Message-ID: How would I use this to, e.g., propagate the length of an instance array as a constant when I'm creating an instance of a class where I know statically the size I want? Assume the CFG terminates before the array length is requested (i.e. the constant used to instantiate the object cannot be propagated itself to its use). On Sunday, June 12, 2016, wrote: > > > ------------------------------ > > *De: *"Vitaly Davidovich" > > *?: *"John Rose" > > *Cc: *"R?mi Forax" >, > valhalla-dev at openjdk.java.net > > *Envoy?: *Dimanche 12 Juin 2016 19:30:21 > *Objet: *Re: Variants/case classes/algebraic data types/sums/oh my! > > > > On Saturday, June 11, 2016, John Rose > wrote: > >> On Jun 11, 2016, at 5:12 PM, forax at univ-mlv.fr >> wrote: >> > >> > >> > De: "John Rose" > >> > ?: "R?mi Forax" > >> > Cc: "org openjdk" >, >> valhalla-dev at openjdk.java.net >> > Envoy?: Dimanche 12 Juin 2016 01:02:52 >> > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! >> > Hi John, >> > >> >>> On Jun 11, 2016, at 4:18 AM, Remi Forax > > wrote: >> >>> >> >>> because K is reified, there will be two methods eval() at runtime, >> one specialized for K = 0 and an other for K = 1, >> >>> which means that the switch will be constant fold (the real 'switch' >> is done when selecting the specialization). >> >>> >> >> That is an interesting use case for non-type class template parameters! >> >> >> > Here is another one, >> > class ArrayList { >> > final E[] array; >> > int size; >> > >> > public U> void forEach(U consumer) { >> > for(int i = 0; i < size; i++) { >> > consumer.accept(array[i]); >> > } >> > } >> > } >> >> I think there are two simple ways to interpret your suggestion. One is >> to split and specialize forEach by concrete consumer *type*, and one is to >> specialize by consumer *instance*. >> >> public <__SpecializePerType U extends Consumer> void >> forEach(U consumer) { >> for(int i = 0; i < size; i++) { >> consumer.accept(array[i]); >> } >> } >> public <__SpecializePerInstanceOf U extends Consumer> void >> forEach(U consumer) { >> for(int i = 0; i < size; i++) { >> consumer.accept(array[i]); >> } >> } >> >> >> > In the snippet above, forEach is specialized by the value of the lambda >> taken as argument, which is another way to say that he code of forEach and >> the code of the lambda should be inlined together. >> >> Yes; function parameters to templates are an important organizing feature >> for C++ STL algorithms. The sort method is also a good candidate for such >> treatment. C++ expresses per-type specialization using type parameters and >> per-instance specialization using non-type parameters. > > Goes without saying, but non-type parameters are very useful to propagate > constants, possibly quite "far" with sufficient inlining, and open up more > optimization opportunities. I'd love something similar in Java. > > > It remember me that you can 'constantify' everything you want in Java > https://gist.github.com/anonymous/7cabe890a28547dad0401dc7883cc4a7 > > R?mi > > -- Sent from my phone From brian.goetz at oracle.com Sun Jun 12 22:39:23 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Sun, 12 Jun 2016 22:39:23 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: Run tests with assertions and system assertions enabled; 2 failures Message-ID: <201606122239.u5CMdO03026373@aojmv0008.oracle.com> Changeset: 546310bd4ee5 Author: briangoetz Date: 2016-06-12 18:39 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/546310bd4ee5 Interpreter: Run tests with assertions and system assertions enabled; 2 failures ! interpreter/build.xml ! interpreter/test-helpers/test/valhalla/interpreter/AnnoHelper.java ! interpreter/test/valhalla/interpreter/InterpreterTest.java From forax at univ-mlv.fr Sun Jun 12 22:50:52 2016 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Mon, 13 Jun 2016 00:50:52 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <457128F5-FA13-491E-9026-5F8698B3E946@oracle.com> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <1695164527.649099.1465690344655.JavaMail.zimbra@u-pem.fr> <457128F5-FA13-491E-9026-5F8698B3E946@oracle.com> Message-ID: <470642265.9429.1465771852549.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "John Rose" > ?: "R?mi Forax" > Cc: "org openjdk" , valhalla-dev at openjdk.java.net > Envoy?: Dimanche 12 Juin 2016 03:34:48 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > On Jun 11, 2016, at 5:12 PM, forax at univ-mlv.fr wrote: > > > > > > De: "John Rose" > > ?: "R?mi Forax" > > Cc: "org openjdk" , valhalla-dev at openjdk.java.net > > Envoy?: Dimanche 12 Juin 2016 01:02:52 > > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > Hi John, > > > >>> On Jun 11, 2016, at 4:18 AM, Remi Forax wrote: > >>> > >>> because K is reified, there will be two methods eval() at runtime, one > >>> specialized for K = 0 and an other for K = 1, > >>> which means that the switch will be constant fold (the real 'switch' is > >>> done when selecting the specialization). > >>> > >> That is an interesting use case for non-type class template parameters! > >> > > Here is another one, > > class ArrayList { > > final E[] array; > > int size; > > > > public U> void forEach(U consumer) { > > for(int i = 0; i < size; i++) { > > consumer.accept(array[i]); > > } > > } > > } > > I think there are two simple ways to interpret your suggestion. One is to > split and specialize forEach by concrete consumer *type*, and one is to > specialize by consumer *instance*. > > public <__SpecializePerType U extends Consumer> void forEach(U > consumer) { > for(int i = 0; i < size; i++) { > consumer.accept(array[i]); > } > } > public <__SpecializePerInstanceOf U extends Consumer> void > forEach(U consumer) { > for(int i = 0; i < size; i++) { > consumer.accept(array[i]); > } > } > I was suggesting the later, hence the U> and not >. > > > In the snippet above, forEach is specialized by the value of the lambda > > taken as argument, which is another way to say that he code of forEach and > > the code of the lambda should be inlined together. > > Yes; function parameters to templates are an important organizing feature for > C++ STL algorithms. The sort method is also a good candidate for such > treatment. C++ expresses per-type specialization using type parameters and > per-instance specialization using non-type parameters. > > The general problem here is what I call the loop customization problem, which > is to code loops once and compile them into enough specialized versions to > unlock a desirable level of optimization. The JVM ought to create and > maintain a library of specializations of forEach (or sort), one for each > significantly different "loop shape syndrome" determined by a specific > consumer (or comparator, for sort). It depends when you do the specialization. If the specialization occurs only at JITing time, not in the interpreter, you don't have to maintain such library, or said differently, the code cache is your library because your unit is a method that inline possibly several specializations. > > A syndrome must specify all the information needed to produce well optimized > native code for the algorithm loop, but it should not over-specify details > not needed to optimize the loop. For example, the consumer may be packing > results into an array; the syndrome should express that fact, but not > over-specify by working only for one specific array instance. Should the > syndrome specify the exact type of the array? That's an open question. > > What if the consumer is packing away only those elements that match some > filter predicate? In that case the filter predicate is part of the syndrome > too, since the loop needs to open-code it. What if it's a bound-checking > predicate; should the exact bounds be part of the syndrome? Probably not > but that's an open question too. Or, if the collection is has a non-unit > stride (into the sink array), should the stride be syndrome or not? Again, > more open questions, to be solved by a mixture of static guidance from the > programmer and online feedback from profile and type hierarchy. > > You can see how streams intensify the loop customization problem by mixing > together syndrome and non-syndrome data into a single stream; the terminal > operation needs to sort it out and select from a repertoire of efficient > loop bodies. This is not soluble by lots of inlining (and so it's not > exactly what some call the "inlining problem"), because the control flow > might spread across multiple threads (for parallel streams). I don't think you need to separate between syndrome and non-syndrome if the specialization occurs only at JIT time. > > If you use the C++ approach, each function is a distinct syndrome triggering > a distinct specialization of the algorithm. I think the STL libraries are > organized carefully so that template parameters are *always* used as > syndromes, and normal parameters are *never* used as syndromes. This makes > sense, but the cost is a static decision between what's shared and what's > split for optimization, with a bias towards splitting and code bloat. But > in the JVM we like to give the runtime environment a share in decisions > about sharing vs. splitting for optimization, so it's a more delicate > question. The JVM likes to start with code sharing (even interpretation) > and then "ramp up" splitting and optimization where there is clear evidence > that the investment makes sense. We get to good loops even though there is > no static splitting or optimization. yes, i fully agree. > > So in the case of List.forEach either formulation of specialization (by type, > or by instance) is only an imperfect starting point, if our goal is to get > the best loops. The goal is to have a user defined way to ask for specialization. As you said the runtime is free to not do any optimizations at all, or the runtime is free to consider the lambda instance as a constant and uses that information to merge the code of the loop with the code of the lambda (at least in the case of the instance specialization). > > In our current setup, we get per-type specialization *if* the provided > consumer is a value type. If it's a legacy reference type, we will use > erasure. Perhaps the closest we can get in today's draft design space is > this: > > public > void forEach(U consumer) { > for(int i = 0; i < size; i++) { > consumer.accept(array[i]); > } > } > > This would seem to say, "I need a value type which implements the given > interface U, please, and I want you to create a specialization for each such > type." (To be clear: Such a use of "val" is only a suggestion, not any > plan of record. But it does fall out of some of our intensive conversations > last month, in which it appears that interfaces may have "val", "ref", and > "any" specializations, with respect to their "this" type.) Ok, here we are talking about specialization per type not specialization per instance. I'm not sure we need that, the VM already does a good job in this area so i fail to see why we need that. > > In that case, the JVM has to activate some sort of library mechanism for > maintaining specializations of forEach, which is good. Initially, there > will be a separate specialization only per *type* of consumer, which will > probably capture the presence of a filter predicate (if there is one) but > not the nature of the predicate. So this goes a certain way towards > defining a syndrome that will solve the loop customization problem, but not > all the way. I really looks like lambda forms to me. I still think that the VM should not try cache several specialization in a kind of template form, it seems an unnecessary step for me. > > >> (The C++ world is full of non-type template parameters; the question there > >> is which small slice of that complexity we might want to adopt.) > > > > For now, i would say 'try to come with a specialization mechanism as > > general as possible' and see if it's possible, > > a user defined SpecializeDynamic being the ultimate golden hammer (Mj?lnir > > ?). > > All the specializations by a value can be implemented by doing constant > > pool patching (as this is done by unsafe.defineAnonymousClass), > > but here we don't want the anonymous part (and we don't need the host class > > access because it's superseded by the nestmate idea). > > > >> Even without int-typed or enum-typed template parameters, you could do > >> what you need for ADTs by using enums and a sealed top type. > >> > >> Here's a variation that works today: > >> ... > > yes, but it's less valhalla-ish no :) > > Totally. But it's also a heuristic for better code shapes in the Valhalla > future. > > >> We will want to give users a way to code such things with values also. > >> But since values can cannot take part in subtype relations abstract > >> classes, the pattern above would have to be reformulated to use wildcards > >> or interfaces. (Abstract classes are pretty old fashioned anyway.) > > since we have default method in interface now, designing with a public > > abstract class is an error, an abstract class is a class so it leaks > > implementation details. > > Yep. An abstract class is not abstract enough, and interfaces are getting > concrete enough, by stealing features from abstract classes. Which is why I > am toying with the idea of putting pseudo-constructors in interfaces, in > order to steal away the ability of a supertype to control its subtypes by > restricting access to its "constructor". Why can't an interface have a > nullary no-op constructor, just like Object? (We can make it abstract to > avoid questions of behavior.) Anyway, abstract classes can seal their > subtypes, and that's what I want to steal away from them. That's true that restricting the access to the constructor of an abstract class is a way to control the hierarchy but i prefer the proposal of Brian, just a supplementary bit in the nestmate description. Adding a constructor to an interface will require to add at least a way to specify package level accessibility and do not solve the problem of finding all the 'subtypes' of a type. > > >> With wildcards, you could have Expr, Expr, and Expr, where > >> Value and Add would be contained in Expr instead of deriving from Expr; > >> all would be values. > > > > being an Expr instead of being a subtype of an Expr is important, but i > > don't know if it's not just for type safety, so it can be a problem for > > the compiler and not the runtime. > > Expr becomes a box for either a Value or an Add (but not both, and not > anything else). That models the categorical mathematics well enough, and > everything else is sugar. (From a certain distance.) > > > > >> With interfaces, you'd have Value, Add, and Expr, where Expr is an > >> interface and the others are values. > >> ... > >> In all of the sample code above, the use of enums and accessors, instead > >> of lambdas and visitors, is a old fashioned "retro" style. It is exactly > >> analogous to the external iterators of early Java instead of the > >> stream-shaped internal iterators of Java 8. I like to work with the > >> retro external decoding style because it leads to simple bytecode shapes, > >> and can be sugared pretty well (cf. Java extended-for). > >> > > For a human, in term of Java code, the internal iteration is easier to > > write (at least until we have some ways to define a coroutine or a > > generator), but it's harder for Hotspot. > > Yes. That's why extended-for is such a brilliant bit of sugar. Codes like a > catamorphism, JITs like Fortran. (I also look forward to for-comprehensions > and "extended-do" some day, but sequential-code monads come after streams, > values, and ADTs.) > > > I want to see that as an implementation issue more than a fundamental > > rule.If Hotspot was able to not share the profiles between different > > inline blobs of the same code by c1, then c2 will have less > > polymorphic/megamorphic callsites to deal with (i beleive that both > > TurboFan(v8/chrome) and FTL(nitro/safari) doesn't have that issue). > > That will help, but IMO split profiles are not a full solution, not even an > 80% solution. It's too automagic, depending on obscure differences between > inlining policies of tiers. The problem is the programmer can't easily > predict and control the splits. It will work for demos and benchmarks and > when it fails there's no recourse. We need some way to (gently, > provisionally) distinguish syndrome from non-syndrome, and point out the > points where syndromes have to be baked into customized loops. yes, maybe. > > >> But in the end we might want to use a more modern lambda-driven style > >> (unapply or some other "morphism"). The main design problem with > >> internal iterators or matchers is they tend to require lots of auxiliary > >> types to express the functional APIs. > > but less functional types means a way to define structural types, no ? > > I guess I want to say I think we should reach for both. A "syndrome" as I've > been describing it is really a bit of structural typing, and it can "hide" > under a simple-looking function or stream. It's like syntax sugar for loops > that the JIT expands into simple code. I still think we do not need a way to describe partially instantiated code at runtime, we obviously need something like this at compile time and i like the typed/TypeVar solution, if we can add something like an InstanceVar and a way to specify arguments of TypeVar/InstanceVar not only for a class but also for a method, i will declare victory :) > > ? John R?mi From asviraspossible at gmail.com Sun Jun 12 22:59:02 2016 From: asviraspossible at gmail.com (Victor Nazarov) Date: Mon, 13 Jun 2016 01:59:02 +0300 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <20160611172535.64a5becf@copperhead.int.arc7.info> Message-ID: 12 ???? 2016 ?. 18:26 ???????????? "Brian Goetz" ???????: > >> >> It does sound quite wonderful. This actually came up in conversation >> with someone recently, but do you think that lambdas will benefit from >> this work? It seems that with the combination of escape analysis and >> value types, you could stack allocate closures. > > > Yes, this is an obvious goal. We were careful to define the semantics of lambda capture to disavow any assumptions of identity, which would allow us to (eventually) represent lambdas as values, including lambdas with captures. The cost difference between stateless and capturing lambdas is entirely an accident of representation, and with a better representation, this can be improved. > > That said, the hard part of getting here is not the VM mechanics, but how it fits into the type system, and maintaining compatibility with how things work now. > > Hi. I'm the author of adt4j[1] library. Following this discussion I'm starting to realise that maybe specialization is the only missing peace for ADT support in Java. If lambdas become values than specialization question becomes really interesting. Is foreach method like below to be automatically specialized for every consumer-lambda argument class MyCollection { public > void forEach(C Consumer) {...}} If specialization is to really work like this than this is enough to provide support for ADTs without any overhead. ADTs can be defined using generic-visitor pattern like this. interface ExprVisitor { R lit(int v); R add(Expr left, Expr right); } class Expr { public , any R> R accept(V visitor);} If accept method is to be specialized for every value-type used as visitor than the only missing feature is language level way to define anonymous value-types like this int eval(Expr expr) { return expr.accept(new value ExprVisitor() { int lit(int n) { return n; } int add(Expr left, Expr right) { return eval(left) + eval(right); } }); } If everything works than such method is known to perform no allocations wich are the main problem with visitor pattern today. -- Victor Nazarov [1] https://github.com/sviperll/adt4j From forax at univ-mlv.fr Sun Jun 12 23:36:00 2016 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Mon, 13 Jun 2016 01:36:00 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160611193449.67aeaf50@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> <20160610195832.41ed7957@copperhead.int.arc7.info> <74CAB979-0F36-413A-9B2F-A7857E436BB5@oracle.com> <1856537015.582674.1465643920915.JavaMail.zimbra@u-pem.fr> <20160611173625.7d9cad4c@copperhead.int.arc7.info> <1808553913.629527.1465670406825.JavaMail.zimbra@u-pem.fr> <20160611193449.67aeaf50@copperhead.int.arc7.info> Message-ID: <1425652434.11371.1465774560064.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "org openjdk" > ?: forax at univ-mlv.fr, valhalla-dev at openjdk.java.net > Envoy?: Samedi 11 Juin 2016 21:34:49 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > On 2016-06-11T20:40:06 +0200 > forax at univ-mlv.fr wrote: > [..] > > > > > > I'm intrigued by this. Is the per-value specialization something that's > > > currently implemented? That looks a bit dependently-typed to me... > > > > It's not currently implemented but i see not reason to not try to (see my > > talk at the next JVM Summit (if the talk is accepted)). By example, i > > think that we need something like that if we want to re-implement method > > handle combiners as a kind of specialization. > > I was curious and slightly terrified of the idea that this would allow > for the declaration of the classic dependently-typed length-indexed > lists in Java, but I see that it doesn't quite work at that level (or > at least, I assume it doesn't). I think you should be able to declare this kind of List, perhaps not in Java the language. It should be even easier than in Haskell because you can dispatch on the wildcard type, something you could not do in Haskell. > > M > > R From rsmogura at icloud.com Mon Jun 13 13:32:11 2016 From: rsmogura at icloud.com (=?utf-8?Q?Rados=C5=82aw_Smogura?=) Date: Mon, 13 Jun 2016 15:32:11 +0200 Subject: Meta-expression for Lambda (capturing Lambda as expressions tree) Message-ID: Dear all, I would like to propose as language extension lambda meta expression, with prototype, which can be found here [1]. A meta expression (expression tree, like in C#, Linq) captures lambda in the syntax tree representing, very closely original source code. The expression can be retrieved at runtime and used to build new programs (typically queries) in order to pass those to external execution engines (SQL, noSQL). Ie, one can write MyTable.asStream().filter(r -> r.paymentDate == null), which can be converted to SQL SELECT * FROM my_table Where r.payment_date is null or to call micro service... GET /my_table?payment_date=null The possibility of retrieving lambda structure will: - increase contract between Java domain and non-Java word, - increase portability of quering code, by providing more unified queuing interface based on stream and Lambda expressions, - simplify developing due to unification of querying API among many libraries and solutions, - reduce amount of hardcoded values, like database columns, query parameters, etc. The prototype which I would like to present is based on JDK 9. With project Jigsaw java.expression module has to be added to class path (linked with JDK), as because of easy-of-development everything is in langtools. Right now it?s possible to store and retrieve simple lambda meta-expression and traverse it with Visitor API (ie. toString() makes it). Despite the fact that prototype is at very early stage and doesn?t allow capturing full language structure it presents one possible approach to storing and retrieving expression trees. Currently, there is product [2] supporting building JPA expressions from lambda. But as it uses automatic reverse engineering, it may not produce adequate results in all situations. Best regards, Radek Smogura [1] https://bitbucket.org/radoslaw_smogura/java-lambda-metaexpression-jdk9-langtools/ [2] http://www.jinq.org/docs/queries.html From maurizio.cimadamore at oracle.com Mon Jun 13 14:29:24 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Mon, 13 Jun 2016 15:29:24 +0100 Subject: Meta-expression for Lambda (capturing Lambda as expressions tree) In-Reply-To: References: Message-ID: <575EC344.6030007@oracle.com> Hi Radoslaw, this mailing list is for discussing the reference implementation of Project Valhalla; I suggest you use a more general mailing list for the discussion of your prototype e.g. compiler-dev at opendjk.java.net Cheers Maurizio On 13/06/16 14:32, Rados?aw Smogura wrote: > Dear all, > > I would like to propose as language extension lambda meta expression, with prototype, which can be found here [1]. > > A meta expression (expression tree, like in C#, Linq) captures lambda in the syntax tree representing, very closely original source code. The expression can be retrieved at runtime and used to build new programs (typically queries) in order to pass those to external execution engines (SQL, noSQL). Ie, one can write > > MyTable.asStream().filter(r -> r.paymentDate == null), > > which can be converted to SQL > > SELECT * FROM my_table Where r.payment_date is null > > or to call micro service... > GET /my_table?payment_date=null > > The possibility of retrieving lambda structure will: > - increase contract between Java domain and non-Java word, > - increase portability of quering code, by providing more unified queuing interface based on stream and Lambda expressions, > - simplify developing due to unification of querying API among many libraries and solutions, > - reduce amount of hardcoded values, like database columns, query parameters, etc. > > The prototype which I would like to present is based on JDK 9. With project Jigsaw java.expression module has to be added to class path (linked with JDK), as because of easy-of-development everything is in langtools. Right now it?s possible to store and retrieve simple lambda meta-expression and traverse it with Visitor API (ie. toString() makes it). > > Despite the fact that prototype is at very early stage and doesn?t allow capturing full language structure it presents one possible approach to storing and retrieving expression trees. > > Currently, there is product [2] supporting building JPA expressions from lambda. But as it uses automatic reverse engineering, it may not produce adequate results in all situations. > > Best regards, > Radek Smogura > [1] https://bitbucket.org/radoslaw_smogura/java-lambda-metaexpression-jdk9-langtools/ > [2] http://www.jinq.org/docs/queries.html > From brian.goetz at oracle.com Mon Jun 13 21:51:42 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Mon, 13 Jun 2016 21:51:42 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: Don't try to support reflective invocation of interpreted constructors from native; this allows us to turn back on verification, which found some codegen bugs. Failing tests: 2. Message-ID: <201606132151.u5DLpgs5026339@aojmv0008.oracle.com> Changeset: 00da8e787d47 Author: briangoetz Date: 2016-06-13 17:51 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/00da8e787d47 Interpreter: Don't try to support reflective invocation of interpreted constructors from native; this allows us to turn back on verification, which found some codegen bugs. Failing tests: 2. ! interpreter/build.xml ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/src/valhalla/interpreter/OpcodeHandler.java ! interpreter/src/valhalla/interpreter/ProxyClassBuilder.java From maurizio.cimadamore at oracle.com Wed Jun 15 17:06:02 2016 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 15 Jun 2016 17:06:02 +0000 Subject: hg: valhalla/valhalla/langtools: Enhancement: add signature attribute support for any type-variables Message-ID: <201606151706.u5FH62qP012475@aojmv0008.oracle.com> Changeset: 515df83430aa Author: mcimadamore Date: 2016-06-15 18:05 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/langtools/rev/515df83430aa Enhancement: add signature attribute support for any type-variables Prepend the special char '^' in front of any type-variable declarations in signature attributes. ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java From maurizio.cimadamore at oracle.com Wed Jun 15 17:08:05 2016 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 15 Jun 2016 17:08:05 +0000 Subject: hg: valhalla/valhalla/jdk: Initial push for RuntimeMirror API Message-ID: <201606151708.u5FH868Q013467@aojmv0008.oracle.com> Changeset: 0f7a9b8602e5 Author: mcimadamore Date: 2016-06-15 18:07 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/0f7a9b8602e5 Initial push for RuntimeMirror API * add support for any type-variables in signature attributes * add initial API, reference implementation and tests * comment some debugging statements in URLClassLoader ! src/java.base/share/classes/java/lang/reflect/TypeVariable.java ! src/java.base/share/classes/java/net/URLClassLoader.java ! src/java.base/share/classes/sun/reflect/generics/factory/CoreReflectionFactory.java ! src/java.base/share/classes/sun/reflect/generics/factory/GenericsFactory.java ! src/java.base/share/classes/sun/reflect/generics/parser/SignatureParser.java ! src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/TypeVariableImpl.java ! src/java.base/share/classes/sun/reflect/generics/tree/BaseType.java ! src/java.base/share/classes/sun/reflect/generics/tree/FormalTypeParameter.java ! src/java.base/share/classes/sun/reflect/generics/visitor/Reifier.java ! src/java.base/share/classes/valhalla/classdyn/ClassDynHelper.java + src/java.base/share/classes/valhalla/reflect/runtime/ArrayMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/ClassLookup.java + src/java.base/share/classes/valhalla/reflect/runtime/ClassMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/ConstructorLookup.java + src/java.base/share/classes/valhalla/reflect/runtime/ConstructorMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/FieldLookup.java + src/java.base/share/classes/valhalla/reflect/runtime/FieldMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/GenericMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/MemberLookup.java + src/java.base/share/classes/valhalla/reflect/runtime/MemberMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/MethodLookup.java + src/java.base/share/classes/valhalla/reflect/runtime/MethodMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/MirrorFactory.java + src/java.base/share/classes/valhalla/reflect/runtime/ReflectableMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/RuntimeMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/ScopeMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/TypeVariableMirror.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/AbstractLookupImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/AbstractMemberMirrorImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/ArrayMirrorImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/ClassMirrorImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/DelegatedMirrorImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/MirrorFactoryImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/MirrorUtils.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/TypeArgumentMirrorImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/impl/TypeVariableMirrorImpl.java + src/java.base/share/classes/valhalla/reflect/runtime/package-info.java + test/valhalla/test/valhalla/reflect/runtime/MirrorBuilder.java + test/valhalla/test/valhalla/reflect/runtime/SimpleReflectionTest.java + test/valhalla/test/valhalla/reflect/runtime/TestBase.java + test/valhalla/test/valhalla/reflect/runtime/TestFactory.java + test/valhalla/test/valhalla/reflect/runtime/TestLookup.java + test/valhalla/test/valhalla/reflect/runtime/TestSubtypeOf.java + test/valhalla/test/valhalla/reflect/runtime/TestTypeEquals.java From maurizio.cimadamore at oracle.com Wed Jun 15 17:19:34 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Wed, 15 Jun 2016 18:19:34 +0100 Subject: Valhalla reflection API - first stab Message-ID: <57618E26.6080704@oracle.com> Hi, I've just pushed a new Valhalla-centric reflection API; the main goal of this API is to allow programmers to reflect over the contents of the new generic classfile, as well as to programmatically create class/method parameterizations and perform dynamic operations (method calls, field access). More information about this API can be found at in the javadoc of the root of the hierarchy - available here: http://cr.openjdk.java.net/~mcimadamore/x-reflection/valhalla/reflect/runtime/RuntimeMirror.html There's also a pretty comprehensive end to end test showcasing many of the API features: http://hg.openjdk.java.net/valhalla/valhalla/jdk/file/0f7a9b8602e5/test/valhalla/test/valhalla/reflect/runtime/SimpleReflectionTest.java Note: this is just an initial API round/prototype. As such we didn't put too much effort on things like naming conventions etc. and we focussed instead on the set of features we would like this new API to have. We are obviously interested of any usability issue/bugs you encounter when using/learning this API! Cheers Maurizio From pbenedict at apache.org Wed Jun 15 17:55:39 2016 From: pbenedict at apache.org (Paul Benedict) Date: Wed, 15 Jun 2016 12:55:39 -0500 Subject: ArrayMirror Message-ID: I have a question pertaining to ArrayMirror and why it was modeled as it is. In the current JLS [1], an array is a subclass of Object. Given that int is a value, and int[] is an Object, is Box a value and Box[] an Object too? Presuming that analogy holds true with Valhalla, why not model an array as a ClassMirror with an isArray() member? Better yet, with Arrayish coming down the pike with T acting as the component type, ClassMirror could be sufficient in itself -- without isArray() -- and ArrayMirror could be dispensed with. [1] http://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.8 Cheers, Paul On Wed, Jun 15, 2016 at 12:19 PM, Maurizio Cimadamore < maurizio.cimadamore at oracle.com> wrote: > Hi, > I've just pushed a new Valhalla-centric reflection API; the main goal of > this API is to allow programmers to reflect over the contents of the new > generic classfile, as well as to programmatically create class/method > parameterizations and perform dynamic operations (method calls, field > access). More information about this API can be found at in the javadoc of > the root of the hierarchy - available here: > > > http://cr.openjdk.java.net/~mcimadamore/x-reflection/valhalla/reflect/runtime/RuntimeMirror.html > > There's also a pretty comprehensive end to end test showcasing many of the > API features: > > > http://hg.openjdk.java.net/valhalla/valhalla/jdk/file/0f7a9b8602e5/test/valhalla/test/valhalla/reflect/runtime/SimpleReflectionTest.java > > Note: this is just an initial API round/prototype. As such we didn't put > too much effort on things like naming conventions etc. and we focussed > instead on the set of features we would like this new API to have. > > We are obviously interested of any usability issue/bugs you encounter when > using/learning this API! > > Cheers > Maurizio > > From brian.goetz at oracle.com Wed Jun 15 18:04:37 2016 From: brian.goetz at oracle.com (Brian Goetz) Date: Wed, 15 Jun 2016 14:04:37 -0400 Subject: ArrayMirror In-Reply-To: References: Message-ID: <179a84c7-cca5-7d2e-770b-5b0fafb623d7@oracle.com> The short answer is: this is a first cut, and we had to pick one way or the other just to have something concrete -- and if we had done it the other way, someone probably would have written the exact same mail asking "Why did you not have a separate ArrayMirror". The reality is that neither choice is great; it's a classic "lumping vs splitting" choice, and this one is pretty close to 50/50, meaning that whichever way you go, there's a good argument to go the other way. We erred on the side of "splitting over lumping" in this first cut, because that approach tends to be better at disclosing latent issues than the opposite, but don't make any assumptions about how things will look in the end based on this first cut. Our interest at this point is to give people a chance to explore the usability and expressiveness of the API. On 6/15/2016 1:55 PM, Paul Benedict wrote: > I have a question pertaining to ArrayMirror and why it was modeled as it is. > > In the current JLS [1], an array is a subclass of Object. Given that int is > a value, and int[] is an Object, is Box a value and Box[] an > Object too? > > Presuming that analogy holds true with Valhalla, why not model an array as > a ClassMirror with an isArray() member? Better yet, with Arrayish coming > down the pike with T acting as the component type, ClassMirror could be > sufficient in itself -- without isArray() -- and ArrayMirror could be > dispensed with. > > [1] http://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.8 > > Cheers, > Paul > > On Wed, Jun 15, 2016 at 12:19 PM, Maurizio Cimadamore < > maurizio.cimadamore at oracle.com> wrote: > >> Hi, >> I've just pushed a new Valhalla-centric reflection API; the main goal of >> this API is to allow programmers to reflect over the contents of the new >> generic classfile, as well as to programmatically create class/method >> parameterizations and perform dynamic operations (method calls, field >> access). More information about this API can be found at in the javadoc of >> the root of the hierarchy - available here: >> >> >> http://cr.openjdk.java.net/~mcimadamore/x-reflection/valhalla/reflect/runtime/RuntimeMirror.html >> >> There's also a pretty comprehensive end to end test showcasing many of the >> API features: >> >> >> http://hg.openjdk.java.net/valhalla/valhalla/jdk/file/0f7a9b8602e5/test/valhalla/test/valhalla/reflect/runtime/SimpleReflectionTest.java >> >> Note: this is just an initial API round/prototype. As such we didn't put >> too much effort on things like naming conventions etc. and we focussed >> instead on the set of features we would like this new API to have. >> >> We are obviously interested of any usability issue/bugs you encounter when >> using/learning this API! >> >> Cheers >> Maurizio >> >> From pbenedict at apache.org Wed Jun 15 18:25:32 2016 From: pbenedict at apache.org (Paul Benedict) Date: Wed, 15 Jun 2016 13:25:32 -0500 Subject: ArrayMirror In-Reply-To: <179a84c7-cca5-7d2e-770b-5b0fafb623d7@oracle.com> References: <179a84c7-cca5-7d2e-770b-5b0fafb623d7@oracle.com> Message-ID: Yeah, that sounds reasonable to me. Also, great work on this first cut. It's very exciting to these features. Kudos to you and Maurizio and whoever else is working on this project. Cheers, Paul On Wed, Jun 15, 2016 at 1:04 PM, Brian Goetz wrote: > The short answer is: this is a first cut, and we had to pick one way or > the other just to have something concrete -- and if we had done it the > other way, someone probably would have written the exact same mail asking > "Why did you not have a separate ArrayMirror". > > The reality is that neither choice is great; it's a classic "lumping vs > splitting" choice, and this one is pretty close to 50/50, meaning that > whichever way you go, there's a good argument to go the other way. > > We erred on the side of "splitting over lumping" in this first cut, > because that approach tends to be better at disclosing latent issues than > the opposite, but don't make any assumptions about how things will look in > the end based on this first cut. > > Our interest at this point is to give people a chance to explore the > usability and expressiveness of the API. > > > > > On 6/15/2016 1:55 PM, Paul Benedict wrote: > >> I have a question pertaining to ArrayMirror and why it was modeled as it >> is. >> >> In the current JLS [1], an array is a subclass of Object. Given that int >> is >> a value, and int[] is an Object, is Box a value and Box[] an >> Object too? >> >> Presuming that analogy holds true with Valhalla, why not model an array as >> a ClassMirror with an isArray() member? Better yet, with Arrayish >> coming >> down the pike with T acting as the component type, ClassMirror could be >> sufficient in itself -- without isArray() -- and ArrayMirror could be >> dispensed with. >> >> [1] http://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.8 >> >> Cheers, >> Paul >> >> On Wed, Jun 15, 2016 at 12:19 PM, Maurizio Cimadamore < >> maurizio.cimadamore at oracle.com> wrote: >> >> Hi, >>> I've just pushed a new Valhalla-centric reflection API; the main goal of >>> this API is to allow programmers to reflect over the contents of the new >>> generic classfile, as well as to programmatically create class/method >>> parameterizations and perform dynamic operations (method calls, field >>> access). More information about this API can be found at in the javadoc >>> of >>> the root of the hierarchy - available here: >>> >>> >>> >>> http://cr.openjdk.java.net/~mcimadamore/x-reflection/valhalla/reflect/runtime/RuntimeMirror.html >>> >>> There's also a pretty comprehensive end to end test showcasing many of >>> the >>> API features: >>> >>> >>> >>> http://hg.openjdk.java.net/valhalla/valhalla/jdk/file/0f7a9b8602e5/test/valhalla/test/valhalla/reflect/runtime/SimpleReflectionTest.java >>> >>> Note: this is just an initial API round/prototype. As such we didn't put >>> too much effort on things like naming conventions etc. and we focussed >>> instead on the set of features we would like this new API to have. >>> >>> We are obviously interested of any usability issue/bugs you encounter >>> when >>> using/learning this API! >>> >>> Cheers >>> Maurizio >>> >>> >>> > From brian.goetz at oracle.com Thu Jun 16 18:59:20 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 16 Jun 2016 18:59:20 +0000 Subject: hg: valhalla/valhalla/jdk: Interpreter: more reduction on ASM-dependence -- parse method signatures directly rather than using Type. Message-ID: <201606161859.u5GIxKHf004042@aojmv0008.oracle.com> Changeset: 7e5201fad2a2 Author: briangoetz Date: 2016-06-16 14:59 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/7e5201fad2a2 Interpreter: more reduction on ASM-dependence -- parse method signatures directly rather than using Type. ! interpreter/build.xml ! interpreter/src/valhalla/interpreter/Frame.java ! interpreter/src/valhalla/interpreter/Interpreter.java ! interpreter/src/valhalla/interpreter/StandardInterpreter.java From forax at univ-mlv.fr Fri Jun 17 13:43:23 2016 From: forax at univ-mlv.fr (Remi Forax) Date: Fri, 17 Jun 2016 15:43:23 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <20160607140547.70371716@copperhead.int.arc7.info> References: <20160607140547.70371716@copperhead.int.arc7.info> Message-ID: <2140280524.432865.1466171003654.JavaMail.zimbra@u-pem.fr> Thinking a little bit more about that ... I we want to represent something like this, Expr = Value(int value) | Add(Expr left, Expr right) instead of using an interface wich is wrong because we want Value and Add to be Exprs and not subtypes of Expr, we can use the __Where clause to disambiguate between the Add and the Value. // for the compiler, Value and Add are seen as specialization (species) of Expr: typedef Add=Expr typedef Value=Expr typedef Expr=Expr // and for the VM: sealed enum ExprKind { VALUE, ADD } public class Expr { __Where(K == VALUE) final int value; __Where(K == ADD) final Expr left, Expr right; __Where(K == VALUE) public Expr(int value) { this.value = value; } __Where(K == ADD) public Expr(Expr left, Expr right) { this.left = left; this.right = right; } __Where(K == VALUE) public int eval() { return value; } __Where(K == ADD) public int eval() { return left.eval() + right.eval(); } } left.eval() which is typed as Expr.eval() is sound because ExprKind is sealed and eval() is defined on both specialization (both species). cheers, R?mi ----- Mail original ----- > De: "org openjdk" > ?: valhalla-dev at openjdk.java.net > Envoy?: Mardi 7 Juin 2016 16:05:47 > Objet: Variants/case classes/algebraic data types/sums/oh my! > > Hello! > > As a Java developer with a background in functional programming and > type systems, I often (which is to say, more or less constantly) find > myself writing emulations of algebraic data types to solve day-to-day > problems in all of my Java projects. > > For those that don't know what an algebraic data type is, you may > possibly know them by one of the other names often used: > > * Variant types > * Case classes (from Scala, Kotlin, Ceylon, etc) > * Sum types (a term more common in literature than languages) > > For those that still don't know them, I have a somewhat old article > here aimed at Java programmers that will probably serve as a reasonable > introduction: > > http://io7m.com/documents/ccat/ > > I won't spend a great deal of time advocating for their use here. > Suffices to say that they are a very fundamental part of the type > systems such as Haskell, O'Caml, etc, and are used to great effect in > writing very concise code that enjoys many safety and correctness > properties. The types themselves have also been adopted by the majority > of statically typed JVM languages with varying degrees of completeness: > > http://io7m.com/documents/adt-jvm/ > > An excellent video on how Jane Street use algebraic data types to write > software that absolutely must work correctly is Yaron Minsky's > Effective ML: > > https://www.youtube.com/watch?v=DM2hEBwEWPc > > The section at 18 minutes ("Make illegal states unrepresentable") is > where the discussion on these types begins. > > Currently, almost all of the statically typed alternative JVM languages > implement some form of algebraic data types. Languages such as Scala > and Frege support them as completely as languages such as Haskell, with > full structural pattern matching. Languages such as Kotlin and Ceylon > implement a more limited form known as case analysis. > > There are also numerous library implementations of the types in Java, > but they all have various shortcomings due to lacking the required > support from both the virtual machine and the Java language itself. > > I believe that all of the existing languages could benefit from both > JVM and Java language support for the types, and I believe that support > could be provided with minimal, non-intrusive changes to the virtual > machine (an extra piece of class metadata, no new bytecode > instructions, a couple of extra syntax rules in the Java language that > likely build upon the existing switch statement, and no new keywords). > > The reason for the additional virtual machine support is that I would > hope that sooner or later the various language implementations would > standardize on an internal representation for the types so that, for > example, a type declared in Kotlin could be used from Java in the same > manner that it could be in Kotlin, with the same static guarantees. > Currently, each language implements the types using proprietary > metadata stored as annotations, the types cannot interoperate properly > between languages. > > The reason for the Java language support is because currently, library > implementations of the types have to rely on rather clumsy Visitor-based > approaches, and incur a cost in both performance and ease of use. > > I'm writing to this list because I believe there is significant overlap > with the work being done on value types, as algebraic data types are > almost always used in a value-typeish context. Naturally, additions to > the language and VM will overlap other projects, but I had to start > somewhere! > > I recently wrote a very rough and low-detail proposal in a GitHub > comment for a project that is looking to implement yet another > generator for pseudo algebraic data types in Java: > > https://github.com/immutables/immutables/issues/47#issuecomment-221533004 > > I'm hoping that this can be the starting point for discussion. As with > all language proposals: none of the syntax is final and is obviously > subject to changes/improvements/outright destruction. > > Regards, > Mark > From org.openjdk at io7m.com Fri Jun 17 17:12:52 2016 From: org.openjdk at io7m.com (org.openjdk at io7m.com) Date: Fri, 17 Jun 2016 17:12:52 +0000 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <2140280524.432865.1466171003654.JavaMail.zimbra@u-pem.fr> References: <20160607140547.70371716@copperhead.int.arc7.info> <2140280524.432865.1466171003654.JavaMail.zimbra@u-pem.fr> Message-ID: <20160617171252.7ca3eb43@copperhead.int.arc7.info> On 2016-06-17T15:43:23 +0200 Remi Forax wrote: > Thinking a little bit more about that ... > I we want to represent something like this, > Expr = Value(int value) | Add(Expr left, Expr right) > instead of using an interface wich is wrong because we want Value and Add to be Exprs and not subtypes of Expr, > we can use the __Where clause to disambiguate between the Add and the Value. I think there's some merit to this. As JB Giraudeau pointed out in the original github thread: > btw, another problem of sealed hierarchies, often encountered in > scala, is that they expose subtyping relationships, which often ruin > type inference. I think this is something that anyone coming from Haskell or OCaml has experienced. You write what would be a perfectly reasonable monadic expression and the compiler decides that all of the types are Any and gets upset. M From john.r.rose at oracle.com Fri Jun 17 20:28:01 2016 From: john.r.rose at oracle.com (John Rose) Date: Fri, 17 Jun 2016 13:28:01 -0700 Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <2140280524.432865.1466171003654.JavaMail.zimbra@u-pem.fr> References: <20160607140547.70371716@copperhead.int.arc7.info> <2140280524.432865.1466171003654.JavaMail.zimbra@u-pem.fr> Message-ID: <0A8D09E2-2D1F-4845-BFDF-B95E013ECE69@oracle.com> On Jun 17, 2016, at 6:43 AM, Remi Forax wrote: > > Thinking a little bit more about that ... > I we want to represent something like this, > Expr = Value(int value) | Add(Expr left, Expr right) > instead of using an interface wich is wrong because we want Value and Add to be Exprs and not subtypes of Expr, > we can use the __Where clause to disambiguate between the Add and the Value. > > > // for the compiler, Value and Add are seen as specialization (species) of Expr: > typedef Add=Expr > typedef Value=Expr > typedef Expr=Expr > > // and for the VM: > sealed enum ExprKind { > VALUE, > ADD > } > > public class Expr { > __Where(K == VALUE) final int value; > __Where(K == ADD) final Expr left, Expr right; > > __Where(K == VALUE) public Expr(int value) { this.value = value; } > __Where(K == ADD) public Expr(Expr left, Expr right) { this.left = left; this.right = right; } > > __Where(K == VALUE) public int eval() { return value; } > __Where(K == ADD) public int eval() { return left.eval() + right.eval(); } > } > > left.eval() which is typed as Expr.eval() is sound because ExprKind is sealed and eval() is defined on both specialization (both species). There's lots of scary here, but probably no show-stoppers. I see two hard parts: 1. allow speciation to be parameterized by the enum (as we see here) 2. put intra-species type checking on a better footing The way it looks here (at least on the surface) is you can't type-check (say) Expr(int) unless you can collect all members (switched by where-clauses) that are guaranteed to be present in all species that contain Expr(int). Given the language of where-clauses, that seems to require something like a theorem prover with access to equality predicates (maybe more). I think (and I am independently going to suggest this for the JVM's sake in the class file format) that the problem of theorem-proving be reduced to logic checking, by nominalizing the predicates as named (or numbered) conditions. (In the class file format, there should be a "Conditions" attribute, containing evaluable expressions, and where-clause attributes simply have indexes into the Conditions array.) Something like this at a pseudo-code level: public class Expr { __WhereConditions { V = (K == VALUE), A = (K == ADD) }; __Where(V) final int value; __Where(A) final Expr left, Expr right; __Where(V) public Expr(int value) { this.value = value; } __Where(A) public Expr(Expr left, Expr right) { this.left = left; this.right = right; } __Where(V) public int eval() { return value; } __Where(A) public int eval() { return left.eval() + right.eval(); } } This turns the theorem proving (at load time, at least) into bitmask checking. ? John From forax at univ-mlv.fr Sat Jun 18 22:09:59 2016 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Sun, 19 Jun 2016 00:09:59 +0200 (CEST) Subject: Variants/case classes/algebraic data types/sums/oh my! In-Reply-To: <0A8D09E2-2D1F-4845-BFDF-B95E013ECE69@oracle.com> References: <20160607140547.70371716@copperhead.int.arc7.info> <2140280524.432865.1466171003654.JavaMail.zimbra@u-pem.fr> <0A8D09E2-2D1F-4845-BFDF-B95E013ECE69@oracle.com> Message-ID: <1780818471.1124409.1466287799817.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "John Rose" > ?: "R?mi Forax" > Cc: "org openjdk" , valhalla-dev at openjdk.java.net > Envoy?: Vendredi 17 Juin 2016 22:28:01 > Objet: Re: Variants/case classes/algebraic data types/sums/oh my! > > On Jun 17, 2016, at 6:43 AM, Remi Forax wrote: > > > > Thinking a little bit more about that ... > > I we want to represent something like this, > > Expr = Value(int value) | Add(Expr left, Expr right) > > instead of using an interface wich is wrong because we want Value and Add > > to be Exprs and not subtypes of Expr, > > we can use the __Where clause to disambiguate between the Add and the > > Value. > > > > > > // for the compiler, Value and Add are seen as specialization (species) of > > Expr: > > typedef Add=Expr > > typedef Value=Expr > > typedef Expr=Expr > > > > // and for the VM: > > sealed enum ExprKind { > > VALUE, > > ADD > > } > > > > public class Expr { > > __Where(K == VALUE) final int value; > > __Where(K == ADD) final Expr left, Expr right; > > > > __Where(K == VALUE) public Expr(int value) { this.value = value; } > > __Where(K == ADD) public Expr(Expr left, Expr right) { this.left = > > left; this.right = right; } > > > > __Where(K == VALUE) public int eval() { return value; } > > __Where(K == ADD) public int eval() { return left.eval() + right.eval(); } > > } > > > > left.eval() which is typed as Expr.eval() is sound because ExprKind is > > sealed and eval() is defined on both specialization (both species). > > There's lots of scary here, but probably no show-stoppers. I see two hard > parts: > 1. allow speciation to be parameterized by the enum (as we see here) > 2. put intra-species type checking on a better footing > > The way it looks here (at least on the surface) is you can't type-check (say) > Expr(int) unless you can collect all members (switched by where-clauses) > that are guaranteed to be present in all species that contain Expr(int). > Given the language of where-clauses, that seems to require something like a > theorem prover with access to equality predicates (maybe more). > > I think (and I am independently going to suggest this for the JVM's sake in > the class file format) that the problem of theorem-proving be reduced to > logic checking, by nominalizing the predicates as named (or numbered) > conditions. (In the class file format, there should be a "Conditions" > attribute, containing evaluable expressions, and where-clause attributes > simply have indexes into the Conditions array.) > > Something like this at a pseudo-code level: > > public class Expr { > __WhereConditions { V = (K == VALUE), A = (K == ADD) }; > __Where(V) final int value; > __Where(A) final Expr left, Expr right; > > __Where(V) public Expr(int value) { this.value = value; } > __Where(A) public Expr(Expr left, Expr right) { this.left = left; > this.right = right; } > > __Where(V) public int eval() { return value; } > __Where(A) public int eval() { return left.eval() + right.eval(); } > } > > This turns the theorem proving (at load time, at least) into bitmask > checking. > I wonder if it's not better to de-correlate the type argument and the condition, i.e. where conditions are just numbered and when a specialization is instantiated, the code has to provide type argument and a condition, so the VM doesn't have to run arbitrary code at runtime. > ? John > > R?mi From maurizio.cimadamore at oracle.com Tue Jun 21 14:21:04 2016 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 21 Jun 2016 14:21:04 +0000 Subject: hg: valhalla/valhalla/jdk: 2 new changesets Message-ID: <201606211421.u5LEL4bU006489@aojmv0008.oracle.com> Changeset: 9d95ccabcf78 Author: mcimadamore Date: 2016-06-21 14:36 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/9d95ccabcf78 Fixes to Valhalla reflection API * Fix javadoc in RuntimeTypeMirror to reflect lookup methods more appropriately * Fix mismastch between withInheritanceMode not used consistently by all lookup helpers * replace withFlags with withModifiers * added a getModifiers to MemberMirror ! src/java.base/share/classes/valhalla/reflect/runtime/ClassLookup.java ! src/java.base/share/classes/valhalla/reflect/runtime/ConstructorLookup.java ! src/java.base/share/classes/valhalla/reflect/runtime/FieldLookup.java ! src/java.base/share/classes/valhalla/reflect/runtime/MemberLookup.java ! src/java.base/share/classes/valhalla/reflect/runtime/MemberMirror.java ! src/java.base/share/classes/valhalla/reflect/runtime/MethodLookup.java ! src/java.base/share/classes/valhalla/reflect/runtime/RuntimeMirror.java ! src/java.base/share/classes/valhalla/reflect/runtime/impl/AbstractLookupImpl.java ! src/java.base/share/classes/valhalla/reflect/runtime/impl/AbstractMemberMirrorImpl.java ! src/java.base/share/classes/valhalla/reflect/runtime/impl/ClassMirrorImpl.java ! src/java.base/share/classes/valhalla/reflect/runtime/impl/MirrorFactoryImpl.java ! src/java.base/share/classes/valhalla/reflect/runtime/impl/MirrorUtils.java ! src/java.base/share/classes/valhalla/reflect/runtime/impl/PrimitiveMirrorImpl.java < src/java.base/share/classes/valhalla/reflect/runtime/impl/DelegatedMirrorImpl.java ! test/valhalla/test/valhalla/reflect/runtime/TestLookup.java Changeset: 14f4659703c8 Author: mcimadamore Date: 2016-06-21 14:36 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/14f4659703c8 merge From maurizio.cimadamore at oracle.com Wed Jun 22 16:29:09 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Wed, 22 Jun 2016 17:29:09 +0100 Subject: Valhalla reflection API - first stab In-Reply-To: <57618E26.6080704@oracle.com> References: <57618E26.6080704@oracle.com> Message-ID: <576ABCD5.7030204@oracle.com> Hi, a more detailed document describing the design of this API is being discussed in the EG mailing list: http://mail.openjdk.java.net/pipermail/valhalla-spec-observers/2016-June/000117.html Maurizio On 15/06/16 18:19, Maurizio Cimadamore wrote: > Hi, > I've just pushed a new Valhalla-centric reflection API; the main goal > of this API is to allow programmers to reflect over the contents of > the new generic classfile, as well as to programmatically create > class/method parameterizations and perform dynamic operations (method > calls, field access). More information about this API can be found at > in the javadoc of the root of the hierarchy - available here: > > http://cr.openjdk.java.net/~mcimadamore/x-reflection/valhalla/reflect/runtime/RuntimeMirror.html > > > There's also a pretty comprehensive end to end test showcasing many of > the API features: > > http://hg.openjdk.java.net/valhalla/valhalla/jdk/file/0f7a9b8602e5/test/valhalla/test/valhalla/reflect/runtime/SimpleReflectionTest.java > > > Note: this is just an initial API round/prototype. As such we didn't > put too much effort on things like naming conventions etc. and we > focussed instead on the set of features we would like this new API to > have. > > We are obviously interested of any usability issue/bugs you encounter > when using/learning this API! > > Cheers > Maurizio > From david.simms at oracle.com Tue Jun 28 11:41:24 2016 From: david.simms at oracle.com (david.simms at oracle.com) Date: Tue, 28 Jun 2016 11:41:24 +0000 Subject: hg: valhalla/valhalla/hotspot: 45 new changesets Message-ID: <201606281141.u5SBfPpH012759@aojmv0008.oracle.com> Changeset: f795b6dbfbcb Author: fparain Date: 2015-09-22 07:02 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/f795b6dbfbcb Initial infrastructure for vbytecodes support ! src/cpu/x86/vm/interp_masm_x86.cpp ! src/cpu/x86/vm/interpreterRT_x86.hpp ! src/cpu/x86/vm/interpreterRT_x86_64.cpp ! src/cpu/x86/vm/templateInterpreter_x86_64.cpp ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classFileParser.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/interpreter/abstractInterpreter.hpp ! src/share/vm/interpreter/bytecodeTracer.cpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/interpreter/interpreter.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/linkResolver.cpp ! src/share/vm/interpreter/oopMapCache.cpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/interpreter/templateInterpreter.cpp ! src/share/vm/interpreter/templateInterpreter.hpp ! src/share/vm/interpreter/templateInterpreterGenerator.hpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp ! src/share/vm/oops/constMethod.cpp ! src/share/vm/oops/constMethod.hpp ! src/share/vm/oops/generateOopMap.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/klassVtable.cpp ! src/share/vm/oops/method.cpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/oop.cpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp + src/share/vm/oops/valueKlass.cpp + src/share/vm/oops/valueKlass.hpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jni.h ! src/share/vm/prims/jvm.h ! src/share/vm/runtime/fieldType.cpp ! src/share/vm/runtime/fieldType.hpp ! src/share/vm/runtime/javaCalls.cpp ! src/share/vm/runtime/reflection.cpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/signature.cpp ! src/share/vm/runtime/signature.hpp ! src/share/vm/services/classLoadingService.cpp ! src/share/vm/utilities/accessFlags.hpp ! src/share/vm/utilities/globalDefinitions.cpp ! src/share/vm/utilities/globalDefinitions.hpp Changeset: 2d44cd85750b Author: fparain Date: 2015-10-05 02:01 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/2d44cd85750b Fix oopmap generation for methods containing vbytecodes ! src/cpu/x86/vm/interpreterRT_x86.hpp ! src/cpu/x86/vm/interpreterRT_x86_64.cpp ! src/share/vm/interpreter/oopMapCache.cpp ! src/share/vm/oops/generateOopMap.cpp ! src/share/vm/oops/generateOopMap.hpp ! src/share/vm/prims/jni.cpp ! src/share/vm/runtime/javaCalls.cpp ! src/share/vm/runtime/signature.cpp ! src/share/vm/runtime/signature.hpp Changeset: 9dba458683ef Author: fparain Date: 2015-10-13 01:03 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/9dba458683ef Miscellaneous fixes ! src/cpu/x86/vm/interp_masm_x86.cpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/oops/cpCache.hpp ! src/share/vm/runtime/signature.cpp Changeset: eefe0cebefa8 Author: fparain Date: 2015-10-13 01:04 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/eefe0cebefa8 Add value type support to getfield/putfield/getstatic/putstatic bytecodes ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/oops/instanceKlass.cpp Changeset: 70d329706ea8 Author: fparain Date: 2015-10-13 02:20 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/70d329706ea8 Fix missing include when precompiled header is not used ! src/share/vm/oops/valueKlass.cpp Changeset: 9b67ff34a072 Author: fparain Date: 2015-10-26 07:21 -0700 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/9b67ff34a072 Add flattening to value types inside value types ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classFileParser.hpp ! src/share/vm/classfile/vmSymbols.cpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp ! src/share/vm/oops/cpCache.hpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/oopsHierarchy.hpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/runtime/fieldDescriptor.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/handles.cpp ! src/share/vm/runtime/handles.hpp ! src/share/vm/utilities/globalDefinitions.cpp Changeset: f9207109f239 Author: fparain Date: 2015-11-24 02:22 -0800 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/f9207109f239 Fix instance size check for value types ! src/share/vm/classfile/classFileParser.cpp Changeset: 3e6fbbe3ca83 Author: fparain Date: 2015-12-08 01:14 -0800 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/3e6fbbe3ca83 merge - agent/src/share/classes/sun/jvm/hotspot/compiler/OopMap.java - agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapSet.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1Allocator.java - 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/G1MonitoringSupport.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegion.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionManager.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSetBase.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSetCount.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/PSOldGen.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/PSYoungGen.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/ParallelScavengeHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/shared/ImmutableSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/shared/MutableSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/CollectedHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/CollectedHeapName.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/G1YCType.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/GCCause.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/GCName.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/GCWhen.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/ReferenceType.java - agent/src/share/classes/sun/jvm/hotspot/memory/AdaptiveFreeList.java - agent/src/share/classes/sun/jvm/hotspot/memory/CMSBitMap.java - agent/src/share/classes/sun/jvm/hotspot/memory/CMSCollector.java - agent/src/share/classes/sun/jvm/hotspot/memory/CardGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/ConcurrentMarkSweepGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/ContiguousSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/DefNewGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenCollectedHeap.java - agent/src/share/classes/sun/jvm/hotspot/memory/Generation.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenerationFactory.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenerationIsInClosure.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenerationSpec.java - agent/src/share/classes/sun/jvm/hotspot/memory/LinearAllocBlock.java - agent/src/share/classes/sun/jvm/hotspot/memory/OffsetTableContigSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/ParNewGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/SharedHeap.java - agent/src/share/classes/sun/jvm/hotspot/memory/Space.java - agent/src/share/classes/sun/jvm/hotspot/memory/SpaceClosure.java - agent/src/share/classes/sun/jvm/hotspot/memory/TenuredGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/TenuredSpace.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VirtualSpace.java ! src/cpu/x86/vm/interp_masm_x86.cpp - src/cpu/x86/vm/rtmLocking.cpp ! src/cpu/x86/vm/templateInterpreter_x86_64.cpp ! src/cpu/x86/vm/templateTable_x86.cpp - src/cpu/x86/vm/templateTable_x86_32.hpp - src/cpu/x86/vm/templateTable_x86_64.hpp - src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/bytecode.gif - src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/link.gif - src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/method.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/META-INF/services/com.sun.hotspot.igv.data.services.GroupOrganizer - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/GraphCountGroupOrganizer.java - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/StandardGroupOrganizer.java - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/StructuredViewAction.java - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/diff.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/folder.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/graph.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/import.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/remove.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/removeall.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/save.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/structure.gif - src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/services/GroupOrganizer.java - src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/services/GroupReceiver.java - src/share/tools/IdealGraphVisualizer/Filter/src/META-INF/services/com.sun.hotspot.igv.filter.ScriptEngineAbstraction - src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/JavaSE6ScriptEngine.java - src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/NullScriptEngine.java - src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/ScriptEngineAbstraction.java - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/add.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/delete.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/down.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/minus.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/plus.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/up.gif - src/share/tools/IdealGraphVisualizer/Graph/src/com/sun/hotspot/igv/graph/Source.java - src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/OldHierarchicalLayoutManager.java - src/share/tools/IdealGraphVisualizer/NetworkConnection/src/META-INF/services/com.sun.hotspot.igv.data.services.GroupReceiver - src/share/tools/IdealGraphVisualizer/README - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/build.xml - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/manifest.mf - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/build-impl.xml - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/genfiles.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/project.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/project.xml - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/suite.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/META-INF/services/com.sun.hotspot.igv.filter.ScriptEngineAbstraction - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/Bundle.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/RhinoScriptEngine.java - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/layer.xml - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/META-INF/services/com.sun.hotspot.igv.data.services.GroupOrganizer - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/JavaGroupOrganizer.java - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/combine.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/extendedColor.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/linestyle.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeMemory.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeRootInputs.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeSafepointInputs.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeSelfLoops.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/split.filter - src/share/tools/IdealGraphVisualizer/Settings/src/com/sun/hotspot/igv/settings/settings.gif - src/share/tools/IdealGraphVisualizer/View/src/META-INF/services/com.sun.hotspot.igv.data.services.InputGraphProvider - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/ConnectionAnchor.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/ExtendedPanAction.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/FindPanel.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/PreferenceConstants.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/SlotLayout.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/NodeFindAction.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/export.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/overview.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/search.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/zoomin.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/zoomout.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/DiagramConnectionWidget.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/MultiConnectionWidget.java ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classFileParser.hpp - src/share/vm/classfile/imageFile.cpp - src/share/vm/classfile/imageFile.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/vmSymbols.cpp ! src/share/vm/classfile/vmSymbols.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.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/concurrentMarkSweepGeneration.inline.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp - src/share/vm/gc_implementation/g1/bufferingOopClosure.cpp - src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp - src/share/vm/gc_implementation/g1/collectionSetChooser.cpp - src/share/vm/gc_implementation/g1/collectionSetChooser.hpp - 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/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/concurrentMarkThread.cpp - src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp - src/share/vm/gc_implementation/g1/concurrentMarkThread.inline.hpp - src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp - src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp - src/share/vm/gc_implementation/g1/evacuationInfo.hpp - src/share/vm/gc_implementation/g1/g1AllocRegion.cpp - src/share/vm/gc_implementation/g1/g1AllocRegion.hpp - src/share/vm/gc_implementation/g1/g1AllocRegion.inline.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/g1BiasedArray.cpp - src/share/vm/gc_implementation/g1/g1BiasedArray.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/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/g1CollectedHeap.inline.hpp - src/share/vm/gc_implementation/g1/g1CollectedHeap_ext.cpp - 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/gc_implementation/g1/g1ErgoVerbose.cpp - src/share/vm/gc_implementation/g1/g1ErgoVerbose.hpp - src/share/vm/gc_implementation/g1/g1EvacFailure.cpp - 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/g1HRPrinter.cpp - src/share/vm/gc_implementation/g1/g1HRPrinter.hpp - src/share/vm/gc_implementation/g1/g1HotCardCache.cpp - src/share/vm/gc_implementation/g1/g1HotCardCache.hpp - src/share/vm/gc_implementation/g1/g1InCSetState.hpp - src/share/vm/gc_implementation/g1/g1Log.cpp - src/share/vm/gc_implementation/g1/g1Log.hpp - src/share/vm/gc_implementation/g1/g1MMUTracker.cpp - src/share/vm/gc_implementation/g1/g1MMUTracker.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/g1MonitoringSupport.cpp - src/share/vm/gc_implementation/g1/g1MonitoringSupport.hpp - src/share/vm/gc_implementation/g1/g1OopClosures.cpp - src/share/vm/gc_implementation/g1/g1OopClosures.hpp - src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp - src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp - src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.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/g1RegionToSpaceMapper.cpp - src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.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/g1RemSetSummary.cpp - src/share/vm/gc_implementation/g1/g1RemSetSummary.hpp - src/share/vm/gc_implementation/g1/g1RootProcessor.cpp - src/share/vm/gc_implementation/g1/g1RootProcessor.hpp - src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp - src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp - src/share/vm/gc_implementation/g1/g1StringDedup.cpp - src/share/vm/gc_implementation/g1/g1StringDedup.hpp - src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp - src/share/vm/gc_implementation/g1/g1StringDedupQueue.hpp - src/share/vm/gc_implementation/g1/g1StringDedupStat.cpp - src/share/vm/gc_implementation/g1/g1StringDedupStat.hpp - src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp - src/share/vm/gc_implementation/g1/g1StringDedupTable.hpp - src/share/vm/gc_implementation/g1/g1StringDedupThread.cpp - src/share/vm/gc_implementation/g1/g1StringDedupThread.hpp - src/share/vm/gc_implementation/g1/g1YCTypes.hpp - src/share/vm/gc_implementation/g1/g1_globals.cpp - 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/heapRegion.hpp - src/share/vm/gc_implementation/g1/heapRegion.inline.hpp - src/share/vm/gc_implementation/g1/heapRegionBounds.hpp - src/share/vm/gc_implementation/g1/heapRegionBounds.inline.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/heapRegionRemSet.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/heapRegionType.cpp - src/share/vm/gc_implementation/g1/heapRegionType.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/sparsePRT.hpp - src/share/vm/gc_implementation/g1/survRateGroup.cpp - src/share/vm/gc_implementation/g1/survRateGroup.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/gc_implementation/parNew/parCardTableModRefBS.cpp - src/share/vm/gc_implementation/parNew/parNewGeneration.cpp - src/share/vm/gc_implementation/parNew/parNewGeneration.hpp - src/share/vm/gc_implementation/parNew/parOopClosures.hpp - src/share/vm/gc_implementation/parNew/parOopClosures.inline.hpp - src/share/vm/gc_implementation/parNew/vmStructs_parNew.hpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.cpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp - src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp - src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp - src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp - src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.hpp - src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp - src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.hpp - src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp - src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp - src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp - src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp - src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp - src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp - src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp - src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp - src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp - src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp - src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp - src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp - src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp - src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp - src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.cpp - src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp - src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.cpp - src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.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/psMarkSweepDecorator.hpp - src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp - src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp - src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp - src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp - src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp - src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp - src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp - src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp - src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp - src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp - src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp - src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp - src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.hpp - src/share/vm/gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp - src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp - src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp - src/share/vm/gc_implementation/shared/ageTable.cpp - src/share/vm/gc_implementation/shared/ageTable.hpp - src/share/vm/gc_implementation/shared/allocationStats.cpp - src/share/vm/gc_implementation/shared/allocationStats.hpp - src/share/vm/gc_implementation/shared/cSpaceCounters.cpp - src/share/vm/gc_implementation/shared/cSpaceCounters.hpp - src/share/vm/gc_implementation/shared/collectorCounters.cpp - src/share/vm/gc_implementation/shared/collectorCounters.hpp - src/share/vm/gc_implementation/shared/concurrentGCThread.cpp - src/share/vm/gc_implementation/shared/concurrentGCThread.hpp - src/share/vm/gc_implementation/shared/copyFailedInfo.hpp - src/share/vm/gc_implementation/shared/gSpaceCounters.cpp - src/share/vm/gc_implementation/shared/gSpaceCounters.hpp - src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.cpp - src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp - src/share/vm/gc_implementation/shared/gcHeapSummary.hpp - src/share/vm/gc_implementation/shared/gcId.cpp - src/share/vm/gc_implementation/shared/gcId.hpp - src/share/vm/gc_implementation/shared/gcPolicyCounters.cpp - src/share/vm/gc_implementation/shared/gcPolicyCounters.hpp - src/share/vm/gc_implementation/shared/gcStats.cpp - src/share/vm/gc_implementation/shared/gcStats.hpp - src/share/vm/gc_implementation/shared/gcTimer.cpp - src/share/vm/gc_implementation/shared/gcTimer.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/gcUtil.cpp - src/share/vm/gc_implementation/shared/gcUtil.hpp - src/share/vm/gc_implementation/shared/gcWhen.hpp - src/share/vm/gc_implementation/shared/generationCounters.cpp - src/share/vm/gc_implementation/shared/generationCounters.hpp - src/share/vm/gc_implementation/shared/hSpaceCounters.cpp - src/share/vm/gc_implementation/shared/hSpaceCounters.hpp - src/share/vm/gc_implementation/shared/immutableSpace.cpp - src/share/vm/gc_implementation/shared/immutableSpace.hpp - src/share/vm/gc_implementation/shared/isGCActiveMark.hpp - src/share/vm/gc_implementation/shared/liveRange.hpp - src/share/vm/gc_implementation/shared/markSweep.cpp - src/share/vm/gc_implementation/shared/markSweep.hpp - src/share/vm/gc_implementation/shared/markSweep.inline.hpp - src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp - src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp - src/share/vm/gc_implementation/shared/mutableSpace.cpp - src/share/vm/gc_implementation/shared/mutableSpace.hpp - src/share/vm/gc_implementation/shared/objectCountEventSender.cpp - src/share/vm/gc_implementation/shared/objectCountEventSender.hpp - src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp - src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp - src/share/vm/gc_implementation/shared/parGCAllocBuffer.inline.hpp - src/share/vm/gc_implementation/shared/spaceCounters.cpp - src/share/vm/gc_implementation/shared/spaceCounters.hpp - src/share/vm/gc_implementation/shared/spaceDecorator.cpp - src/share/vm/gc_implementation/shared/spaceDecorator.hpp - src/share/vm/gc_implementation/shared/suspendibleThreadSet.cpp - src/share/vm/gc_implementation/shared/suspendibleThreadSet.hpp - src/share/vm/gc_implementation/shared/vmGCOperations.cpp - src/share/vm/gc_implementation/shared/vmGCOperations.hpp - src/share/vm/gc_interface/allocTracer.cpp - src/share/vm/gc_interface/allocTracer.hpp - 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/gc_interface/gcName.hpp ! src/share/vm/interpreter/abstractInterpreter.hpp ! src/share/vm/interpreter/bytecodeTracer.cpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/interpreter/interpreter.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/linkResolver.cpp ! src/share/vm/interpreter/oopMapCache.cpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/interpreter/templateInterpreter.cpp ! src/share/vm/interpreter/templateInterpreter.hpp ! src/share/vm/interpreter/templateInterpreterGenerator.hpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp + src/share/vm/jvmci/jvmciCompilerToVM.hpp - src/share/vm/memory/barrierSet.cpp - src/share/vm/memory/barrierSet.hpp - src/share/vm/memory/barrierSet.inline.hpp - src/share/vm/memory/blockOffsetTable.cpp - src/share/vm/memory/blockOffsetTable.hpp - src/share/vm/memory/blockOffsetTable.inline.hpp - src/share/vm/memory/cardGeneration.cpp - src/share/vm/memory/cardGeneration.hpp - src/share/vm/memory/cardGeneration.inline.hpp - src/share/vm/memory/cardTableModRefBS.cpp - src/share/vm/memory/cardTableModRefBS.hpp - src/share/vm/memory/cardTableModRefBS.inline.hpp - src/share/vm/memory/cardTableRS.cpp - src/share/vm/memory/cardTableRS.hpp - src/share/vm/memory/collectorPolicy.cpp - src/share/vm/memory/collectorPolicy.hpp - src/share/vm/memory/defNewGeneration.cpp - src/share/vm/memory/defNewGeneration.hpp - src/share/vm/memory/defNewGeneration.inline.hpp - src/share/vm/memory/gcLocker.cpp - src/share/vm/memory/gcLocker.hpp - src/share/vm/memory/gcLocker.inline.hpp - src/share/vm/memory/genCollectedHeap.cpp - src/share/vm/memory/genCollectedHeap.hpp - src/share/vm/memory/genMarkSweep.cpp - src/share/vm/memory/genMarkSweep.hpp - src/share/vm/memory/genOopClosures.hpp - src/share/vm/memory/genOopClosures.inline.hpp - src/share/vm/memory/genRemSet.cpp - src/share/vm/memory/genRemSet.hpp - src/share/vm/memory/genRemSet.inline.hpp - src/share/vm/memory/generation.cpp - src/share/vm/memory/generation.hpp - src/share/vm/memory/generationSpec.cpp - src/share/vm/memory/generationSpec.hpp - src/share/vm/memory/modRefBarrierSet.hpp - src/share/vm/memory/referencePolicy.cpp - src/share/vm/memory/referencePolicy.hpp - src/share/vm/memory/referenceProcessor.cpp - src/share/vm/memory/referenceProcessor.hpp - src/share/vm/memory/referenceProcessorStats.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/space.inline.hpp - src/share/vm/memory/specialized_oop_closures.hpp - src/share/vm/memory/tenuredGeneration.cpp - src/share/vm/memory/tenuredGeneration.hpp - src/share/vm/memory/tenuredGeneration.inline.hpp - src/share/vm/memory/threadLocalAllocBuffer.cpp - src/share/vm/memory/threadLocalAllocBuffer.hpp - src/share/vm/memory/threadLocalAllocBuffer.inline.hpp - src/share/vm/memory/watermark.hpp ! src/share/vm/oops/constMethod.cpp ! src/share/vm/oops/constMethod.hpp ! src/share/vm/oops/cpCache.hpp ! src/share/vm/oops/generateOopMap.cpp ! src/share/vm/oops/generateOopMap.hpp - src/share/vm/oops/instanceClassLoaderKlass.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/klass.hpp - src/share/vm/oops/klassPS.hpp ! src/share/vm/oops/klassVtable.cpp ! src/share/vm/oops/method.cpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/oop.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/oop.psgc.inline.hpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jvm.h ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/handles.cpp ! src/share/vm/runtime/javaCalls.cpp ! src/share/vm/runtime/reflection.cpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/signature.cpp ! src/share/vm/runtime/signature.hpp - src/share/vm/runtime/virtualspace.cpp - src/share/vm/runtime/virtualspace.hpp ! src/share/vm/services/classLoadingService.cpp ! src/share/vm/utilities/globalDefinitions.cpp ! src/share/vm/utilities/globalDefinitions.hpp - src/share/vm/utilities/taskqueue.cpp - src/share/vm/utilities/taskqueue.hpp - src/share/vm/utilities/workgroup.cpp - src/share/vm/utilities/workgroup.hpp - src/share/vm/utilities/yieldingWorkgroup.cpp - src/share/vm/utilities/yieldingWorkgroup.hpp - test/compiler/intrinsics/sha/cli/testcases/GenericTestCaseForSupportedSparcCPU.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 - test/gc/concurrentMarkSweep/DisableResizePLAB.java - test/gc/concurrentMarkSweep/GuardShrinkWarning.java - test/gc/defnew/HeapChangeLogging.java - test/gc/parallelScavenge/AdaptiveGCBoundary.java - test/gc/parallelScavenge/TestDynShrinkHeap.java - test/gc/startup_warnings/TestDefaultMaxRAMFraction.java - test/gc/startup_warnings/TestNoParNew.java - test/runtime/6888954/vmerrors.sh - test/sanity/WhiteBox.java - test/testlibrary/com/oracle/java/testlibrary/Asserts.java - test/testlibrary/com/oracle/java/testlibrary/BuildHelper.java - test/testlibrary/com/oracle/java/testlibrary/ByteCodeLoader.java - test/testlibrary/com/oracle/java/testlibrary/DynamicVMOption.java - test/testlibrary/com/oracle/java/testlibrary/ExitCode.java - test/testlibrary/com/oracle/java/testlibrary/InMemoryJavaCompiler.java - test/testlibrary/com/oracle/java/testlibrary/InfiniteLoop.java - test/testlibrary/com/oracle/java/testlibrary/InputArguments.java - test/testlibrary/com/oracle/java/testlibrary/JDKToolFinder.java - test/testlibrary/com/oracle/java/testlibrary/JDKToolLauncher.java - test/testlibrary/com/oracle/java/testlibrary/OutputAnalyzer.java - test/testlibrary/com/oracle/java/testlibrary/OutputBuffer.java - test/testlibrary/com/oracle/java/testlibrary/PerfCounter.java - test/testlibrary/com/oracle/java/testlibrary/PerfCounters.java - test/testlibrary/com/oracle/java/testlibrary/Platform.java - test/testlibrary/com/oracle/java/testlibrary/ProcessTools.java - test/testlibrary/com/oracle/java/testlibrary/StreamPumper.java - test/testlibrary/com/oracle/java/testlibrary/TimeLimitedRunner.java - test/testlibrary/com/oracle/java/testlibrary/Utils.java - test/testlibrary/com/oracle/java/testlibrary/cli/CPUSpecificCommandLineOptionTest.java - test/testlibrary/com/oracle/java/testlibrary/cli/CommandLineOptionTest.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/AndPredicate.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/CPUSpecificPredicate.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/NotPredicate.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/OrPredicate.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/CommandExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/CommandExecutorException.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/FileJcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/JMXExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/JcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/MainClassJcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/PidJcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dtrace/DtraceResultsAnalyzer.java - test/testlibrary/com/oracle/java/testlibrary/dtrace/DtraceRunner.java Changeset: 54c3705876df Author: fparain Date: 2015-12-08 01:16 -0800 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/54c3705876df merge Changeset: 9c67d666cf46 Author: fparain Date: 2015-12-09 01:10 -0800 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/9c67d666cf46 Fix assert ! src/share/vm/interpreter/rewriter.cpp Changeset: 952c052ea2da Author: dsimms Date: 2015-12-09 10:52 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/952c052ea2da Initial vt array prototyping ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/interpreter/abstractInterpreter.hpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/arrayKlass.hpp ! src/share/vm/oops/arrayOop.hpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/objArrayKlass.hpp ! src/share/vm/oops/oop.cpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/oops/oopsHierarchy.hpp ! src/share/vm/oops/typeArrayKlass.cpp ! src/share/vm/oops/typeArrayKlass.hpp ! src/share/vm/oops/typeArrayOop.hpp + src/share/vm/oops/valueArrayKlass.cpp + src/share/vm/oops/valueArrayKlass.hpp + src/share/vm/oops/valueArrayOop.cpp + src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/runtime/frame.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/utilities/accessFlags.hpp ! src/share/vm/utilities/globalDefinitions.hpp ! test/TEST.groups + test/runtime/valhalla-features/Char72Value.java + test/runtime/valhalla-features/Long8Value.java + test/runtime/valhalla-features/MixedPrimitiveValue.java + test/runtime/valhalla-features/MixedValue.java + test/runtime/valhalla-features/OtherDefaultValue.java + test/runtime/valhalla-features/SimplePrimitiveValue.java + test/runtime/valhalla-features/ValueTypeDensity.java + test/runtime/valhalla-features/ValueTypeSanity.java Changeset: da1114175947 Author: dsimms Date: 2015-12-09 14:45 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/da1114175947 Merge valueArray prototype - agent/src/share/classes/sun/jvm/hotspot/compiler/OopMap.java - agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapSet.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1Allocator.java - 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/G1MonitoringSupport.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegion.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionManager.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSetBase.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSetCount.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/PSOldGen.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/PSYoungGen.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/ParallelScavengeHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/shared/ImmutableSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc_implementation/shared/MutableSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/CollectedHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/CollectedHeapName.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/G1YCType.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/GCCause.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/GCName.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/GCWhen.java - agent/src/share/classes/sun/jvm/hotspot/gc_interface/ReferenceType.java - agent/src/share/classes/sun/jvm/hotspot/memory/AdaptiveFreeList.java - agent/src/share/classes/sun/jvm/hotspot/memory/CMSBitMap.java - agent/src/share/classes/sun/jvm/hotspot/memory/CMSCollector.java - agent/src/share/classes/sun/jvm/hotspot/memory/CardGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/ConcurrentMarkSweepGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/ContiguousSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/DefNewGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenCollectedHeap.java - agent/src/share/classes/sun/jvm/hotspot/memory/Generation.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenerationFactory.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenerationIsInClosure.java - agent/src/share/classes/sun/jvm/hotspot/memory/GenerationSpec.java - agent/src/share/classes/sun/jvm/hotspot/memory/LinearAllocBlock.java - agent/src/share/classes/sun/jvm/hotspot/memory/OffsetTableContigSpace.java - agent/src/share/classes/sun/jvm/hotspot/memory/ParNewGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/SharedHeap.java - agent/src/share/classes/sun/jvm/hotspot/memory/Space.java - agent/src/share/classes/sun/jvm/hotspot/memory/SpaceClosure.java - agent/src/share/classes/sun/jvm/hotspot/memory/TenuredGeneration.java - agent/src/share/classes/sun/jvm/hotspot/memory/TenuredSpace.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VirtualSpace.java - src/cpu/x86/vm/rtmLocking.cpp ! src/cpu/x86/vm/templateTable_x86.cpp - src/cpu/x86/vm/templateTable_x86_32.hpp - src/cpu/x86/vm/templateTable_x86_64.hpp - src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/bytecode.gif - src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/link.gif - src/share/tools/IdealGraphVisualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/method.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/META-INF/services/com.sun.hotspot.igv.data.services.GroupOrganizer - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/GraphCountGroupOrganizer.java - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/StandardGroupOrganizer.java - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/actions/StructuredViewAction.java - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/diff.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/folder.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/graph.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/import.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/remove.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/removeall.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/save.gif - src/share/tools/IdealGraphVisualizer/Coordinator/src/com/sun/hotspot/igv/coordinator/images/structure.gif - src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/services/GroupOrganizer.java - src/share/tools/IdealGraphVisualizer/Data/src/com/sun/hotspot/igv/data/services/GroupReceiver.java - src/share/tools/IdealGraphVisualizer/Filter/src/META-INF/services/com.sun.hotspot.igv.filter.ScriptEngineAbstraction - src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/JavaSE6ScriptEngine.java - src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/NullScriptEngine.java - src/share/tools/IdealGraphVisualizer/Filter/src/com/sun/hotspot/igv/filter/ScriptEngineAbstraction.java - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/add.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/delete.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/down.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/minus.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/plus.gif - src/share/tools/IdealGraphVisualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/up.gif - src/share/tools/IdealGraphVisualizer/Graph/src/com/sun/hotspot/igv/graph/Source.java - src/share/tools/IdealGraphVisualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/OldHierarchicalLayoutManager.java - src/share/tools/IdealGraphVisualizer/NetworkConnection/src/META-INF/services/com.sun.hotspot.igv.data.services.GroupReceiver - src/share/tools/IdealGraphVisualizer/README - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/build.xml - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/manifest.mf - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/build-impl.xml - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/genfiles.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/project.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/project.xml - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/nbproject/suite.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/META-INF/services/com.sun.hotspot.igv.filter.ScriptEngineAbstraction - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/Bundle.properties - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/RhinoScriptEngine.java - src/share/tools/IdealGraphVisualizer/RhinoScriptEngineProxy/src/com/sun/hotspot/igv/rhino/layer.xml - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/META-INF/services/com.sun.hotspot.igv.data.services.GroupOrganizer - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/JavaGroupOrganizer.java - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/combine.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/extendedColor.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/linestyle.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeMemory.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeRootInputs.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeSafepointInputs.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/removeSelfLoops.filter - src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/filters/split.filter - src/share/tools/IdealGraphVisualizer/Settings/src/com/sun/hotspot/igv/settings/settings.gif - src/share/tools/IdealGraphVisualizer/View/src/META-INF/services/com.sun.hotspot.igv.data.services.InputGraphProvider - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/ConnectionAnchor.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/ExtendedPanAction.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/FindPanel.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/PreferenceConstants.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/SlotLayout.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/actions/NodeFindAction.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/export.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/overview.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/search.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/zoomin.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/images/zoomout.gif - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/DiagramConnectionWidget.java - src/share/tools/IdealGraphVisualizer/View/src/com/sun/hotspot/igv/view/widgets/MultiConnectionWidget.java - src/share/vm/classfile/imageFile.cpp - src/share/vm/classfile/imageFile.hpp ! src/share/vm/classfile/javaClasses.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsLockVerifier.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.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/concurrentMarkSweepGeneration.inline.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp - src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp - src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp - src/share/vm/gc_implementation/g1/bufferingOopClosure.cpp - src/share/vm/gc_implementation/g1/bufferingOopClosure.hpp - src/share/vm/gc_implementation/g1/collectionSetChooser.cpp - src/share/vm/gc_implementation/g1/collectionSetChooser.hpp - 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/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/concurrentMarkThread.cpp - src/share/vm/gc_implementation/g1/concurrentMarkThread.hpp - src/share/vm/gc_implementation/g1/concurrentMarkThread.inline.hpp - src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp - src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp - src/share/vm/gc_implementation/g1/evacuationInfo.hpp - src/share/vm/gc_implementation/g1/g1AllocRegion.cpp - src/share/vm/gc_implementation/g1/g1AllocRegion.hpp - src/share/vm/gc_implementation/g1/g1AllocRegion.inline.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/g1BiasedArray.cpp - src/share/vm/gc_implementation/g1/g1BiasedArray.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/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/g1CollectedHeap.inline.hpp - src/share/vm/gc_implementation/g1/g1CollectedHeap_ext.cpp - 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/gc_implementation/g1/g1ErgoVerbose.cpp - src/share/vm/gc_implementation/g1/g1ErgoVerbose.hpp - src/share/vm/gc_implementation/g1/g1EvacFailure.cpp - 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/g1HRPrinter.cpp - src/share/vm/gc_implementation/g1/g1HRPrinter.hpp - src/share/vm/gc_implementation/g1/g1HotCardCache.cpp - src/share/vm/gc_implementation/g1/g1HotCardCache.hpp - src/share/vm/gc_implementation/g1/g1InCSetState.hpp - src/share/vm/gc_implementation/g1/g1Log.cpp - src/share/vm/gc_implementation/g1/g1Log.hpp - src/share/vm/gc_implementation/g1/g1MMUTracker.cpp - src/share/vm/gc_implementation/g1/g1MMUTracker.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/g1MonitoringSupport.cpp - src/share/vm/gc_implementation/g1/g1MonitoringSupport.hpp - src/share/vm/gc_implementation/g1/g1OopClosures.cpp - src/share/vm/gc_implementation/g1/g1OopClosures.hpp - src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp - src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.cpp - src/share/vm/gc_implementation/g1/g1PageBasedVirtualSpace.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/g1RegionToSpaceMapper.cpp - src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.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/g1RemSetSummary.cpp - src/share/vm/gc_implementation/g1/g1RemSetSummary.hpp - src/share/vm/gc_implementation/g1/g1RootProcessor.cpp - src/share/vm/gc_implementation/g1/g1RootProcessor.hpp - src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp - src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp - src/share/vm/gc_implementation/g1/g1StringDedup.cpp - src/share/vm/gc_implementation/g1/g1StringDedup.hpp - src/share/vm/gc_implementation/g1/g1StringDedupQueue.cpp - src/share/vm/gc_implementation/g1/g1StringDedupQueue.hpp - src/share/vm/gc_implementation/g1/g1StringDedupStat.cpp - src/share/vm/gc_implementation/g1/g1StringDedupStat.hpp - src/share/vm/gc_implementation/g1/g1StringDedupTable.cpp - src/share/vm/gc_implementation/g1/g1StringDedupTable.hpp - src/share/vm/gc_implementation/g1/g1StringDedupThread.cpp - src/share/vm/gc_implementation/g1/g1StringDedupThread.hpp - src/share/vm/gc_implementation/g1/g1YCTypes.hpp - src/share/vm/gc_implementation/g1/g1_globals.cpp - 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/heapRegion.hpp - src/share/vm/gc_implementation/g1/heapRegion.inline.hpp - src/share/vm/gc_implementation/g1/heapRegionBounds.hpp - src/share/vm/gc_implementation/g1/heapRegionBounds.inline.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/heapRegionRemSet.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/heapRegionType.cpp - src/share/vm/gc_implementation/g1/heapRegionType.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/sparsePRT.hpp - src/share/vm/gc_implementation/g1/survRateGroup.cpp - src/share/vm/gc_implementation/g1/survRateGroup.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/gc_implementation/parNew/parCardTableModRefBS.cpp - src/share/vm/gc_implementation/parNew/parNewGeneration.cpp - src/share/vm/gc_implementation/parNew/parNewGeneration.hpp - src/share/vm/gc_implementation/parNew/parOopClosures.hpp - src/share/vm/gc_implementation/parNew/parOopClosures.inline.hpp - src/share/vm/gc_implementation/parNew/vmStructs_parNew.hpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.cpp - src/share/vm/gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp - src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp - src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.hpp - src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp - src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.hpp - src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp - src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.hpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp - src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.hpp - src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp - src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp - src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp - src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp - src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp - src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.hpp - src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp - src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp - src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp - src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp - src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp - src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp - src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp - src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp - src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.cpp - src/share/vm/gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp - src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.cpp - src/share/vm/gc_implementation/parallelScavenge/psGenerationCounters.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/psMarkSweepDecorator.hpp - src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp - src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp - src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp - src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp - src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp - src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp - src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp - src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp - src/share/vm/gc_implementation/parallelScavenge/psTasks.hpp - src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp - src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp - src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp - src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp - src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp - src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.hpp - src/share/vm/gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp - src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp - src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp - src/share/vm/gc_implementation/shared/ageTable.cpp - src/share/vm/gc_implementation/shared/ageTable.hpp - src/share/vm/gc_implementation/shared/allocationStats.cpp - src/share/vm/gc_implementation/shared/allocationStats.hpp - src/share/vm/gc_implementation/shared/cSpaceCounters.cpp - src/share/vm/gc_implementation/shared/cSpaceCounters.hpp - src/share/vm/gc_implementation/shared/collectorCounters.cpp - src/share/vm/gc_implementation/shared/collectorCounters.hpp - src/share/vm/gc_implementation/shared/concurrentGCThread.cpp - src/share/vm/gc_implementation/shared/concurrentGCThread.hpp - src/share/vm/gc_implementation/shared/copyFailedInfo.hpp - src/share/vm/gc_implementation/shared/gSpaceCounters.cpp - src/share/vm/gc_implementation/shared/gSpaceCounters.hpp - src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.cpp - src/share/vm/gc_implementation/shared/gcAdaptivePolicyCounters.hpp - src/share/vm/gc_implementation/shared/gcHeapSummary.hpp - src/share/vm/gc_implementation/shared/gcId.cpp - src/share/vm/gc_implementation/shared/gcId.hpp - src/share/vm/gc_implementation/shared/gcPolicyCounters.cpp - src/share/vm/gc_implementation/shared/gcPolicyCounters.hpp - src/share/vm/gc_implementation/shared/gcStats.cpp - src/share/vm/gc_implementation/shared/gcStats.hpp - src/share/vm/gc_implementation/shared/gcTimer.cpp - src/share/vm/gc_implementation/shared/gcTimer.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/gcUtil.cpp - src/share/vm/gc_implementation/shared/gcUtil.hpp - src/share/vm/gc_implementation/shared/gcWhen.hpp - src/share/vm/gc_implementation/shared/generationCounters.cpp - src/share/vm/gc_implementation/shared/generationCounters.hpp - src/share/vm/gc_implementation/shared/hSpaceCounters.cpp - src/share/vm/gc_implementation/shared/hSpaceCounters.hpp - src/share/vm/gc_implementation/shared/immutableSpace.cpp - src/share/vm/gc_implementation/shared/immutableSpace.hpp - src/share/vm/gc_implementation/shared/isGCActiveMark.hpp - src/share/vm/gc_implementation/shared/liveRange.hpp - src/share/vm/gc_implementation/shared/markSweep.cpp - src/share/vm/gc_implementation/shared/markSweep.hpp - src/share/vm/gc_implementation/shared/markSweep.inline.hpp - src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp - src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp - src/share/vm/gc_implementation/shared/mutableSpace.cpp - src/share/vm/gc_implementation/shared/mutableSpace.hpp - src/share/vm/gc_implementation/shared/objectCountEventSender.cpp - src/share/vm/gc_implementation/shared/objectCountEventSender.hpp - src/share/vm/gc_implementation/shared/parGCAllocBuffer.cpp - src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp - src/share/vm/gc_implementation/shared/parGCAllocBuffer.inline.hpp - src/share/vm/gc_implementation/shared/spaceCounters.cpp - src/share/vm/gc_implementation/shared/spaceCounters.hpp - src/share/vm/gc_implementation/shared/spaceDecorator.cpp - src/share/vm/gc_implementation/shared/spaceDecorator.hpp - src/share/vm/gc_implementation/shared/suspendibleThreadSet.cpp - src/share/vm/gc_implementation/shared/suspendibleThreadSet.hpp - src/share/vm/gc_implementation/shared/vmGCOperations.cpp - src/share/vm/gc_implementation/shared/vmGCOperations.hpp - src/share/vm/gc_interface/allocTracer.cpp - src/share/vm/gc_interface/allocTracer.hpp - 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/gc_interface/gcName.hpp ! src/share/vm/interpreter/abstractInterpreter.hpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp - src/share/vm/memory/barrierSet.cpp - src/share/vm/memory/barrierSet.hpp - src/share/vm/memory/barrierSet.inline.hpp - src/share/vm/memory/blockOffsetTable.cpp - src/share/vm/memory/blockOffsetTable.hpp - src/share/vm/memory/blockOffsetTable.inline.hpp - src/share/vm/memory/cardGeneration.cpp - src/share/vm/memory/cardGeneration.hpp - src/share/vm/memory/cardGeneration.inline.hpp - src/share/vm/memory/cardTableModRefBS.cpp - src/share/vm/memory/cardTableModRefBS.hpp - src/share/vm/memory/cardTableModRefBS.inline.hpp - src/share/vm/memory/cardTableRS.cpp - src/share/vm/memory/cardTableRS.hpp - src/share/vm/memory/collectorPolicy.cpp - src/share/vm/memory/collectorPolicy.hpp - src/share/vm/memory/defNewGeneration.cpp - src/share/vm/memory/defNewGeneration.hpp - src/share/vm/memory/defNewGeneration.inline.hpp - src/share/vm/memory/gcLocker.cpp - src/share/vm/memory/gcLocker.hpp - src/share/vm/memory/gcLocker.inline.hpp - src/share/vm/memory/genCollectedHeap.cpp - src/share/vm/memory/genCollectedHeap.hpp - src/share/vm/memory/genMarkSweep.cpp - src/share/vm/memory/genMarkSweep.hpp - src/share/vm/memory/genOopClosures.hpp - src/share/vm/memory/genOopClosures.inline.hpp - src/share/vm/memory/genRemSet.cpp - src/share/vm/memory/genRemSet.hpp - src/share/vm/memory/genRemSet.inline.hpp - src/share/vm/memory/generation.cpp - src/share/vm/memory/generation.hpp - src/share/vm/memory/generationSpec.cpp - src/share/vm/memory/generationSpec.hpp - src/share/vm/memory/modRefBarrierSet.hpp - src/share/vm/memory/referencePolicy.cpp - src/share/vm/memory/referencePolicy.hpp - src/share/vm/memory/referenceProcessor.cpp - src/share/vm/memory/referenceProcessor.hpp - src/share/vm/memory/referenceProcessorStats.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/space.inline.hpp - src/share/vm/memory/specialized_oop_closures.hpp - src/share/vm/memory/tenuredGeneration.cpp - src/share/vm/memory/tenuredGeneration.hpp - src/share/vm/memory/tenuredGeneration.inline.hpp - src/share/vm/memory/threadLocalAllocBuffer.cpp - src/share/vm/memory/threadLocalAllocBuffer.hpp - src/share/vm/memory/threadLocalAllocBuffer.inline.hpp - src/share/vm/memory/watermark.hpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/arrayKlass.hpp - src/share/vm/oops/instanceClassLoaderKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/klass.hpp - src/share/vm/oops/klassPS.hpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/objArrayKlass.hpp ! src/share/vm/oops/oop.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/oop.psgc.inline.hpp ! src/share/vm/oops/typeArrayKlass.cpp ! src/share/vm/oops/typeArrayKlass.hpp ! src/share/vm/oops/typeArrayOop.hpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.hpp + src/share/vm/oops/valueArrayKlass.inline.hpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/runtime/frame.cpp ! src/share/vm/runtime/globals.hpp - src/share/vm/runtime/virtualspace.cpp - src/share/vm/runtime/virtualspace.hpp ! src/share/vm/utilities/globalDefinitions.hpp - src/share/vm/utilities/taskqueue.cpp - src/share/vm/utilities/taskqueue.hpp - src/share/vm/utilities/workgroup.cpp - src/share/vm/utilities/workgroup.hpp - src/share/vm/utilities/yieldingWorkgroup.cpp - src/share/vm/utilities/yieldingWorkgroup.hpp ! test/TEST.groups - test/compiler/intrinsics/sha/cli/testcases/GenericTestCaseForSupportedSparcCPU.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 - test/gc/concurrentMarkSweep/DisableResizePLAB.java - test/gc/concurrentMarkSweep/GuardShrinkWarning.java - test/gc/defnew/HeapChangeLogging.java - test/gc/parallelScavenge/AdaptiveGCBoundary.java - test/gc/parallelScavenge/TestDynShrinkHeap.java - test/gc/startup_warnings/TestDefaultMaxRAMFraction.java - test/gc/startup_warnings/TestNoParNew.java - test/runtime/6888954/vmerrors.sh - test/runtime/valhalla-features/ValueTypeDensity.java ! test/runtime/valhalla-features/ValueTypeSanity.java - test/sanity/WhiteBox.java - test/testlibrary/com/oracle/java/testlibrary/Asserts.java - test/testlibrary/com/oracle/java/testlibrary/BuildHelper.java - test/testlibrary/com/oracle/java/testlibrary/ByteCodeLoader.java - test/testlibrary/com/oracle/java/testlibrary/DynamicVMOption.java - test/testlibrary/com/oracle/java/testlibrary/ExitCode.java - test/testlibrary/com/oracle/java/testlibrary/InMemoryJavaCompiler.java - test/testlibrary/com/oracle/java/testlibrary/InfiniteLoop.java - test/testlibrary/com/oracle/java/testlibrary/InputArguments.java - test/testlibrary/com/oracle/java/testlibrary/JDKToolFinder.java - test/testlibrary/com/oracle/java/testlibrary/JDKToolLauncher.java - test/testlibrary/com/oracle/java/testlibrary/OutputAnalyzer.java - test/testlibrary/com/oracle/java/testlibrary/OutputBuffer.java - test/testlibrary/com/oracle/java/testlibrary/PerfCounter.java - test/testlibrary/com/oracle/java/testlibrary/PerfCounters.java - test/testlibrary/com/oracle/java/testlibrary/Platform.java - test/testlibrary/com/oracle/java/testlibrary/ProcessTools.java - test/testlibrary/com/oracle/java/testlibrary/StreamPumper.java - test/testlibrary/com/oracle/java/testlibrary/TimeLimitedRunner.java - test/testlibrary/com/oracle/java/testlibrary/Utils.java - test/testlibrary/com/oracle/java/testlibrary/cli/CPUSpecificCommandLineOptionTest.java - test/testlibrary/com/oracle/java/testlibrary/cli/CommandLineOptionTest.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/AndPredicate.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/CPUSpecificPredicate.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/NotPredicate.java - test/testlibrary/com/oracle/java/testlibrary/cli/predicate/OrPredicate.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/CommandExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/CommandExecutorException.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/FileJcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/JMXExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/JcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/MainClassJcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dcmd/PidJcmdExecutor.java - test/testlibrary/com/oracle/java/testlibrary/dtrace/DtraceResultsAnalyzer.java - test/testlibrary/com/oracle/java/testlibrary/dtrace/DtraceRunner.java Changeset: 34bf9e4b2188 Author: dsimms Date: 2015-12-09 15:32 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/34bf9e4b2188 Initial density regression test + test/runtime/valhalla-features/ValueTypeDensity.java Changeset: 75e3d8c702a4 Author: dsimms Date: 2015-12-09 15:53 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/75e3d8c702a4 Density test heap use correction ! test/runtime/valhalla-features/ValueTypeDensity.java Changeset: 5af18cfc27af Author: dsimms Date: 2015-12-09 17:42 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/5af18cfc27af Fixes for fastdebug/release targets ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/oops/valueArrayKlass.cpp Changeset: 9fcbf6ebd29b Author: dsimms Date: 2015-12-10 10:21 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/9fcbf6ebd29b Fix Includes, denormalize array array_impl ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/arrayKlass.hpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/objArrayKlass.hpp ! src/share/vm/oops/typeArrayKlass.cpp ! src/share/vm/oops/typeArrayKlass.hpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.hpp Changeset: 0d3f1652f1fb Author: dsimms Date: 2015-12-10 11:46 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/0d3f1652f1fb Match vnewarray/multivnewarray updates from langtools ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp ! src/share/vm/memory/oopFactory.cpp ! src/share/vm/memory/oopFactory.hpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.hpp Changeset: 75ed67c7d400 Author: fparain Date: 2015-12-10 06:45 -0800 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/75ed67c7d400 Fix vnew bytecode ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/oops/valueKlass.hpp Changeset: 7b8cf264a323 Author: dsimms Date: 2015-12-11 13:15 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/7b8cf264a323 VM option ValueArrayFlatten to enable flat value arrays, default=false ! src/share/vm/memory/oopFactory.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/runtime/globals.hpp ! test/runtime/valhalla-features/ValueTypeDensity.java ! test/runtime/valhalla-features/ValueTypeSanity.java Changeset: c2b713625577 Author: dsimms Date: 2015-12-11 13:19 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/c2b713625577 Evil tabs ! test/runtime/valhalla-features/ValueTypeDensity.java ! test/runtime/valhalla-features/ValueTypeSanity.java Changeset: 2817cfc7ed7b Author: dsimms Date: 2015-12-11 13:22 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/2817cfc7ed7b Merge ! src/share/vm/oops/valueKlass.cpp Changeset: 46cea0a25435 Author: dsimms Date: 2015-12-11 13:36 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/46cea0a25435 Tweaked comments ! test/runtime/valhalla-features/ValueTypeDensity.java ! test/runtime/valhalla-features/ValueTypeSanity.java Changeset: 67c5366bb580 Author: stsmirno Date: 2015-12-15 15:39 +0300 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/67c5366bb580 initial set of vt tests ! test/runtime/valhalla-features/ValueTypeDensity.java + test/runtime/valhalla/valuetypes/Point.java + test/runtime/valhalla/valuetypes/ValueTypeArray.java + test/runtime/valhalla/valuetypes/ValueTypeCreation.java + test/runtime/valhalla/valuetypes/ValueTypeGetField.java Changeset: 6d2439d84a99 Author: dsimms Date: 2015-12-15 20:39 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/6d2439d84a99 Primitive value type oop iterators, enabled ValueArrayFlatten by default ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/gc/parallel/psCompactionManager.cpp ! src/share/vm/gc/parallel/psParallelCompact.cpp ! src/share/vm/gc/parallel/psPromotionManager.cpp ! src/share/vm/gc/serial/markSweep.cpp ! src/share/vm/memory/iterator.inline.hpp ! src/share/vm/oops/valueArrayKlass.hpp ! src/share/vm/oops/valueArrayKlass.inline.hpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/runtime/globals.hpp ! test/TEST.groups ! test/runtime/valhalla-features/ValueTypeDensity.java ! test/runtime/valhalla-features/ValueTypeSanity.java ! test/runtime/valhalla/valuetypes/ValueTypeArray.java Changeset: e9971df12824 Author: dsimms Date: 2015-12-16 09:32 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/e9971df12824 Re-arrranged tests ! test/TEST.groups - test/runtime/valhalla-features/Char72Value.java - test/runtime/valhalla-features/Long8Value.java - test/runtime/valhalla-features/MixedPrimitiveValue.java - test/runtime/valhalla-features/MixedValue.java - test/runtime/valhalla-features/OtherDefaultValue.java - test/runtime/valhalla-features/SimplePrimitiveValue.java - test/runtime/valhalla-features/ValueTypeSanity.java = test/runtime/valhalla/valuetypes/ValueTypeDensity.java < test/runtime/valhalla-features/ValueTypeDensity.java Changeset: d689e3c053ef Author: dsimms Date: 2015-12-16 10:46 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/d689e3c053ef Value array copy ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayOop.hpp ! test/runtime/valhalla/valuetypes/ValueTypeArray.java Changeset: 3e2452d58660 Author: dsimms Date: 2016-01-21 13:41 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/3e2452d58660 Atomic array value stores ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/oops/arrayOop.hpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.hpp ! src/share/vm/oops/valueArrayOop.cpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/prims/unsafe.cpp + src/share/vm/runtime/sequenceLock.cpp + src/share/vm/runtime/sequenceLock.hpp + test/runtime/valhalla/valuetypes/IntValue.java + test/runtime/valhalla/valuetypes/Long8Value.java ! test/runtime/valhalla/valuetypes/ValueTypeArray.java Changeset: 781b164085d4 Author: dsimms Date: 2016-01-21 16:08 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/781b164085d4 missing include ! src/share/vm/oops/valueKlass.cpp Changeset: 4b7d5f0b1ace Author: dsimms Date: 2016-01-25 09:54 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/4b7d5f0b1ace Enable embedded oops ! src/share/vm/interpreter/interpreterRuntime.cpp ! test/runtime/valhalla/valuetypes/Long8Value.java + test/runtime/valhalla/valuetypes/Person.java ! test/runtime/valhalla/valuetypes/ValueTypeArray.java ! test/runtime/valhalla/valuetypes/ValueTypeCreation.java Changeset: 510e978aa4a5 Author: dsimms Date: 2016-01-25 10:24 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/510e978aa4a5 PROTOTYPE and CMH macros ! src/share/vm/gc/serial/markSweep.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.hpp ! src/share/vm/oops/valueArrayKlass.inline.hpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/utilities/globalDefinitions.hpp Changeset: 81f5a76070c1 Author: dsimms Date: 2016-01-26 09:46 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/81f5a76070c1 Prelim oop handling for arrays ! src/share/vm/gc/serial/markSweep.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/oops/valueArrayKlass.hpp ! src/share/vm/oops/valueArrayKlass.inline.hpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/oops/valueKlass.hpp ! test/runtime/valhalla/valuetypes/ValueTypeArray.java ! test/runtime/valhalla/valuetypes/ValueTypeCreation.java Changeset: c0fe2d86e0da Author: dsimms Date: 2016-01-26 13:10 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/c0fe2d86e0da Value type as ref arg ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp ! test/runtime/valhalla/valuetypes/Long8Value.java ! test/runtime/valhalla/valuetypes/ValueTypeArray.java ! test/runtime/valhalla/valuetypes/ValueTypeCreation.java Changeset: 532b5a894c50 Author: dsimms Date: 2016-02-04 08:18 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/532b5a894c50 Value Array clean up, remove packed layout, removed atomic impl ! make/share/makefiles/mapfile-vers ! src/share/vm/gc/parallel/psCompactionManager.cpp ! src/share/vm/gc/parallel/psParallelCompact.cpp ! src/share/vm/gc/parallel/psPromotionManager.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.hpp ! src/share/vm/oops/valueArrayKlass.inline.hpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/oops/valueKlass.hpp + src/share/vm/oops/valueKlass.inline.hpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/jvm.h ! src/share/vm/prims/unsafe.cpp ! src/share/vm/runtime/handles.hpp ! test/runtime/valhalla/valuetypes/ValueTypeArray.java Changeset: 157e86d4af11 Author: dsimms Date: 2016-02-04 14:38 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/157e86d4af11 Fixes ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueKlass.hpp Changeset: 49e178a3e666 Author: dsimms Date: 2016-02-16 18:49 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/49e178a3e666 Some more clean up, array klass selection moved ValueKlass ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/memory/oopFactory.cpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.cpp ! src/share/vm/oops/valueArrayKlass.hpp ! src/share/vm/oops/valueArrayKlass.inline.hpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.cpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/runtime/globals.hpp ! test/runtime/valhalla/valuetypes/ValueTypeArray.java Changeset: ac691d5ce8c4 Author: dsimms Date: 2016-06-07 15:08 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/ac691d5ce8c4 Disabling verification by default isn't helpful to the non-valhalla tests ! src/share/vm/runtime/globals.hpp Changeset: b75eb560dca6 Author: dsimms Date: 2016-06-09 12:30 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/b75eb560dca6 Bug fix InterpretedArgumentOopFinder, added other missing oop handling cases ! src/share/vm/runtime/frame.cpp Changeset: 5d55e76f2deb Author: dsimms Date: 2016-05-23 02:10 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/5d55e76f2deb Merge - agent/doc/ReadMe-JavaScript.text - agent/doc/cireplay.html - agent/doc/clhsdb.html - agent/doc/hsdb.html - agent/doc/index.html - agent/doc/jsdb.html - agent/doc/transported_core.html - agent/make/Makefile - agent/make/README.txt - agent/make/build-filelist - agent/make/build-pkglist - agent/make/build.xml - agent/make/clhsdbproc.sh - agent/make/clhsdbproc64.sh - agent/make/clhsdbwindbg.bat - agent/make/clhsdbwindbg64.bat - agent/make/dumpflagsproc.sh - agent/make/dumpflagsproc64.sh - agent/make/dumpflagswindbg.bat - agent/make/dumpflagswindbg64.bat - agent/make/dumpsyspropsproc.sh - agent/make/dumpsyspropsproc64.sh - agent/make/dumpsyspropswindbg.bat - agent/make/dumpsyspropswindbg64.bat - agent/make/finalizerinfoproc.sh - agent/make/finalizerinfoproc64.sh - agent/make/finalizerinfowindbg.bat - agent/make/finalizerinfowindbg64.bat - agent/make/grantAll.policy - agent/make/heapdumpproc.sh - agent/make/heapdumpproc64.sh - agent/make/heapdumpwindbg.bat - agent/make/heapdumpwindbg64.bat - agent/make/heapsumproc.sh - agent/make/heapsumproc64.sh - agent/make/heapsumwindbg.bat - agent/make/heapsumwindbg64.bat - agent/make/hsdb.bat - agent/make/hsdb.sh - agent/make/hsdbproc.sh - agent/make/hsdbproc64.sh - agent/make/hsdbwindbg.bat - agent/make/hsdbwindbg64.bat - agent/make/index.html - agent/make/jcoreproc.sh - agent/make/jcoreproc64.sh - agent/make/jcorewindbg.bat - agent/make/jcorewindbg64.bat - agent/make/jdbcore.sh - agent/make/jdbcore64.sh - agent/make/jdbproc.sh - agent/make/jdbproc64.sh - agent/make/jhistoproc.sh - agent/make/jhistoproc64.sh - agent/make/jhistowindbg.bat - agent/make/jhistowindbg64.bat - agent/make/jsdbproc.sh - agent/make/jsdbproc64.sh - agent/make/jsdbwindbg.bat - agent/make/jsdbwindbg64.bat - agent/make/jstackproc.sh - agent/make/jstackproc64.sh - agent/make/jstackwindbg.bat - agent/make/jstackwindbg64.bat - agent/make/marks_notes.html - agent/make/mkinstall - agent/make/permstatproc.sh - agent/make/permstatproc64.sh - agent/make/permstatwindbg.bat - agent/make/permstatwindbg64.bat - agent/make/pmapproc.sh - agent/make/pmapproc64.sh - agent/make/pmapwindbg.bat - agent/make/pmapwindbg64.bat - agent/make/pstackproc.sh - agent/make/pstackproc64.sh - agent/make/pstackwindbg.bat - agent/make/pstackwindbg64.bat - agent/make/saenv.bat - agent/make/saenv.sh - agent/make/saenv64.bat - agent/make/saenv64.sh - agent/make/soqlproc.sh - agent/make/soqlproc64.sh - agent/make/soqlwindbg.bat - agent/make/soqlwindbg64.bat - agent/make/start-debug-server - agent/make/start-debug-server-proc.sh - agent/make/start-debug-server-proc64.sh - agent/make/start-debug-server-windbg.bat - agent/make/start-debug-server-windbg64.bat - agent/make/start-rmiregistry.bat - agent/make/start-rmiregistry.sh - agent/src/os/bsd/BsdDebuggerLocal.c - agent/src/os/bsd/MacosxDebuggerLocal.m - agent/src/os/bsd/Makefile - agent/src/os/bsd/StubDebuggerLocal.c - agent/src/os/bsd/elfmacros.h - agent/src/os/bsd/libproc.h - agent/src/os/bsd/libproc_impl.c - agent/src/os/bsd/libproc_impl.h - agent/src/os/bsd/mapfile - agent/src/os/bsd/ps_core.c - agent/src/os/bsd/ps_proc.c - agent/src/os/bsd/salibelf.c - agent/src/os/bsd/salibelf.h - agent/src/os/bsd/symtab.c - agent/src/os/bsd/symtab.h - agent/src/os/bsd/test.c - agent/src/os/linux/LinuxDebuggerLocal.c - agent/src/os/linux/Makefile - agent/src/os/linux/elfmacros.h - agent/src/os/linux/libproc.h - agent/src/os/linux/libproc_impl.c - agent/src/os/linux/libproc_impl.h - agent/src/os/linux/mapfile - agent/src/os/linux/proc_service.h - agent/src/os/linux/ps_core.c - agent/src/os/linux/ps_proc.c - agent/src/os/linux/salibelf.c - agent/src/os/linux/salibelf.h - agent/src/os/linux/symtab.c - agent/src/os/linux/symtab.h - agent/src/os/linux/test.c - agent/src/os/solaris/Makefile - agent/src/os/solaris/proc/Makefile - agent/src/os/solaris/proc/libproc.h - agent/src/os/solaris/proc/mapfile - agent/src/os/solaris/proc/salibproc.h - agent/src/os/solaris/proc/saproc.cpp - agent/src/os/solaris/proc/saproc_audit.cpp - agent/src/os/win32/windbg/Makefile - agent/src/os/win32/windbg/sawindbg.cpp - agent/src/scripts/README - agent/src/scripts/start-debug-server.bat - agent/src/scripts/start-debug-server.sh - agent/src/scripts/start-debug-server64.sh - agent/src/scripts/start-rmiregistry.bat - agent/src/scripts/start-rmiregistry.sh - agent/src/scripts/start-rmiregistry64.sh - agent/src/share/classes/META-INF/services/com.sun.jdi.connect.Connector - agent/src/share/classes/com/sun/java/swing/action/AboutAction.java - agent/src/share/classes/com/sun/java/swing/action/ActionManager.java - agent/src/share/classes/com/sun/java/swing/action/ActionUtilities.java - agent/src/share/classes/com/sun/java/swing/action/AlignCenterAction.java - agent/src/share/classes/com/sun/java/swing/action/AlignLeftAction.java - agent/src/share/classes/com/sun/java/swing/action/AlignRightAction.java - agent/src/share/classes/com/sun/java/swing/action/ApplyAction.java - agent/src/share/classes/com/sun/java/swing/action/BackAction.java - agent/src/share/classes/com/sun/java/swing/action/CancelAction.java - agent/src/share/classes/com/sun/java/swing/action/DelegateAction.java - agent/src/share/classes/com/sun/java/swing/action/ExitAction.java - agent/src/share/classes/com/sun/java/swing/action/FileMenu.java - agent/src/share/classes/com/sun/java/swing/action/FinishAction.java - agent/src/share/classes/com/sun/java/swing/action/HelpAction.java - agent/src/share/classes/com/sun/java/swing/action/HelpMenu.java - agent/src/share/classes/com/sun/java/swing/action/NewAction.java - agent/src/share/classes/com/sun/java/swing/action/NextAction.java - agent/src/share/classes/com/sun/java/swing/action/OkAction.java - agent/src/share/classes/com/sun/java/swing/action/OpenAction.java - agent/src/share/classes/com/sun/java/swing/action/SaveAction.java - agent/src/share/classes/com/sun/java/swing/action/SaveAsAction.java - agent/src/share/classes/com/sun/java/swing/action/StateChangeAction.java - agent/src/share/classes/com/sun/java/swing/action/ViewMenu.java - agent/src/share/classes/com/sun/java/swing/ui/CommonMenuBar.java - agent/src/share/classes/com/sun/java/swing/ui/CommonToolBar.java - agent/src/share/classes/com/sun/java/swing/ui/CommonUI.java - agent/src/share/classes/com/sun/java/swing/ui/OkCancelButtonPanel.java - agent/src/share/classes/com/sun/java/swing/ui/OkCancelDialog.java - agent/src/share/classes/com/sun/java/swing/ui/SplashScreen.java - agent/src/share/classes/com/sun/java/swing/ui/StatusBar.java - agent/src/share/classes/com/sun/java/swing/ui/TabsDlg.java - agent/src/share/classes/com/sun/java/swing/ui/ToggleActionPropertyChangeListener.java - agent/src/share/classes/com/sun/java/swing/ui/WizardDlg.java - agent/src/share/classes/images/toolbarButtonGraphics/development/Server16.gif - agent/src/share/classes/images/toolbarButtonGraphics/development/Server24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/About16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/About24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Delete16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Delete24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Find16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Help16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Help24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/History16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/History24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Information16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Information24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/New16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/New24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Open16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Open24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Save16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Save24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/SaveAs16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/SaveAs24.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/Zoom16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn16.gif - agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn24.gif - agent/src/share/classes/images/toolbarButtonGraphics/navigation/Down16.gif - agent/src/share/classes/images/toolbarButtonGraphics/navigation/Up16.gif - agent/src/share/classes/images/toolbarButtonGraphics/text/AlignCenter16.gif - agent/src/share/classes/images/toolbarButtonGraphics/text/AlignCenter24.gif - agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft16.gif - agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft24.gif - agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight16.gif - agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight24.gif - agent/src/share/classes/sun/jvm/hotspot/BsdVtblAccess.java - agent/src/share/classes/sun/jvm/hotspot/CLHSDB.java - agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java - agent/src/share/classes/sun/jvm/hotspot/DebugServer.java - agent/src/share/classes/sun/jvm/hotspot/HSDB.java - agent/src/share/classes/sun/jvm/hotspot/HelloWorld.java - agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java - agent/src/share/classes/sun/jvm/hotspot/HotSpotSolarisVtblAccess.java - agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java - agent/src/share/classes/sun/jvm/hotspot/LinuxVtblAccess.java - agent/src/share/classes/sun/jvm/hotspot/ObjectHistogram.java - agent/src/share/classes/sun/jvm/hotspot/RMIHelper.java - agent/src/share/classes/sun/jvm/hotspot/SAGetopt.java - agent/src/share/classes/sun/jvm/hotspot/SALauncher.java - agent/src/share/classes/sun/jvm/hotspot/SALauncherLoader.java - agent/src/share/classes/sun/jvm/hotspot/StackTrace.java - agent/src/share/classes/sun/jvm/hotspot/Win32VtblAccess.java - agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java - agent/src/share/classes/sun/jvm/hotspot/asm/DummySymbolFinder.java - agent/src/share/classes/sun/jvm/hotspot/asm/ImmediateOrRegister.java - agent/src/share/classes/sun/jvm/hotspot/asm/InstructionVisitor.java - agent/src/share/classes/sun/jvm/hotspot/asm/Operand.java - agent/src/share/classes/sun/jvm/hotspot/asm/Register.java - agent/src/share/classes/sun/jvm/hotspot/asm/SymbolFinder.java - agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCArgument.java - agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRegister.java - agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRegisterType.java - agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRegisters.java - agent/src/share/classes/sun/jvm/hotspot/c1/Runtime1.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciBaseObject.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciConstant.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciEnv.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciField.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciInstance.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciInstanceKlass.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciKlass.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciMetadata.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciMethodData.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciObjArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciObject.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciObjectFactory.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciSymbol.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciType.java - agent/src/share/classes/sun/jvm/hotspot/ci/ciTypeArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/classfile/ClassLoaderData.java - agent/src/share/classes/sun/jvm/hotspot/code/AdapterBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/BufferBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/CodeBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java - agent/src/share/classes/sun/jvm/hotspot/code/CodeCacheVisitor.java - agent/src/share/classes/sun/jvm/hotspot/code/CompressedReadStream.java - agent/src/share/classes/sun/jvm/hotspot/code/CompressedStream.java - agent/src/share/classes/sun/jvm/hotspot/code/CompressedWriteStream.java - agent/src/share/classes/sun/jvm/hotspot/code/ConstantDoubleValue.java - agent/src/share/classes/sun/jvm/hotspot/code/ConstantIntValue.java - agent/src/share/classes/sun/jvm/hotspot/code/ConstantLongValue.java - agent/src/share/classes/sun/jvm/hotspot/code/ConstantOopReadValue.java - agent/src/share/classes/sun/jvm/hotspot/code/DebugInfoReadStream.java - agent/src/share/classes/sun/jvm/hotspot/code/DebugInformationRecorder.java - agent/src/share/classes/sun/jvm/hotspot/code/DeoptimizationBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/ExceptionBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/Location.java - agent/src/share/classes/sun/jvm/hotspot/code/LocationValue.java - agent/src/share/classes/sun/jvm/hotspot/code/MethodHandlesAdapterBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/MonitorValue.java - agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java - agent/src/share/classes/sun/jvm/hotspot/code/ObjectValue.java - agent/src/share/classes/sun/jvm/hotspot/code/PCDesc.java - agent/src/share/classes/sun/jvm/hotspot/code/RuntimeStub.java - agent/src/share/classes/sun/jvm/hotspot/code/SafepointBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java - agent/src/share/classes/sun/jvm/hotspot/code/ScopeValue.java - agent/src/share/classes/sun/jvm/hotspot/code/SingletonBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/Stub.java - agent/src/share/classes/sun/jvm/hotspot/code/StubQueue.java - agent/src/share/classes/sun/jvm/hotspot/code/UncommonTrapBlob.java - agent/src/share/classes/sun/jvm/hotspot/code/VMRegImpl.java - agent/src/share/classes/sun/jvm/hotspot/compiler/CompileTask.java - agent/src/share/classes/sun/jvm/hotspot/compiler/ImmutableOopMap.java - agent/src/share/classes/sun/jvm/hotspot/compiler/ImmutableOopMapPair.java - agent/src/share/classes/sun/jvm/hotspot/compiler/ImmutableOopMapSet.java - agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapStream.java - agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapValue.java - agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapVisitor.java - agent/src/share/classes/sun/jvm/hotspot/debugger/Address.java - agent/src/share/classes/sun/jvm/hotspot/debugger/AddressException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/DataSource.java - agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java - agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerUtilities.java - agent/src/share/classes/sun/jvm/hotspot/debugger/InputLexer.java - agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/LongHashMap.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescription.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionAArch64.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionAMD64.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIA64.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIntelX86.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionPPC64.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC32Bit.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC64Bit.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionTwosComplement.java - agent/src/share/classes/sun/jvm/hotspot/debugger/MappedByteBufferDataSource.java - agent/src/share/classes/sun/jvm/hotspot/debugger/NoSuchSymbolException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/NotInHeapException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/OopHandle.java - agent/src/share/classes/sun/jvm/hotspot/debugger/Page.java - agent/src/share/classes/sun/jvm/hotspot/debugger/PageCache.java - agent/src/share/classes/sun/jvm/hotspot/debugger/PageFetcher.java - agent/src/share/classes/sun/jvm/hotspot/debugger/ProcessInfo.java - agent/src/share/classes/sun/jvm/hotspot/debugger/RandomAccessFileDataSource.java - agent/src/share/classes/sun/jvm/hotspot/debugger/ReadResult.java - agent/src/share/classes/sun/jvm/hotspot/debugger/SymbolLookup.java - agent/src/share/classes/sun/jvm/hotspot/debugger/ThreadAccess.java - agent/src/share/classes/sun/jvm/hotspot/debugger/ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/ThreadProxy.java - agent/src/share/classes/sun/jvm/hotspot/debugger/UnalignedAddressException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/UnmappedAddressException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/aarch64/AARCH64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/amd64/AMD64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdAddress.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdCDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdDebuggerLocal.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdOopHandle.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdThread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/BsdThreadContextFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/SharedObject.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/amd64/BsdAMD64CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/amd64/BsdAMD64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/x86/BsdX86CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/x86/BsdX86ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/AccessControl.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/ArrayType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/BaseClass.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/BitType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/BlockSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/CDebugInfoDataBase.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/CDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/CVAttributes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/ClosestSymbol.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/CompoundType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/DebugEvent.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/DefaultObjectVisitor.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/DoubleType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/EnumType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/Field.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/FieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/FloatType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/FunctionSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/FunctionType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/GlobalSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/IndexableFieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/IntType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/LineNumberInfo.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/LineNumberVisitor.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/LoadObject.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/LoadObjectComparator.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/LocalSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/MemberFunctionType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/NamedFieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/ObjectVisitor.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/PointerType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/ProcessControl.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/RefType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/Sym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/TemplateType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/Type.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/TypeVisitor.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/VoidType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicArrayType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicBaseClass.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicBitType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicBlockSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicCDebugInfoDataBase.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicCFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicCompoundType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicDebugEvent.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicDoubleType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicEnumType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicField.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicFloatType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicFunctionSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicFunctionType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicGlobalSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicIndexableFieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicIntType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicLineNumberInfo.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicLineNumberMapping.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicLocalSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicMemberFunctionType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicNamedFieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicPointerType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicRefType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/BasicVoidType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/CompoundTypeKind.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/LazyBlockSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/LazyType.java - agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/ResolveListener.java - agent/src/share/classes/sun/jvm/hotspot/debugger/dummy/DummyAddress.java - agent/src/share/classes/sun/jvm/hotspot/debugger/dummy/DummyDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/dummy/DummyOopHandle.java - agent/src/share/classes/sun/jvm/hotspot/debugger/ia64/IA64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxCDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxOopHandle.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxThread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxThreadContextFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/SharedObject.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/aarch64/LinuxAARCH64CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/aarch64/LinuxAARCH64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/ia64/LinuxIA64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/ppc64/LinuxPPC64CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/ppc64/LinuxPPC64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/sparc/LinuxSPARCCFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/sparc/LinuxSPARCThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/AddressDataSource.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/DSO.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFFile.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFFileParser.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFHashTable.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFHeader.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFProgramHeader.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFSectionHeader.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFStringTable.java - agent/src/share/classes/sun/jvm/hotspot/debugger/posix/elf/ELFSymbol.java - agent/src/share/classes/sun/jvm/hotspot/debugger/ppc64/PPC64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcAddress.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcCDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcCFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcOopHandle.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/SharedObject.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/aarch64/ProcAARCH64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/aarch64/ProcAARCH64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/aarch64/ProcAARCH64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/amd64/ProcAMD64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/amd64/ProcAMD64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/amd64/ProcAMD64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ppc64/ProcPPC64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ppc64/ProcPPC64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ppc64/ProcPPC64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/sparc/ProcSPARCThread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/sparc/ProcSPARCThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/sparc/ProcSPARCThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/x86/ProcX86Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/x86/ProcX86ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/proc/x86/ProcX86ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteAddress.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteOopHandle.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteThread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/aarch64/RemoteAARCH64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/aarch64/RemoteAARCH64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/aarch64/RemoteAARCH64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/amd64/RemoteAMD64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/amd64/RemoteAMD64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/amd64/RemoteAMD64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/ppc64/RemotePPC64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/ppc64/RemotePPC64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/ppc64/RemotePPC64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/sparc/RemoteSPARCThread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/sparc/RemoteSPARCThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/sparc/RemoteSPARCThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/x86/RemoteX86Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/x86/RemoteX86ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/remote/x86/RemoteX86ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/sparc/SPARCThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/AuxBfEfRecord.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/AuxFileRecord.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/AuxFunctionDefinitionRecord.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/AuxSectionDefinitionsRecord.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/AuxSymbolRecord.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/AuxWeakExternalRecord.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFFile.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFFileParser.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFHeader.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFLineNumber.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFRelocation.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFSymbol.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COFFSymbolConstants.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/COMDATSelectionTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/Characteristics.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DLLCharacteristics.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DataDirectory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugDirectory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugDirectoryEntry.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50MemberAttributes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50ReservedTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSAlignSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSFileIndex.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSGlobalPub.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSGlobalSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSGlobalTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSLibraries.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSMPC.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSModule.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSOffsetMap16.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSOffsetMap32.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSPreComp.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSPublic.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSPublicSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSSegMap.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSSegName.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSSrcLnSeg.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSSrcModule.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSStaticSym.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSSymbolBase.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSSymbols.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SSTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SegDesc.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SegDescEnums.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SegInfo.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SrcModFileDesc.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SrcModLineNumberMap.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50Subsection.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SubsectionDirectory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SubsectionTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SymbolEnums.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SymbolIterator.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50SymbolTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50TypeEnums.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50TypeIterator.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50TypeLeafIndices.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50WrongNumericTypeException.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DebugVC50X86RegisterEnums.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/DumpExports.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/ExportDirectoryTable.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/MachineTypes.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/OptionalHeader.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/OptionalHeaderDataDirectories.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/OptionalHeaderStandardFields.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/OptionalHeaderWindowsSpecificFields.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/SectionFlags.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/SectionHeader.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/TestDebugInfo.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/TestParser.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/TypeIndicators.java - agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/WindowsNTSubsystem.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/AddressDataSource.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/DLL.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgAddress.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgCDebugInfoBuilder.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgCDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebugger.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgOopHandle.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/amd64/WindbgAMD64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/amd64/WindbgAMD64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/amd64/WindbgAMD64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/ia64/WindbgIA64Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/ia64/WindbgIA64ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/ia64/WindbgIA64ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/x86/WindbgX86Thread.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/x86/WindbgX86ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/x86/WindbgX86ThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windows/amd64/WindowsAMD64CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/windows/x86/WindowsX86CFrame.java - agent/src/share/classes/sun/jvm/hotspot/debugger/x86/X86ThreadContext.java - agent/src/share/classes/sun/jvm/hotspot/gc/cms/AdaptiveFreeList.java - agent/src/share/classes/sun/jvm/hotspot/gc/cms/CMSBitMap.java - agent/src/share/classes/sun/jvm/hotspot/gc/cms/CMSCollector.java - agent/src/share/classes/sun/jvm/hotspot/gc/cms/CompactibleFreeListSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc/cms/ConcurrentMarkSweepGeneration.java - agent/src/share/classes/sun/jvm/hotspot/gc/cms/LinearAllocBlock.java - agent/src/share/classes/sun/jvm/hotspot/gc/cms/ParNewGeneration.java - agent/src/share/classes/sun/jvm/hotspot/gc/g1/G1CollectedHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc/g1/G1HeapRegionTable.java - agent/src/share/classes/sun/jvm/hotspot/gc/g1/G1MonitoringSupport.java - agent/src/share/classes/sun/jvm/hotspot/gc/g1/HeapRegion.java - agent/src/share/classes/sun/jvm/hotspot/gc/g1/HeapRegionManager.java - agent/src/share/classes/sun/jvm/hotspot/gc/g1/HeapRegionSetBase.java - agent/src/share/classes/sun/jvm/hotspot/gc/g1/HeapRegionSetCount.java - agent/src/share/classes/sun/jvm/hotspot/gc/parallel/ImmutableSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc/parallel/MutableSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc/parallel/PSOldGen.java - agent/src/share/classes/sun/jvm/hotspot/gc/parallel/PSYoungGen.java - agent/src/share/classes/sun/jvm/hotspot/gc/parallel/ParallelScavengeHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc/serial/DefNewGeneration.java - agent/src/share/classes/sun/jvm/hotspot/gc/serial/TenuredGeneration.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/CardGeneration.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeapName.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/CompactibleSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/ContiguousSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/G1YCType.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/GCCause.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/GCName.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/GCWhen.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/GenCollectedHeap.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/Generation.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/GenerationFactory.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/GenerationIsInClosure.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/GenerationSpec.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/OffsetTableContigSpace.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/Space.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/SpaceClosure.java - agent/src/share/classes/sun/jvm/hotspot/gc/shared/TenuredSpace.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecode.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeANewArray.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeBipush.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeCheckCast.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeDisassembler.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeGetField.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeGetPut.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeGetStatic.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeGoto.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeGotoW.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeIf.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeIinc.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeInstanceOf.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeInvoke.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeJmp.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeJsr.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeJsrW.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoad.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadStore.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLookupswitch.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeMultiANewArray.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeNew.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeNewArray.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodePutField.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodePutStatic.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeRet.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeSipush.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeStore.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeStream.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeTableswitch.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeVisitor.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWideable.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithCPIndex.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/Interpreter.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/InterpreterCodelet.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/LookupswitchPair.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/MaskFillerForNative.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/OffsetClosure.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/OopMapCacheEntry.java - agent/src/share/classes/sun/jvm/hotspot/interpreter/OopMapForCacheEntry.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ArrayReferenceImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ArrayTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/BaseLineInfo.java - agent/src/share/classes/sun/jvm/hotspot/jdi/BooleanTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/BooleanValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ByteTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ByteValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/CharTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/CharValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ClassLoaderReferenceImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ClassObjectReferenceImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ClassTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ConcreteMethodImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ConnectorImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/DoubleTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/DoubleValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/FieldImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/FloatTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/FloatValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/IntegerTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/IntegerValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/InterfaceTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/JNITypeParser.java - agent/src/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java - agent/src/share/classes/sun/jvm/hotspot/jdi/LineInfo.java - agent/src/share/classes/sun/jvm/hotspot/jdi/LocalVariableImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/LocationImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/LongTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/LongValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/MethodImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/MirrorImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/MonitorInfoImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/NonConcreteMethodImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ObjectReferenceImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/PrimitiveTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/PrimitiveValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/SACoreAttachingConnector.java - agent/src/share/classes/sun/jvm/hotspot/jdi/SADebugServer.java - agent/src/share/classes/sun/jvm/hotspot/jdi/SADebugServerAttachingConnector.java - agent/src/share/classes/sun/jvm/hotspot/jdi/SAJDIClassLoader.java - agent/src/share/classes/sun/jvm/hotspot/jdi/SAPIDAttachingConnector.java - agent/src/share/classes/sun/jvm/hotspot/jdi/SDE.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ShortTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ShortValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/StackFrameImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/StratumLineInfo.java - agent/src/share/classes/sun/jvm/hotspot/jdi/StringReferenceImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ThreadGroupReferenceImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ThreadReferenceImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/TypeComponentImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/TypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/VMModifiers.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ValueContainer.java - agent/src/share/classes/sun/jvm/hotspot/jdi/ValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/VoidTypeImpl.java - agent/src/share/classes/sun/jvm/hotspot/jdi/VoidValueImpl.java - agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary.java - agent/src/share/classes/sun/jvm/hotspot/memory/CodeHeap.java - agent/src/share/classes/sun/jvm/hotspot/memory/Dictionary.java - agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java - agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java - agent/src/share/classes/sun/jvm/hotspot/memory/HeapBlock.java - agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintEntry.java - agent/src/share/classes/sun/jvm/hotspot/memory/LoaderConstraintTable.java - agent/src/share/classes/sun/jvm/hotspot/memory/MemRegion.java - agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java - agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderTable.java - agent/src/share/classes/sun/jvm/hotspot/memory/ProtectionDomainCacheEntry.java - agent/src/share/classes/sun/jvm/hotspot/memory/ProtectionDomainEntry.java - agent/src/share/classes/sun/jvm/hotspot/memory/ReferenceType.java - agent/src/share/classes/sun/jvm/hotspot/memory/StringTable.java - agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java - agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java - agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java - agent/src/share/classes/sun/jvm/hotspot/memory/VirtualSpace.java - agent/src/share/classes/sun/jvm/hotspot/oops/AccessFlags.java - agent/src/share/classes/sun/jvm/hotspot/oops/ArgInfoData.java - agent/src/share/classes/sun/jvm/hotspot/oops/Array.java - agent/src/share/classes/sun/jvm/hotspot/oops/ArrayData.java - agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/oops/BitData.java - agent/src/share/classes/sun/jvm/hotspot/oops/BooleanField.java - agent/src/share/classes/sun/jvm/hotspot/oops/BranchData.java - agent/src/share/classes/sun/jvm/hotspot/oops/BreakpointInfo.java - agent/src/share/classes/sun/jvm/hotspot/oops/ByteField.java - agent/src/share/classes/sun/jvm/hotspot/oops/CIntField.java - agent/src/share/classes/sun/jvm/hotspot/oops/CallTypeData.java - agent/src/share/classes/sun/jvm/hotspot/oops/CallTypeDataInterface.java - agent/src/share/classes/sun/jvm/hotspot/oops/CellTypeState.java - agent/src/share/classes/sun/jvm/hotspot/oops/CellTypeStateList.java - agent/src/share/classes/sun/jvm/hotspot/oops/CharField.java - agent/src/share/classes/sun/jvm/hotspot/oops/CheckedExceptionElement.java - agent/src/share/classes/sun/jvm/hotspot/oops/CompiledICHolder.java - agent/src/share/classes/sun/jvm/hotspot/oops/CompressedLineNumberReadStream.java - agent/src/share/classes/sun/jvm/hotspot/oops/ConstMethod.java - agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java - agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java - agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheEntry.java - agent/src/share/classes/sun/jvm/hotspot/oops/CounterData.java - agent/src/share/classes/sun/jvm/hotspot/oops/DataLayout.java - agent/src/share/classes/sun/jvm/hotspot/oops/DefaultHeapVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/DefaultMetadataVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/DefaultOopVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/DoubleField.java - agent/src/share/classes/sun/jvm/hotspot/oops/ExceptionTableElement.java - agent/src/share/classes/sun/jvm/hotspot/oops/Field.java - agent/src/share/classes/sun/jvm/hotspot/oops/FieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/oops/FieldType.java - agent/src/share/classes/sun/jvm/hotspot/oops/FieldVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/FloatField.java - agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java - agent/src/share/classes/sun/jvm/hotspot/oops/HeapPrinter.java - agent/src/share/classes/sun/jvm/hotspot/oops/HeapVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/IndexableFieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java - agent/src/share/classes/sun/jvm/hotspot/oops/InstanceClassLoaderKlass.java - agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java - agent/src/share/classes/sun/jvm/hotspot/oops/InstanceMirrorKlass.java - agent/src/share/classes/sun/jvm/hotspot/oops/InstanceRefKlass.java - agent/src/share/classes/sun/jvm/hotspot/oops/IntField.java - agent/src/share/classes/sun/jvm/hotspot/oops/JVMDIClassStatus.java - agent/src/share/classes/sun/jvm/hotspot/oops/JumpData.java - agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java - agent/src/share/classes/sun/jvm/hotspot/oops/LineNumberTableElement.java - agent/src/share/classes/sun/jvm/hotspot/oops/LocalVariableTableElement.java - agent/src/share/classes/sun/jvm/hotspot/oops/LongField.java - agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java - agent/src/share/classes/sun/jvm/hotspot/oops/Metadata.java - agent/src/share/classes/sun/jvm/hotspot/oops/MetadataField.java - agent/src/share/classes/sun/jvm/hotspot/oops/MetadataVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/Method.java - agent/src/share/classes/sun/jvm/hotspot/oops/MethodCounters.java - agent/src/share/classes/sun/jvm/hotspot/oops/MethodData.java - agent/src/share/classes/sun/jvm/hotspot/oops/MethodDataInterface.java - agent/src/share/classes/sun/jvm/hotspot/oops/MultiBranchData.java - agent/src/share/classes/sun/jvm/hotspot/oops/MutationException.java - agent/src/share/classes/sun/jvm/hotspot/oops/NamedFieldIdentifier.java - agent/src/share/classes/sun/jvm/hotspot/oops/NarrowKlassField.java - agent/src/share/classes/sun/jvm/hotspot/oops/NarrowOopField.java - agent/src/share/classes/sun/jvm/hotspot/oops/ObjArray.java - agent/src/share/classes/sun/jvm/hotspot/oops/ObjArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java - agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogram.java - agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogramElement.java - agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java - agent/src/share/classes/sun/jvm/hotspot/oops/OopField.java - agent/src/share/classes/sun/jvm/hotspot/oops/OopPrinter.java - agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java - agent/src/share/classes/sun/jvm/hotspot/oops/OopVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/ParametersTypeData.java - agent/src/share/classes/sun/jvm/hotspot/oops/ProfileData.java - agent/src/share/classes/sun/jvm/hotspot/oops/RawHeapVisitor.java - agent/src/share/classes/sun/jvm/hotspot/oops/ReceiverTypeData.java - agent/src/share/classes/sun/jvm/hotspot/oops/RetData.java - agent/src/share/classes/sun/jvm/hotspot/oops/ReturnTypeEntry.java - agent/src/share/classes/sun/jvm/hotspot/oops/ShortField.java - agent/src/share/classes/sun/jvm/hotspot/oops/SpeculativeTrapData.java - agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java - agent/src/share/classes/sun/jvm/hotspot/oops/TypeArray.java - agent/src/share/classes/sun/jvm/hotspot/oops/TypeArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/oops/TypeEntries.java - agent/src/share/classes/sun/jvm/hotspot/oops/TypeEntriesAtCall.java - agent/src/share/classes/sun/jvm/hotspot/oops/TypeStackSlotEntries.java - agent/src/share/classes/sun/jvm/hotspot/oops/UnknownOopException.java - agent/src/share/classes/sun/jvm/hotspot/oops/VirtualCallData.java - agent/src/share/classes/sun/jvm/hotspot/oops/VirtualCallTypeData.java - agent/src/share/classes/sun/jvm/hotspot/oops/java_lang_Class.java - agent/src/share/classes/sun/jvm/hotspot/opto/Block.java - agent/src/share/classes/sun/jvm/hotspot/opto/Block_Array.java - agent/src/share/classes/sun/jvm/hotspot/opto/Block_List.java - agent/src/share/classes/sun/jvm/hotspot/opto/CallDynamicJavaNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/CallJavaNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/CallNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/CallRuntimeNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/CallStaticJavaNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/Compile.java - agent/src/share/classes/sun/jvm/hotspot/opto/CompilerPhaseType.java - agent/src/share/classes/sun/jvm/hotspot/opto/HaltNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/InlineTree.java - agent/src/share/classes/sun/jvm/hotspot/opto/JVMState.java - agent/src/share/classes/sun/jvm/hotspot/opto/LoopNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachCallJavaNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachCallNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachCallRuntimeNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachCallStaticJavaNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachIfNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachReturnNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MachSafePointNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/MultiNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/Node.java - agent/src/share/classes/sun/jvm/hotspot/opto/Node_Array.java - agent/src/share/classes/sun/jvm/hotspot/opto/Node_List.java - agent/src/share/classes/sun/jvm/hotspot/opto/Phase.java - agent/src/share/classes/sun/jvm/hotspot/opto/PhaseCFG.java - agent/src/share/classes/sun/jvm/hotspot/opto/PhaseRegAlloc.java - agent/src/share/classes/sun/jvm/hotspot/opto/PhiNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/ProjNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/RegionNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/RootNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/SafePointNode.java - agent/src/share/classes/sun/jvm/hotspot/opto/TypeNode.java - agent/src/share/classes/sun/jvm/hotspot/prims/JvmtiExport.java - agent/src/share/classes/sun/jvm/hotspot/runtime/AddressVisitor.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ArgumentSizeComputer.java - agent/src/share/classes/sun/jvm/hotspot/runtime/Arguments.java - agent/src/share/classes/sun/jvm/hotspot/runtime/BasicLock.java - agent/src/share/classes/sun/jvm/hotspot/runtime/BasicObjectLock.java - agent/src/share/classes/sun/jvm/hotspot/runtime/BasicType.java - agent/src/share/classes/sun/jvm/hotspot/runtime/BasicTypeSize.java - agent/src/share/classes/sun/jvm/hotspot/runtime/Bytes.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java - agent/src/share/classes/sun/jvm/hotspot/runtime/CodeCacheSweeperThread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/CompiledVFrame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/CompilerThread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ConcurrentLocksPrinter.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ConstructionException.java - agent/src/share/classes/sun/jvm/hotspot/runtime/DeadlockDetector.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ExternalVFrame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/Flags.java - agent/src/share/classes/sun/jvm/hotspot/runtime/Frame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/InstanceConstructor.java - agent/src/share/classes/sun/jvm/hotspot/runtime/InterpretedVFrame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JNIHandleBlock.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JNIHandles.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JNIid.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JavaCallWrapper.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JavaThread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JavaThreadFactory.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JavaThreadState.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JavaVFrame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/JvmtiAgentThread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/MonitorInfo.java - agent/src/share/classes/sun/jvm/hotspot/runtime/NativeSignatureIterator.java - agent/src/share/classes/sun/jvm/hotspot/runtime/OSThread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ObjectMonitor.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ObjectSynchronizer.java - agent/src/share/classes/sun/jvm/hotspot/runtime/PerfDataEntry.java - agent/src/share/classes/sun/jvm/hotspot/runtime/PerfDataPrologue.java - agent/src/share/classes/sun/jvm/hotspot/runtime/PerfMemory.java - agent/src/share/classes/sun/jvm/hotspot/runtime/RegisterMap.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ResultTypeFinder.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ServiceThread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/SignatureConverter.java - agent/src/share/classes/sun/jvm/hotspot/runtime/SignatureInfo.java - agent/src/share/classes/sun/jvm/hotspot/runtime/SignatureIterator.java - agent/src/share/classes/sun/jvm/hotspot/runtime/StackFrameStream.java - agent/src/share/classes/sun/jvm/hotspot/runtime/StackValue.java - agent/src/share/classes/sun/jvm/hotspot/runtime/StackValueCollection.java - agent/src/share/classes/sun/jvm/hotspot/runtime/StaticBaseConstructor.java - agent/src/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java - agent/src/share/classes/sun/jvm/hotspot/runtime/Thread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ThreadLocalAllocBuffer.java - agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VFrame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VMObject.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VMObjectFactory.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VMOps.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VMReg.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VMVersionMismatchException.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VirtualBaseConstructor.java - agent/src/share/classes/sun/jvm/hotspot/runtime/VirtualConstructor.java - agent/src/share/classes/sun/jvm/hotspot/runtime/WatcherThread.java - agent/src/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64CurrentFrameGuess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64Frame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64JavaCallWrapper.java - agent/src/share/classes/sun/jvm/hotspot/runtime/aarch64/AARCH64RegisterMap.java - agent/src/share/classes/sun/jvm/hotspot/runtime/amd64/AMD64CurrentFrameGuess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/amd64/AMD64JavaCallWrapper.java - agent/src/share/classes/sun/jvm/hotspot/runtime/bsd/BsdSignals.java - agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_amd64/BsdAMD64JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_x86/BsdSignals.java - agent/src/share/classes/sun/jvm/hotspot/runtime/bsd_x86/BsdX86JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/linux/LinuxSignals.java - agent/src/share/classes/sun/jvm/hotspot/runtime/linux_aarch64/LinuxAARCH64JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/linux_amd64/LinuxAMD64JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/linux_ppc64/LinuxPPC64JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/linux_sparc/LinuxSPARCJavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/linux_x86/LinuxSignals.java - agent/src/share/classes/sun/jvm/hotspot/runtime/linux_x86/LinuxX86JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/posix/POSIXSignals.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64CurrentFrameGuess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64Frame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64JavaCallWrapper.java - agent/src/share/classes/sun/jvm/hotspot/runtime/ppc64/PPC64RegisterMap.java - agent/src/share/classes/sun/jvm/hotspot/runtime/solaris_amd64/SolarisAMD64JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/solaris_sparc/SolarisSPARCJavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/solaris_x86/SolarisX86JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/sparc/SPARCFrame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/sparc/SPARCRegisterMap.java - agent/src/share/classes/sun/jvm/hotspot/runtime/vmSymbols.java - agent/src/share/classes/sun/jvm/hotspot/runtime/win32_amd64/Win32AMD64JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/win32_x86/Win32X86JavaThreadPDAccess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86CurrentFrameGuess.java - agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java - agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86JavaCallWrapper.java - agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86RegisterMap.java - agent/src/share/classes/sun/jvm/hotspot/tools/ClassLoaderStats.java - agent/src/share/classes/sun/jvm/hotspot/tools/FinalizerInfo.java - agent/src/share/classes/sun/jvm/hotspot/tools/FlagDumper.java - agent/src/share/classes/sun/jvm/hotspot/tools/HeapDumper.java - agent/src/share/classes/sun/jvm/hotspot/tools/HeapSummary.java - agent/src/share/classes/sun/jvm/hotspot/tools/JInfo.java - agent/src/share/classes/sun/jvm/hotspot/tools/JMap.java - agent/src/share/classes/sun/jvm/hotspot/tools/JSnap.java - agent/src/share/classes/sun/jvm/hotspot/tools/JStack.java - agent/src/share/classes/sun/jvm/hotspot/tools/ObjectHistogram.java - agent/src/share/classes/sun/jvm/hotspot/tools/PMap.java - agent/src/share/classes/sun/jvm/hotspot/tools/PStack.java - agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java - agent/src/share/classes/sun/jvm/hotspot/tools/SysPropsDumper.java - agent/src/share/classes/sun/jvm/hotspot/tools/Tool.java - agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java - agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassDump.java - agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassFilter.java - agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java - agent/src/share/classes/sun/jvm/hotspot/tools/jcore/NameFilter.java - agent/src/share/classes/sun/jvm/hotspot/tools/jcore/PackageNameFilter.java - agent/src/share/classes/sun/jvm/hotspot/tools/soql/JSDB.java - agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java - agent/src/share/classes/sun/jvm/hotspot/types/AddressField.java - agent/src/share/classes/sun/jvm/hotspot/types/CIntegerField.java - agent/src/share/classes/sun/jvm/hotspot/types/CIntegerType.java - agent/src/share/classes/sun/jvm/hotspot/types/Field.java - agent/src/share/classes/sun/jvm/hotspot/types/JBooleanField.java - agent/src/share/classes/sun/jvm/hotspot/types/JByteField.java - agent/src/share/classes/sun/jvm/hotspot/types/JCharField.java - agent/src/share/classes/sun/jvm/hotspot/types/JDoubleField.java - agent/src/share/classes/sun/jvm/hotspot/types/JFloatField.java - agent/src/share/classes/sun/jvm/hotspot/types/JIntField.java - agent/src/share/classes/sun/jvm/hotspot/types/JLongField.java - agent/src/share/classes/sun/jvm/hotspot/types/JShortField.java - agent/src/share/classes/sun/jvm/hotspot/types/NarrowOopField.java - agent/src/share/classes/sun/jvm/hotspot/types/OopField.java - agent/src/share/classes/sun/jvm/hotspot/types/PointerType.java - agent/src/share/classes/sun/jvm/hotspot/types/Type.java - agent/src/share/classes/sun/jvm/hotspot/types/TypeDataBase.java - agent/src/share/classes/sun/jvm/hotspot/types/WrongTypeException.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicAddressFieldWrapper.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicCIntegerField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicCIntegerType.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicFieldWrapper.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJBooleanField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJByteField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJCharField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJDoubleField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJFloatField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJIntField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJLongField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicJShortField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicNarrowOopField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicOopField.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicPointerType.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicType.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicVtblAccess.java - agent/src/share/classes/sun/jvm/hotspot/types/basic/VtblAccess.java - agent/src/share/classes/sun/jvm/hotspot/ui/AnnotatedMemoryPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/Annotation.java - agent/src/share/classes/sun/jvm/hotspot/ui/CommandProcessorPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/DeadlockDetectionPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/DebuggerConsolePanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/EditableAtEndDocument.java - agent/src/share/classes/sun/jvm/hotspot/ui/Editor.java - agent/src/share/classes/sun/jvm/hotspot/ui/EditorCommands.java - agent/src/share/classes/sun/jvm/hotspot/ui/EditorFactory.java - agent/src/share/classes/sun/jvm/hotspot/ui/FindByQueryPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/FindInCodeCachePanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/FindInHeapPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/FindPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/FrameWrapper.java - agent/src/share/classes/sun/jvm/hotspot/ui/GraphicsUtilities.java - agent/src/share/classes/sun/jvm/hotspot/ui/HeapParametersPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/HighPrecisionJScrollBar.java - agent/src/share/classes/sun/jvm/hotspot/ui/HistoryComboBox.java - agent/src/share/classes/sun/jvm/hotspot/ui/Inspector.java - agent/src/share/classes/sun/jvm/hotspot/ui/JFrameWrapper.java - agent/src/share/classes/sun/jvm/hotspot/ui/JInternalFrameWrapper.java - agent/src/share/classes/sun/jvm/hotspot/ui/JavaStackTracePanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/JavaThreadsPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/MemoryPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/MemoryViewer.java - agent/src/share/classes/sun/jvm/hotspot/ui/MonitorCacheDumpPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/ObjectHistogramPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/ObjectListPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/ProcessListPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/ProgressBarPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/SAEditorPane.java - agent/src/share/classes/sun/jvm/hotspot/ui/SAListener.java - agent/src/share/classes/sun/jvm/hotspot/ui/SAPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/SourceCodePanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/StringTransferable.java - agent/src/share/classes/sun/jvm/hotspot/ui/SysPropsPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/ThreadInfoPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/VMFlagsPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/VMVersionInfoPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/FindAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/FindClassesAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/FindCrashesAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/HSDBActionManager.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/InspectAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/JavaStackTraceAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/MemoryAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/ShowAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/action/ThreadInfoAction.java - agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/ClassBrowserPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/CodeViewerPanel.java - agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java - agent/src/share/classes/sun/jvm/hotspot/ui/resources/arrow.png - agent/src/share/classes/sun/jvm/hotspot/ui/resources/breakpoint.png - agent/src/share/classes/sun/jvm/hotspot/ui/resources/triangle.png - agent/src/share/classes/sun/jvm/hotspot/ui/table/LongCellRenderer.java - agent/src/share/classes/sun/jvm/hotspot/ui/table/SortHeaderCellRenderer.java - agent/src/share/classes/sun/jvm/hotspot/ui/table/SortHeaderMouseAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/table/SortableTableModel.java - agent/src/share/classes/sun/jvm/hotspot/ui/table/TableModelComparator.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/BadAddressTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/BooleanTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/CStringTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/CTypeTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/CharTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/DoubleTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/FieldTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/FloatTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/LongTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/MetadataTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/OopTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/RevPtrsTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/RootTreeNodeAdapter.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/SimpleTreeGroupNode.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/SimpleTreeModel.java - agent/src/share/classes/sun/jvm/hotspot/ui/tree/SimpleTreeNode.java - agent/src/share/classes/sun/jvm/hotspot/ui/treetable/AbstractTreeTableModel.java - agent/src/share/classes/sun/jvm/hotspot/ui/treetable/JTreeTable.java - agent/src/share/classes/sun/jvm/hotspot/ui/treetable/SimpleTreeTableModel.java - agent/src/share/classes/sun/jvm/hotspot/ui/treetable/TreeTableModel.java - agent/src/share/classes/sun/jvm/hotspot/ui/treetable/TreeTableModelAdapter.java - agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java - agent/src/share/classes/sun/jvm/hotspot/utilities/AddressOps.java - agent/src/share/classes/sun/jvm/hotspot/utilities/AltPlatformInfo.java - agent/src/share/classes/sun/jvm/hotspot/utilities/Assert.java - agent/src/share/classes/sun/jvm/hotspot/utilities/AssertionFailure.java - agent/src/share/classes/sun/jvm/hotspot/utilities/BasicHashtable.java - agent/src/share/classes/sun/jvm/hotspot/utilities/BasicHashtableEntry.java - agent/src/share/classes/sun/jvm/hotspot/utilities/BitMap.java - agent/src/share/classes/sun/jvm/hotspot/utilities/BitMapClosure.java - agent/src/share/classes/sun/jvm/hotspot/utilities/Bits.java - agent/src/share/classes/sun/jvm/hotspot/utilities/CPPExpressions.java - agent/src/share/classes/sun/jvm/hotspot/utilities/CStringUtilities.java - agent/src/share/classes/sun/jvm/hotspot/utilities/CompactHashTable.java - agent/src/share/classes/sun/jvm/hotspot/utilities/ConstIterator.java - agent/src/share/classes/sun/jvm/hotspot/utilities/ConstantTag.java - agent/src/share/classes/sun/jvm/hotspot/utilities/FindObjectByType.java - agent/src/share/classes/sun/jvm/hotspot/utilities/GenericArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/GenericGrowableArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/GrowableArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java - agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableBucket.java - agent/src/share/classes/sun/jvm/hotspot/utilities/HashtableEntry.java - agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java - agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGraphWriter.java - agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java - agent/src/share/classes/sun/jvm/hotspot/utilities/HeapProgressThunk.java - agent/src/share/classes/sun/jvm/hotspot/utilities/IntArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/IntegerEnum.java - agent/src/share/classes/sun/jvm/hotspot/utilities/Interval.java - agent/src/share/classes/sun/jvm/hotspot/utilities/IntervalNode.java - agent/src/share/classes/sun/jvm/hotspot/utilities/IntervalTree.java - agent/src/share/classes/sun/jvm/hotspot/utilities/KlassArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/LivenessAnalysis.java - agent/src/share/classes/sun/jvm/hotspot/utilities/LivenessPath.java - agent/src/share/classes/sun/jvm/hotspot/utilities/LivenessPathElement.java - agent/src/share/classes/sun/jvm/hotspot/utilities/LivenessPathList.java - agent/src/share/classes/sun/jvm/hotspot/utilities/MarkBits.java - agent/src/share/classes/sun/jvm/hotspot/utilities/MessageQueue.java - agent/src/share/classes/sun/jvm/hotspot/utilities/MessageQueueBackend.java - agent/src/share/classes/sun/jvm/hotspot/utilities/MethodArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/ObjectReader.java - agent/src/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java - agent/src/share/classes/sun/jvm/hotspot/utilities/PointerFinder.java - agent/src/share/classes/sun/jvm/hotspot/utilities/PointerLocation.java - agent/src/share/classes/sun/jvm/hotspot/utilities/ProcImageClassLoader.java - agent/src/share/classes/sun/jvm/hotspot/utilities/ProgressiveHeapVisitor.java - agent/src/share/classes/sun/jvm/hotspot/utilities/RBColor.java - agent/src/share/classes/sun/jvm/hotspot/utilities/RBNode.java - agent/src/share/classes/sun/jvm/hotspot/utilities/RBTree.java - agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrs.java - agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java - agent/src/share/classes/sun/jvm/hotspot/utilities/RobustOopDeterminator.java - agent/src/share/classes/sun/jvm/hotspot/utilities/StreamMonitor.java - agent/src/share/classes/sun/jvm/hotspot/utilities/SystemDictionaryHelper.java - agent/src/share/classes/sun/jvm/hotspot/utilities/TwoOopHashtable.java - agent/src/share/classes/sun/jvm/hotspot/utilities/U1Array.java - agent/src/share/classes/sun/jvm/hotspot/utilities/U2Array.java - agent/src/share/classes/sun/jvm/hotspot/utilities/UnsupportedPlatformException.java - agent/src/share/classes/sun/jvm/hotspot/utilities/WorkerThread.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedBoolean.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedByte.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedChar.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedDouble.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedFloat.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedInt.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedLong.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedObject.java - agent/src/share/classes/sun/jvm/hotspot/utilities/memo/MemoizedShort.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/Callable.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/DefaultScriptObject.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/InvocableCallable.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaClass.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactory.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactoryImpl.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaField.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFrame.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaHeap.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstance.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaKlass.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaMethod.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaObjArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaObjArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaObject.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaScriptEngine.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaString.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaThread.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaTypeArray.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaTypeArrayKlass.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaVM.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSList.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSMap.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSMetadata.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/MapScriptObject.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/MethodCallable.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/ObjectVisitor.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/SOQLEngine.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/SOQLException.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/SOQLQuery.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/ScriptObject.java - agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js - agent/src/share/native/sadis.c - agent/test/jdi/README.jjh - agent/test/jdi/SASanityChecker.java - agent/test/jdi/TEST.ROOT - agent/test/jdi/TargetAdapter.java - agent/test/jdi/TargetListener.java - agent/test/jdi/TestScaffold.java - agent/test/jdi/VMConnection.java - agent/test/jdi/jstack.sh - agent/test/jdi/jstack64.sh - agent/test/jdi/multivm.java - agent/test/jdi/multivm.sh - agent/test/jdi/runjdb.sh - agent/test/jdi/runjpda.sh - agent/test/jdi/runsa.sh - agent/test/jdi/sagclient.java - agent/test/jdi/sagdoit.java - agent/test/jdi/sagtarg.java - agent/test/jdi/sagtest.java - agent/test/jdi/sasanity.sh - agent/test/jdi/serialvm.java - agent/test/jdi/serialvm.sh - agent/test/libproc/LibprocClient.java - agent/test/libproc/LibprocTest.java - agent/test/libproc/Makefile - agent/test/libproc/README - agent/test/libproc/libproctest.sh - agent/test/libproc/libproctest64.sh - make/aix/makefiles/sa.make - make/aix/makefiles/saproc.make - make/bsd/makefiles/sa.make - make/bsd/makefiles/saproc.make - make/gensrc/Gensrc-jdk.vm.ci.gmk - make/jdk6_hotspot_distro - make/linux/makefiles/sa.make - make/linux/makefiles/saproc.make - make/sa.files ! make/share/makefiles/mapfile-vers - make/solaris/makefiles/sa.make - make/solaris/makefiles/saproc.make - make/windows/makefiles/sa.make - src/cpu/aarch64/vm/bytecodeInterpreter_aarch64.cpp - src/cpu/aarch64/vm/bytecodeInterpreter_aarch64.hpp - src/cpu/aarch64/vm/bytecodeInterpreter_aarch64.inline.hpp - src/cpu/aarch64/vm/cppInterpreterGenerator_aarch64.hpp - src/cpu/aarch64/vm/interpreterGenerator_aarch64.hpp - src/cpu/aarch64/vm/interpreter_aarch64.cpp - src/cpu/aarch64/vm/interpreter_aarch64.hpp - src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.hpp - src/cpu/aarch64/vm/templateInterpreter_aarch64.cpp - src/cpu/aarch64/vm/templateInterpreter_aarch64.hpp - src/cpu/ppc/vm/bytecodeInterpreter_ppc.hpp - src/cpu/ppc/vm/bytecodeInterpreter_ppc.inline.hpp - src/cpu/ppc/vm/cppInterpreterGenerator_ppc.hpp - src/cpu/ppc/vm/cppInterpreter_ppc.cpp - src/cpu/ppc/vm/cppInterpreter_ppc.hpp - src/cpu/ppc/vm/interpreterGenerator_ppc.hpp - src/cpu/ppc/vm/interpreter_ppc.cpp - src/cpu/ppc/vm/interpreter_ppc.hpp - src/cpu/ppc/vm/templateInterpreterGenerator_ppc.hpp - src/cpu/ppc/vm/templateInterpreter_ppc.cpp - src/cpu/ppc/vm/templateInterpreter_ppc.hpp - src/cpu/sparc/vm/bytecodeInterpreter_sparc.cpp - src/cpu/sparc/vm/bytecodeInterpreter_sparc.hpp - src/cpu/sparc/vm/bytecodeInterpreter_sparc.inline.hpp - src/cpu/sparc/vm/cppInterpreterGenerator_sparc.hpp - src/cpu/sparc/vm/cppInterpreter_sparc.cpp - src/cpu/sparc/vm/cppInterpreter_sparc.hpp - src/cpu/sparc/vm/interpreterGenerator_sparc.hpp - src/cpu/sparc/vm/interpreter_sparc.cpp - src/cpu/sparc/vm/interpreter_sparc.hpp - src/cpu/sparc/vm/templateInterpreterGenerator_sparc.hpp - src/cpu/sparc/vm/templateInterpreter_sparc.cpp - src/cpu/sparc/vm/templateInterpreter_sparc.hpp + src/cpu/x86/vm/abstractInterpreter_x86.cpp - src/cpu/x86/vm/bytecodeInterpreter_x86.cpp - src/cpu/x86/vm/bytecodeInterpreter_x86.hpp - src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp - src/cpu/x86/vm/cppInterpreterGenerator_x86.hpp - src/cpu/x86/vm/cppInterpreter_x86.cpp - src/cpu/x86/vm/cppInterpreter_x86.hpp ! src/cpu/x86/vm/frame_x86.cpp ! src/cpu/x86/vm/interp_masm_x86.cpp - src/cpu/x86/vm/interpreterGenerator_x86.cpp - src/cpu/x86/vm/interpreterGenerator_x86.hpp - src/cpu/x86/vm/interpreter_x86.hpp - src/cpu/x86/vm/interpreter_x86_32.cpp - src/cpu/x86/vm/interpreter_x86_64.cpp - src/cpu/x86/vm/macroAssembler_x86_libm.cpp ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp + src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp - src/cpu/x86/vm/templateInterpreterGenerator_x86.hpp - src/cpu/x86/vm/templateInterpreter_x86.cpp - src/cpu/x86/vm/templateInterpreter_x86.hpp - src/cpu/x86/vm/templateInterpreter_x86_32.cpp - src/cpu/x86/vm/templateInterpreter_x86_64.cpp ! src/cpu/x86/vm/templateTable_x86.cpp - src/cpu/zero/vm/cppInterpreterGenerator_zero.hpp - src/cpu/zero/vm/interp_masm_zero.cpp - src/cpu/zero/vm/interpreterGenerator_zero.hpp - src/cpu/zero/vm/interpreter_zero.cpp - src/cpu/zero/vm/interpreter_zero.hpp - src/cpu/zero/vm/register_definitions_zero.cpp - src/cpu/zero/vm/templateInterpreterGenerator_zero.hpp - src/cpu/zero/vm/templateInterpreter_zero.cpp - src/cpu/zero/vm/templateInterpreter_zero.hpp - src/cpu/zero/vm/templateTable_zero.cpp - src/cpu/zero/vm/templateTable_zero.hpp - src/jdk.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/CompilationResult.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/DataSection.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/InfopointReason.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspotvmconfig/src/jdk/vm/ci/hotspotvmconfig/HotSpotVMManual.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options.processor/src/META-INF/services/javax.annotation.processing.Processor - src/jdk.vm.ci/share/classes/jdk.vm.ci.options.processor/src/jdk/vm/ci/options/processor/OptionProcessor.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/DerivedOptionValue.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/NestedBooleanOptionValue.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/Option.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/OptionDescriptor.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/OptionDescriptors.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/OptionType.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/OptionValue.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/OptionsLoader.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/OptionsParser.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.options/src/jdk/vm/ci/options/StableOptionValue.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.service.processor/src/META-INF/services/javax.annotation.processing.Processor - src/jdk.vm.ci/share/classes/jdk.vm.ci.service.processor/src/jdk/vm/ci/service/processor/ServiceProviderProcessor.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.service/.checkstyle_checks.xml - src/jdk.vm.ci/share/classes/jdk.vm.ci.service/src/jdk/vm/ci/service/ServiceProvider.java - src/jdk.vm.ci/share/classes/jdk.vm.ci.service/src/jdk/vm/ci/service/Services.java - src/os/aix/vm/thread_aix.inline.hpp - src/os/aix/vm/vmError_aix.cpp - src/os/bsd/vm/thread_bsd.inline.hpp - src/os/bsd/vm/vmError_bsd.cpp - src/os/linux/vm/thread_linux.inline.hpp - src/os/linux/vm/vmError_linux.cpp - src/os/solaris/vm/thread_solaris.inline.hpp - src/os/solaris/vm/vmError_solaris.cpp - src/os/windows/vm/thread_windows.inline.hpp - src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.cpp - src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.hpp - src/os_cpu/bsd_x86/vm/threadLS_bsd_x86.cpp - src/os_cpu/bsd_x86/vm/threadLS_bsd_x86.hpp - src/os_cpu/bsd_zero/vm/threadLS_bsd_zero.cpp - src/os_cpu/bsd_zero/vm/threadLS_bsd_zero.hpp - src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.cpp - src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.hpp - src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.cpp - src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.hpp - src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp - src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp - src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp - src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp - src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp - src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp - src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.cpp - src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.hpp - src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.cpp - src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.hpp - src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp - src/os_cpu/windows_x86/vm/threadLS_windows_x86.hpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/classFileParser.hpp ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/vmSymbols.cpp ! src/share/vm/classfile/vmSymbols.hpp - src/share/vm/gc/g1/concurrentMark.cpp - src/share/vm/gc/g1/concurrentMark.hpp - src/share/vm/gc/g1/concurrentMark.inline.hpp - src/share/vm/gc/g1/g1ErgoVerbose.cpp - src/share/vm/gc/g1/g1ErgoVerbose.hpp - src/share/vm/gc/g1/g1HRPrinter.cpp - src/share/vm/gc/g1/g1Log.cpp - src/share/vm/gc/g1/g1Log.hpp - src/share/vm/gc/g1/satbQueue.cpp - src/share/vm/gc/g1/satbQueue.hpp ! src/share/vm/gc/parallel/psCompactionManager.cpp ! src/share/vm/gc/parallel/psParallelCompact.cpp ! src/share/vm/gc/parallel/psPromotionManager.cpp ! src/share/vm/gc/serial/markSweep.cpp + src/share/vm/interpreter/abstractInterpreter.cpp ! src/share/vm/interpreter/abstractInterpreter.hpp ! src/share/vm/interpreter/bytecodeTracer.cpp ! src/share/vm/interpreter/interpreter.cpp - src/share/vm/interpreter/interpreterGenerator.hpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/linkResolver.cpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/interpreter/templateInterpreter.cpp ! src/share/vm/interpreter/templateInterpreter.hpp + src/share/vm/interpreter/templateInterpreterGenerator.cpp ! src/share/vm/interpreter/templateInterpreterGenerator.hpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp - src/share/vm/jvmci/commandLineFlagConstraintsJVMCI.cpp - src/share/vm/jvmci/commandLineFlagConstraintsJVMCI.hpp ! src/share/vm/jvmci/jvmciCompilerToVM.hpp ! src/share/vm/memory/oopFactory.cpp ! src/share/vm/oops/arrayKlass.cpp ! src/share/vm/oops/arrayKlass.hpp ! src/share/vm/oops/arrayOop.hpp ! src/share/vm/oops/constMethod.cpp ! src/share/vm/oops/constMethod.hpp ! src/share/vm/oops/cpCache.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/klassVtable.cpp ! src/share/vm/oops/method.cpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/objArrayKlass.hpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/oops/typeArrayKlass.cpp ! src/share/vm/oops/typeArrayKlass.hpp - src/share/vm/oops/typeArrayOop.cpp ! src/share/vm/oops/typeArrayOop.hpp ! src/share/vm/oops/valueArrayKlass.hpp ! src/share/vm/oops/valueArrayOop.hpp ! src/share/vm/oops/valueKlass.hpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jni.h ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/jvm.h ! src/share/vm/prims/unsafe.cpp ! src/share/vm/runtime/frame.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/handles.cpp ! src/share/vm/runtime/javaCalls.cpp ! src/share/vm/runtime/reflection.cpp ! src/share/vm/runtime/sharedRuntime.cpp - src/share/vm/runtime/threadLocalStorage.cpp ! src/share/vm/services/classLoadingService.cpp ! src/share/vm/utilities/accessFlags.hpp ! src/share/vm/utilities/globalDefinitions.cpp ! src/share/vm/utilities/globalDefinitions.hpp ! test/TEST.groups - test/compiler/compilercontrol/parser/DirectiveParser.java - test/compiler/compilercontrol/share/processors/QuietProcessor.java - test/compiler/intrinsics/bmi/verifycode/AddnTestI.java - test/compiler/intrinsics/bmi/verifycode/AddnTestL.java - test/compiler/jvmci/jdk.vm.ci.options.test/src/jdk/vm/ci/options/test/NestedBooleanOptionValueTest.java - test/compiler/jvmci/jdk.vm.ci.options.test/src/jdk/vm/ci/options/test/TestOptionValue.java - test/gc/6581734/Test6581734.java - test/gc/6845368/bigobj.java - test/gc/6941923/Test6941923.java - test/gc/7072527/TestFullGCCount.java - test/gc/TestGCLogRotationViaJcmd.java - test/gc/g1/TestPrintGCDetails.java - test/gc/g1/TestSummarizeRSetStats.java - test/gc/g1/TestSummarizeRSetStatsPerRegion.java - test/gc/g1/TestSummarizeRSetStatsThreads.java - test/gc/g1/TestSummarizeRSetStatsTools.java - test/gc/g1/humongousObjects/Helpers.java - test/runtime/classFileParserBug/ignoredClinit.jasm Changeset: 83f30d1e9cd4 Author: dsimms Date: 2016-05-23 14:32 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/83f30d1e9cd4 Initial typed and invokedirect bytecodes ! src/cpu/x86/vm/macroAssembler_x86.hpp ! src/share/vm/interpreter/bytecodes.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/interpreter/templateTable.cpp Changeset: 266594e759ff Author: dsimms Date: 2016-05-25 08:27 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/266594e759ff Tab creep ! src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/interpreter/bytecodes.hpp Changeset: 702b24f708f2 Author: dsimms Date: 2016-05-25 08:50 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/702b24f708f2 invokedirect so we can match for q in oop map ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/interpreter/bytecode.hpp ! src/share/vm/interpreter/bytecodeTracer.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp ! src/share/vm/interpreter/linkResolver.cpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/interpreter/templateInterpreter.cpp ! src/share/vm/interpreter/templateTable.cpp ! src/share/vm/interpreter/templateTable.hpp ! src/share/vm/oops/cpCache.cpp ! src/share/vm/oops/generateOopMap.cpp ! src/share/vm/oops/generateOopMap.hpp + test/runtime/valhalla/valuetypes/InvokeDirect.java ! test/runtime/valhalla/valuetypes/Point.java Changeset: 902c2287177d Author: dsimms Date: 2016-05-25 10:41 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/902c2287177d Fixed /test/lib path for jtreg 4.2 ! test/runtime/valhalla/valuetypes/ValueTypeDensity.java Changeset: 877215376b13 Author: dsimms Date: 2016-06-07 15:09 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/877215376b13 Merge ! src/share/vm/runtime/globals.hpp Changeset: b9edfae421ab Author: dsimms Date: 2016-06-09 12:32 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/b9edfae421ab Merge ! src/share/vm/runtime/frame.cpp Changeset: 8d5ec7e36c27 Author: dsimms Date: 2016-06-09 13:08 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/8d5ec7e36c27 Merge ! test/TEST.groups From david.simms at oracle.com Tue Jun 28 11:41:40 2016 From: david.simms at oracle.com (david.simms at oracle.com) Date: Tue, 28 Jun 2016 11:41:40 +0000 Subject: hg: valhalla/valhalla/jdk: 6 new changesets Message-ID: <201606281141.u5SBfegF013107@aojmv0008.oracle.com> Changeset: a9c330f8a4cd Author: dsimms Date: 2016-01-21 13:41 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/a9c330f8a4cd Atomic array value stores ! src/java.base/share/classes/java/util/Arrays.java ! src/java.base/share/classes/jdk/internal/misc/Unsafe.java ! src/java.base/share/classes/sun/misc/Unsafe.java Changeset: d1b18cbc666d Author: dsimms Date: 2016-02-04 08:18 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/d1b18cbc666d Value Array clean up, remove packed layout, removed atomic impl ! make/mapfiles/libjava/mapfile-vers ! src/java.base/share/classes/java/util/Arrays.java ! src/java.base/share/classes/jdk/internal/misc/Unsafe.java ! src/java.base/share/classes/sun/misc/Unsafe.java ! src/java.base/share/native/include/jvm.h + src/java.base/share/native/libjava/Arrays.c Changeset: ca246d44ad08 Author: dsimms Date: 2016-05-19 11:05 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/ca246d44ad08 Merge - make/launcher/Launcher-jdk.jvmstat.gmk - make/lib/Lib-jdk.deploy.osx.gmk ! make/mapfiles/libjava/mapfile-vers - make/mapfiles/libjfr/mapfile-vers - make/src/classes/build/tools/buildmetaindex/BuildMetaIndex.java - make/src/classes/build/tools/generatebreakiteratordata/BreakIteratorRBControl.java - src/java.base/share/classes/java/lang/invoke/DontInline.java - src/java.base/share/classes/java/lang/invoke/ForceInline.java - src/java.base/share/classes/java/lang/invoke/GenericMethodSpecializer.java - src/java.base/share/classes/java/lang/invoke/Stable.java ! src/java.base/share/classes/java/util/Arrays.java - src/java.base/share/classes/jdk/Exported.java ! src/java.base/share/classes/jdk/internal/misc/Unsafe.java - src/java.base/share/classes/sun/invoke/anon/AnonymousClassLoader.java - src/java.base/share/classes/sun/invoke/anon/ConstantPoolParser.java - src/java.base/share/classes/sun/invoke/anon/ConstantPoolPatch.java - src/java.base/share/classes/sun/invoke/anon/ConstantPoolVisitor.java - src/java.base/share/classes/sun/invoke/anon/InvalidConstantPoolFormatException.java - src/java.base/share/classes/sun/misc/ASCIICaseInsensitiveComparator.java - src/java.base/share/classes/sun/misc/BASE64Decoder.java - src/java.base/share/classes/sun/misc/BASE64Encoder.java - src/java.base/share/classes/sun/misc/CEFormatException.java - src/java.base/share/classes/sun/misc/CEStreamExhausted.java - src/java.base/share/classes/sun/misc/CharacterDecoder.java - src/java.base/share/classes/sun/misc/CharacterEncoder.java - src/java.base/share/classes/sun/misc/ClassFileTransformer.java - src/java.base/share/classes/sun/misc/Cleaner.java - src/java.base/share/classes/sun/misc/CompoundEnumeration.java - src/java.base/share/classes/sun/misc/Contended.java - src/java.base/share/classes/sun/misc/DoubleConsts.java - src/java.base/share/classes/sun/misc/FDBigInteger.java - src/java.base/share/classes/sun/misc/FloatConsts.java - src/java.base/share/classes/sun/misc/FloatingDecimal.java - src/java.base/share/classes/sun/misc/FormattedFloatingDecimal.java - src/java.base/share/classes/sun/misc/HexDumpEncoder.java - src/java.base/share/classes/sun/misc/InnocuousThread.java - src/java.base/share/classes/sun/misc/JarFilter.java - src/java.base/share/classes/sun/misc/LRUCache.java - src/java.base/share/classes/sun/misc/MessageUtils.java - src/java.base/share/classes/sun/misc/MetaIndex.java - src/java.base/share/classes/sun/misc/NativeSignalHandler.java - src/java.base/share/classes/sun/misc/Perf.java - src/java.base/share/classes/sun/misc/PerfCounter.java - src/java.base/share/classes/sun/misc/PerformanceLogger.java - src/java.base/share/classes/sun/misc/ProxyGenerator.java - src/java.base/share/classes/sun/misc/Queue.java - src/java.base/share/classes/sun/misc/Request.java - src/java.base/share/classes/sun/misc/RequestProcessor.java - src/java.base/share/classes/sun/misc/UCDecoder.java - src/java.base/share/classes/sun/misc/UCEncoder.java - src/java.base/share/classes/sun/misc/UUDecoder.java - src/java.base/share/classes/sun/misc/UUEncoder.java ! src/java.base/share/classes/sun/misc/Unsafe.java - src/java.base/share/classes/sun/misc/VM.java - src/java.base/share/classes/sun/misc/VMNotification.java - src/java.base/share/classes/sun/misc/Version.java.template - src/java.base/share/classes/sun/text/resources/en/FormatData_en.java - src/java.base/share/classes/sun/text/resources/en/JavaTimeSupplementary_en.java - src/java.base/share/classes/sun/text/resources/en/US/FormatData_en_US.java - src/java.base/share/classes/sun/util/logging/LoggingProxy.java - src/java.base/share/classes/sun/util/logging/LoggingSupport.java - src/java.base/share/classes/sun/util/resources/en/CalendarData_en.properties - src/java.base/share/classes/sun/util/resources/en/LocaleNames_en.properties - src/java.base/share/classes/sun/util/resources/en/TimeZoneNames_en.java - src/java.base/share/classes/sun/util/resources/en/US/CurrencyNames_en_US.properties - src/java.base/share/classes/valhalla/classdyn/Mangler.java - src/java.base/share/classes/valhalla/model3/SpeciesKey.java - src/java.base/share/classes/valhalla/specializer/BridgeAttribute.java - src/java.base/share/classes/valhalla/specializer/BytecodeMappingAttribute.java - src/java.base/share/classes/valhalla/specializer/DebuggingSignatureVisitor.java - src/java.base/share/classes/valhalla/specializer/SignatureSpecializer.java - src/java.base/share/classes/valhalla/specializer/Specialize.java - src/java.base/share/classes/valhalla/specializer/Specializer.java - src/java.base/share/classes/valhalla/specializer/SpecializerSignature.java - src/java.base/share/classes/valhalla/specializer/TypeVariablesMapAttribute.java - src/java.base/share/classes/valhalla/specializer/WhereAttribute.java ! src/java.base/share/native/include/jvm.h - src/java.base/share/native/libjava/Bits.c - src/java.base/share/native/libjava/MessageUtils.c - src/java.base/share/native/libjava/NativeSignalHandler.c - src/java.base/share/native/libjava/Version.c - src/java.base/share/native/libzip/ZipFile.c - src/java.base/unix/classes/sun/misc/OSEnvironment.java - src/java.base/unix/classes/sun/nio/ch/DefaultSelectorProvider.java - src/java.base/windows/classes/sun/misc/OSEnvironment.java - src/java.desktop/share/classes/sun/awt/DefaultMouseInfoPeer.java - src/java.desktop/share/classes/sun/swing/plaf/synth/SynthIcon.java - src/java.logging/share/classes/java/util/logging/LoggingProxyImpl.java - src/java.scripting/share/classes/javax/script/package.html - src/jdk.deploy.osx/macosx/classes/apple/applescript/AppleScriptEngine.java - src/jdk.deploy.osx/macosx/classes/apple/applescript/AppleScriptEngineFactory.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/Dispatch.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/LibDispatchConcurrentQueue.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/LibDispatchMainQueue.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/LibDispatchNative.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/LibDispatchQueue.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/LibDispatchRetainedResource.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/LibDispatchSerialQueue.java - src/jdk.deploy.osx/macosx/classes/com/apple/concurrent/package.html - src/jdk.deploy.osx/macosx/native/libapplescriptengine/AS_NS_ConversionUtils.h - src/jdk.deploy.osx/macosx/native/libapplescriptengine/AS_NS_ConversionUtils.m - src/jdk.deploy.osx/macosx/native/libapplescriptengine/AppleScriptEngine.m - src/jdk.deploy.osx/macosx/native/libapplescriptengine/AppleScriptExecutionContext.h - src/jdk.deploy.osx/macosx/native/libapplescriptengine/AppleScriptExecutionContext.m - src/jdk.deploy.osx/macosx/native/libapplescriptengine/NS_Java_ConversionUtils.h - src/jdk.deploy.osx/macosx/native/libapplescriptengine/NS_Java_ConversionUtils.m - src/jdk.deploy.osx/macosx/native/libosx/CFileManager.m - src/jdk.deploy.osx/macosx/native/libosx/Dispatch.m - src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/remote/RemoteHost.java - src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/remote/RemoteVm.java - src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/remote/package.html - src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/rmi/MonitoredHostProvider.java - src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/rmi/MonitoredHostRmiService.java - src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/rmi/PerfDataBuffer.java - src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/rmi/RemoteMonitoredVm.java - src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/rmi/RemoteVmManager.java - src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/rmi/package.html - src/jdk.jvmstat/share/classes/sun/tools/jstatd/Jstatd.java - src/jdk.jvmstat/share/classes/sun/tools/jstatd/RemoteHostImpl.java - src/jdk.jvmstat/share/classes/sun/tools/jstatd/RemoteVmImpl.java - src/jdk.localedata/share/classes/sun/text/resources/ar/CollationData_ar.java - src/jdk.localedata/share/classes/sun/text/resources/ar/FormatData_ar.java - src/jdk.localedata/share/classes/sun/text/resources/ar/JO/FormatData_ar_JO.java - src/jdk.localedata/share/classes/sun/text/resources/ar/JO/JavaTimeSupplementary_ar_JO.java - src/jdk.localedata/share/classes/sun/text/resources/ar/JavaTimeSupplementary_ar.java - src/jdk.localedata/share/classes/sun/text/resources/ar/LB/FormatData_ar_LB.java - src/jdk.localedata/share/classes/sun/text/resources/ar/LB/JavaTimeSupplementary_ar_LB.java - src/jdk.localedata/share/classes/sun/text/resources/ar/SY/FormatData_ar_SY.java - src/jdk.localedata/share/classes/sun/text/resources/ar/SY/JavaTimeSupplementary_ar_SY.java - src/jdk.localedata/share/classes/sun/text/resources/be/BY/FormatData_be_BY.java - src/jdk.localedata/share/classes/sun/text/resources/be/CollationData_be.java - src/jdk.localedata/share/classes/sun/text/resources/be/FormatData_be.java - src/jdk.localedata/share/classes/sun/text/resources/be/JavaTimeSupplementary_be.java - src/jdk.localedata/share/classes/sun/text/resources/bg/BG/FormatData_bg_BG.java - src/jdk.localedata/share/classes/sun/text/resources/bg/CollationData_bg.java - src/jdk.localedata/share/classes/sun/text/resources/bg/FormatData_bg.java - src/jdk.localedata/share/classes/sun/text/resources/bg/JavaTimeSupplementary_bg.java - src/jdk.localedata/share/classes/sun/text/resources/ca/CollationData_ca.java - src/jdk.localedata/share/classes/sun/text/resources/ca/ES/FormatData_ca_ES.java - src/jdk.localedata/share/classes/sun/text/resources/ca/FormatData_ca.java - src/jdk.localedata/share/classes/sun/text/resources/ca/JavaTimeSupplementary_ca.java - src/jdk.localedata/share/classes/sun/text/resources/cs/CZ/FormatData_cs_CZ.java - src/jdk.localedata/share/classes/sun/text/resources/cs/CollationData_cs.java - src/jdk.localedata/share/classes/sun/text/resources/cs/FormatData_cs.java - src/jdk.localedata/share/classes/sun/text/resources/cs/JavaTimeSupplementary_cs.java - src/jdk.localedata/share/classes/sun/text/resources/da/CollationData_da.java - src/jdk.localedata/share/classes/sun/text/resources/da/DK/FormatData_da_DK.java - src/jdk.localedata/share/classes/sun/text/resources/da/FormatData_da.java - src/jdk.localedata/share/classes/sun/text/resources/da/JavaTimeSupplementary_da.java - src/jdk.localedata/share/classes/sun/text/resources/de/AT/FormatData_de_AT.java - src/jdk.localedata/share/classes/sun/text/resources/de/AT/JavaTimeSupplementary_de_AT.java - src/jdk.localedata/share/classes/sun/text/resources/de/CH/FormatData_de_CH.java - src/jdk.localedata/share/classes/sun/text/resources/de/DE/FormatData_de_DE.java - src/jdk.localedata/share/classes/sun/text/resources/de/FormatData_de.java - src/jdk.localedata/share/classes/sun/text/resources/de/JavaTimeSupplementary_de.java - src/jdk.localedata/share/classes/sun/text/resources/de/LU/FormatData_de_LU.java - src/jdk.localedata/share/classes/sun/text/resources/el/CY/FormatData_el_CY.java - src/jdk.localedata/share/classes/sun/text/resources/el/CollationData_el.java - src/jdk.localedata/share/classes/sun/text/resources/el/FormatData_el.java - src/jdk.localedata/share/classes/sun/text/resources/el/GR/FormatData_el_GR.java - src/jdk.localedata/share/classes/sun/text/resources/el/JavaTimeSupplementary_el.java - src/jdk.localedata/share/classes/sun/text/resources/en/AU/FormatData_en_AU.java - src/jdk.localedata/share/classes/sun/text/resources/en/AU/JavaTimeSupplementary_en_AU.java - src/jdk.localedata/share/classes/sun/text/resources/en/CA/FormatData_en_CA.java - src/jdk.localedata/share/classes/sun/text/resources/en/CA/JavaTimeSupplementary_en_CA.java - src/jdk.localedata/share/classes/sun/text/resources/en/GB/FormatData_en_GB.java - src/jdk.localedata/share/classes/sun/text/resources/en/GB/JavaTimeSupplementary_en_GB.java - src/jdk.localedata/share/classes/sun/text/resources/en/IE/FormatData_en_IE.java - src/jdk.localedata/share/classes/sun/text/resources/en/IE/JavaTimeSupplementary_en_IE.java - src/jdk.localedata/share/classes/sun/text/resources/en/IN/FormatData_en_IN.java - src/jdk.localedata/share/classes/sun/text/resources/en/IN/JavaTimeSupplementary_en_IN.java - src/jdk.localedata/share/classes/sun/text/resources/en/MT/FormatData_en_MT.java - src/jdk.localedata/share/classes/sun/text/resources/en/MT/JavaTimeSupplementary_en_MT.java - src/jdk.localedata/share/classes/sun/text/resources/en/NZ/FormatData_en_NZ.java - src/jdk.localedata/share/classes/sun/text/resources/en/NZ/JavaTimeSupplementary_en_NZ.java - src/jdk.localedata/share/classes/sun/text/resources/en/PH/FormatData_en_PH.java - src/jdk.localedata/share/classes/sun/text/resources/en/SG/FormatData_en_SG.java - src/jdk.localedata/share/classes/sun/text/resources/en/SG/JavaTimeSupplementary_en_SG.java - src/jdk.localedata/share/classes/sun/text/resources/en/ZA/FormatData_en_ZA.java - src/jdk.localedata/share/classes/sun/text/resources/en/ZA/JavaTimeSupplementary_en_ZA.java - src/jdk.localedata/share/classes/sun/text/resources/es/AR/FormatData_es_AR.java - src/jdk.localedata/share/classes/sun/text/resources/es/BO/FormatData_es_BO.java - src/jdk.localedata/share/classes/sun/text/resources/es/CL/FormatData_es_CL.java - src/jdk.localedata/share/classes/sun/text/resources/es/CL/JavaTimeSupplementary_es_CL.java - src/jdk.localedata/share/classes/sun/text/resources/es/CO/FormatData_es_CO.java - src/jdk.localedata/share/classes/sun/text/resources/es/CO/JavaTimeSupplementary_es_CO.java - src/jdk.localedata/share/classes/sun/text/resources/es/CR/FormatData_es_CR.java - src/jdk.localedata/share/classes/sun/text/resources/es/CollationData_es.java - src/jdk.localedata/share/classes/sun/text/resources/es/DO/FormatData_es_DO.java - src/jdk.localedata/share/classes/sun/text/resources/es/EC/FormatData_es_EC.java - src/jdk.localedata/share/classes/sun/text/resources/es/ES/FormatData_es_ES.java - src/jdk.localedata/share/classes/sun/text/resources/es/FormatData_es.java - src/jdk.localedata/share/classes/sun/text/resources/es/GT/FormatData_es_GT.java - src/jdk.localedata/share/classes/sun/text/resources/es/GT/JavaTimeSupplementary_es_GT.java - src/jdk.localedata/share/classes/sun/text/resources/es/HN/FormatData_es_HN.java - src/jdk.localedata/share/classes/sun/text/resources/es/HN/JavaTimeSupplementary_es_HN.java - src/jdk.localedata/share/classes/sun/text/resources/es/JavaTimeSupplementary_es.java - src/jdk.localedata/share/classes/sun/text/resources/es/MX/FormatData_es_MX.java - src/jdk.localedata/share/classes/sun/text/resources/es/MX/JavaTimeSupplementary_es_MX.java - src/jdk.localedata/share/classes/sun/text/resources/es/NI/FormatData_es_NI.java - src/jdk.localedata/share/classes/sun/text/resources/es/PA/FormatData_es_PA.java - src/jdk.localedata/share/classes/sun/text/resources/es/PA/JavaTimeSupplementary_es_PA.java - src/jdk.localedata/share/classes/sun/text/resources/es/PE/FormatData_es_PE.java - src/jdk.localedata/share/classes/sun/text/resources/es/PE/JavaTimeSupplementary_es_PE.java - src/jdk.localedata/share/classes/sun/text/resources/es/PR/FormatData_es_PR.java - src/jdk.localedata/share/classes/sun/text/resources/es/PR/JavaTimeSupplementary_es_PR.java - src/jdk.localedata/share/classes/sun/text/resources/es/PY/FormatData_es_PY.java - src/jdk.localedata/share/classes/sun/text/resources/es/SV/FormatData_es_SV.java - src/jdk.localedata/share/classes/sun/text/resources/es/US/FormatData_es_US.java - src/jdk.localedata/share/classes/sun/text/resources/es/UY/FormatData_es_UY.java - src/jdk.localedata/share/classes/sun/text/resources/es/UY/JavaTimeSupplementary_es_UY.java - src/jdk.localedata/share/classes/sun/text/resources/es/VE/FormatData_es_VE.java - src/jdk.localedata/share/classes/sun/text/resources/et/CollationData_et.java - src/jdk.localedata/share/classes/sun/text/resources/et/EE/FormatData_et_EE.java - src/jdk.localedata/share/classes/sun/text/resources/et/FormatData_et.java - src/jdk.localedata/share/classes/sun/text/resources/et/JavaTimeSupplementary_et.java - src/jdk.localedata/share/classes/sun/text/resources/fi/CollationData_fi.java - src/jdk.localedata/share/classes/sun/text/resources/fi/FI/FormatData_fi_FI.java - src/jdk.localedata/share/classes/sun/text/resources/fi/FormatData_fi.java - src/jdk.localedata/share/classes/sun/text/resources/fi/JavaTimeSupplementary_fi.java - src/jdk.localedata/share/classes/sun/text/resources/fr/BE/FormatData_fr_BE.java - src/jdk.localedata/share/classes/sun/text/resources/fr/BE/JavaTimeSupplementary_fr_BE.java - src/jdk.localedata/share/classes/sun/text/resources/fr/CA/FormatData_fr_CA.java - src/jdk.localedata/share/classes/sun/text/resources/fr/CA/JavaTimeSupplementary_fr_CA.java - src/jdk.localedata/share/classes/sun/text/resources/fr/CH/FormatData_fr_CH.java - src/jdk.localedata/share/classes/sun/text/resources/fr/CH/JavaTimeSupplementary_fr_CH.java - src/jdk.localedata/share/classes/sun/text/resources/fr/CollationData_fr.java - src/jdk.localedata/share/classes/sun/text/resources/fr/FR/FormatData_fr_FR.java - src/jdk.localedata/share/classes/sun/text/resources/fr/FormatData_fr.java - src/jdk.localedata/share/classes/sun/text/resources/fr/JavaTimeSupplementary_fr.java - src/jdk.localedata/share/classes/sun/text/resources/ga/FormatData_ga.java - src/jdk.localedata/share/classes/sun/text/resources/ga/IE/FormatData_ga_IE.java - src/jdk.localedata/share/classes/sun/text/resources/ga/JavaTimeSupplementary_ga.java - src/jdk.localedata/share/classes/sun/text/resources/hi/CollationData_hi.java - src/jdk.localedata/share/classes/sun/text/resources/hi/IN/FormatData_hi_IN.java - src/jdk.localedata/share/classes/sun/text/resources/hi/IN/JavaTimeSupplementary_hi_IN.java - src/jdk.localedata/share/classes/sun/text/resources/hr/CollationData_hr.java - src/jdk.localedata/share/classes/sun/text/resources/hr/FormatData_hr.java - src/jdk.localedata/share/classes/sun/text/resources/hr/HR/FormatData_hr_HR.java - src/jdk.localedata/share/classes/sun/text/resources/hr/JavaTimeSupplementary_hr.java - src/jdk.localedata/share/classes/sun/text/resources/hu/CollationData_hu.java - src/jdk.localedata/share/classes/sun/text/resources/hu/FormatData_hu.java - src/jdk.localedata/share/classes/sun/text/resources/hu/HU/FormatData_hu_HU.java - src/jdk.localedata/share/classes/sun/text/resources/hu/JavaTimeSupplementary_hu.java - src/jdk.localedata/share/classes/sun/text/resources/in/FormatData_in.java - src/jdk.localedata/share/classes/sun/text/resources/in/ID/FormatData_in_ID.java - src/jdk.localedata/share/classes/sun/text/resources/is/CollationData_is.java - src/jdk.localedata/share/classes/sun/text/resources/is/FormatData_is.java - src/jdk.localedata/share/classes/sun/text/resources/is/IS/FormatData_is_IS.java - src/jdk.localedata/share/classes/sun/text/resources/is/JavaTimeSupplementary_is.java - src/jdk.localedata/share/classes/sun/text/resources/it/CH/FormatData_it_CH.java - src/jdk.localedata/share/classes/sun/text/resources/it/CH/JavaTimeSupplementary_it_CH.java - src/jdk.localedata/share/classes/sun/text/resources/it/FormatData_it.java - src/jdk.localedata/share/classes/sun/text/resources/it/IT/FormatData_it_IT.java - src/jdk.localedata/share/classes/sun/text/resources/it/JavaTimeSupplementary_it.java - src/jdk.localedata/share/classes/sun/text/resources/iw/CollationData_iw.java - src/jdk.localedata/share/classes/sun/text/resources/iw/FormatData_iw.java - src/jdk.localedata/share/classes/sun/text/resources/iw/IL/FormatData_iw_IL.java - src/jdk.localedata/share/classes/sun/text/resources/iw/IL/JavaTimeSupplementary_iw_IL.java - src/jdk.localedata/share/classes/sun/text/resources/iw/JavaTimeSupplementary_iw.java - src/jdk.localedata/share/classes/sun/text/resources/ja/CollationData_ja.java - src/jdk.localedata/share/classes/sun/text/resources/ja/FormatData_ja.java - src/jdk.localedata/share/classes/sun/text/resources/ja/JP/FormatData_ja_JP.java - src/jdk.localedata/share/classes/sun/text/resources/ja/JavaTimeSupplementary_ja.java - src/jdk.localedata/share/classes/sun/text/resources/ko/CollationData_ko.java - src/jdk.localedata/share/classes/sun/text/resources/ko/FormatData_ko.java - src/jdk.localedata/share/classes/sun/text/resources/ko/JavaTimeSupplementary_ko.java - src/jdk.localedata/share/classes/sun/text/resources/ko/KR/FormatData_ko_KR.java - src/jdk.localedata/share/classes/sun/text/resources/lt/CollationData_lt.java - src/jdk.localedata/share/classes/sun/text/resources/lt/FormatData_lt.java - src/jdk.localedata/share/classes/sun/text/resources/lt/JavaTimeSupplementary_lt.java - src/jdk.localedata/share/classes/sun/text/resources/lt/LT/FormatData_lt_LT.java - src/jdk.localedata/share/classes/sun/text/resources/lv/CollationData_lv.java - src/jdk.localedata/share/classes/sun/text/resources/lv/FormatData_lv.java - src/jdk.localedata/share/classes/sun/text/resources/lv/JavaTimeSupplementary_lv.java - src/jdk.localedata/share/classes/sun/text/resources/lv/LV/FormatData_lv_LV.java - src/jdk.localedata/share/classes/sun/text/resources/mk/CollationData_mk.java - src/jdk.localedata/share/classes/sun/text/resources/mk/FormatData_mk.java - src/jdk.localedata/share/classes/sun/text/resources/mk/JavaTimeSupplementary_mk.java - src/jdk.localedata/share/classes/sun/text/resources/mk/MK/FormatData_mk_MK.java - src/jdk.localedata/share/classes/sun/text/resources/ms/FormatData_ms.java - src/jdk.localedata/share/classes/sun/text/resources/ms/JavaTimeSupplementary_ms.java - src/jdk.localedata/share/classes/sun/text/resources/ms/MY/FormatData_ms_MY.java - src/jdk.localedata/share/classes/sun/text/resources/mt/FormatData_mt.java - src/jdk.localedata/share/classes/sun/text/resources/mt/JavaTimeSupplementary_mt.java - src/jdk.localedata/share/classes/sun/text/resources/mt/MT/FormatData_mt_MT.java - src/jdk.localedata/share/classes/sun/text/resources/nl/BE/FormatData_nl_BE.java - src/jdk.localedata/share/classes/sun/text/resources/nl/BE/JavaTimeSupplementary_nl_BE.java - src/jdk.localedata/share/classes/sun/text/resources/nl/FormatData_nl.java - src/jdk.localedata/share/classes/sun/text/resources/nl/JavaTimeSupplementary_nl.java - src/jdk.localedata/share/classes/sun/text/resources/nl/NL/FormatData_nl_NL.java - src/jdk.localedata/share/classes/sun/text/resources/no/CollationData_no.java - src/jdk.localedata/share/classes/sun/text/resources/no/FormatData_no.java - src/jdk.localedata/share/classes/sun/text/resources/no/JavaTimeSupplementary_no.java - src/jdk.localedata/share/classes/sun/text/resources/no/NO/FormatData_no_NO.java - src/jdk.localedata/share/classes/sun/text/resources/no/NO/FormatData_no_NO_NY.java - src/jdk.localedata/share/classes/sun/text/resources/pl/CollationData_pl.java - src/jdk.localedata/share/classes/sun/text/resources/pl/FormatData_pl.java - src/jdk.localedata/share/classes/sun/text/resources/pl/JavaTimeSupplementary_pl.java - src/jdk.localedata/share/classes/sun/text/resources/pl/PL/FormatData_pl_PL.java - src/jdk.localedata/share/classes/sun/text/resources/pt/BR/FormatData_pt_BR.java - src/jdk.localedata/share/classes/sun/text/resources/pt/FormatData_pt.java - src/jdk.localedata/share/classes/sun/text/resources/pt/JavaTimeSupplementary_pt.java - src/jdk.localedata/share/classes/sun/text/resources/pt/PT/FormatData_pt_PT.java - src/jdk.localedata/share/classes/sun/text/resources/pt/PT/JavaTimeSupplementary_pt_PT.java - src/jdk.localedata/share/classes/sun/text/resources/ro/CollationData_ro.java - src/jdk.localedata/share/classes/sun/text/resources/ro/FormatData_ro.java - src/jdk.localedata/share/classes/sun/text/resources/ro/JavaTimeSupplementary_ro.java - src/jdk.localedata/share/classes/sun/text/resources/ro/RO/FormatData_ro_RO.java - src/jdk.localedata/share/classes/sun/text/resources/ru/CollationData_ru.java - src/jdk.localedata/share/classes/sun/text/resources/ru/FormatData_ru.java - src/jdk.localedata/share/classes/sun/text/resources/ru/JavaTimeSupplementary_ru.java - src/jdk.localedata/share/classes/sun/text/resources/ru/RU/FormatData_ru_RU.java - src/jdk.localedata/share/classes/sun/text/resources/sk/CollationData_sk.java - src/jdk.localedata/share/classes/sun/text/resources/sk/FormatData_sk.java - src/jdk.localedata/share/classes/sun/text/resources/sk/JavaTimeSupplementary_sk.java - src/jdk.localedata/share/classes/sun/text/resources/sk/SK/FormatData_sk_SK.java - src/jdk.localedata/share/classes/sun/text/resources/sl/CollationData_sl.java - src/jdk.localedata/share/classes/sun/text/resources/sl/FormatData_sl.java - src/jdk.localedata/share/classes/sun/text/resources/sl/JavaTimeSupplementary_sl.java - src/jdk.localedata/share/classes/sun/text/resources/sl/SI/FormatData_sl_SI.java - src/jdk.localedata/share/classes/sun/text/resources/sq/AL/FormatData_sq_AL.java - src/jdk.localedata/share/classes/sun/text/resources/sq/CollationData_sq.java - src/jdk.localedata/share/classes/sun/text/resources/sq/FormatData_sq.java - src/jdk.localedata/share/classes/sun/text/resources/sq/JavaTimeSupplementary_sq.java - src/jdk.localedata/share/classes/sun/text/resources/sr/BA/FormatData_sr_BA.java - src/jdk.localedata/share/classes/sun/text/resources/sr/CS/FormatData_sr_CS.java - src/jdk.localedata/share/classes/sun/text/resources/sr/CollationData_sr.java - src/jdk.localedata/share/classes/sun/text/resources/sr/CollationData_sr_Latn.java - src/jdk.localedata/share/classes/sun/text/resources/sr/FormatData_sr.java - src/jdk.localedata/share/classes/sun/text/resources/sr/FormatData_sr_Latn.java - src/jdk.localedata/share/classes/sun/text/resources/sr/JavaTimeSupplementary_sr.java - src/jdk.localedata/share/classes/sun/text/resources/sr/JavaTimeSupplementary_sr_Latn.java - src/jdk.localedata/share/classes/sun/text/resources/sr/ME/FormatData_sr_Latn_ME.java - src/jdk.localedata/share/classes/sun/text/resources/sr/ME/FormatData_sr_ME.java - src/jdk.localedata/share/classes/sun/text/resources/sr/RS/FormatData_sr_RS.java - src/jdk.localedata/share/classes/sun/text/resources/sv/CollationData_sv.java - src/jdk.localedata/share/classes/sun/text/resources/sv/FormatData_sv.java - src/jdk.localedata/share/classes/sun/text/resources/sv/JavaTimeSupplementary_sv.java - src/jdk.localedata/share/classes/sun/text/resources/sv/SE/FormatData_sv_SE.java - src/jdk.localedata/share/classes/sun/text/resources/th/BreakIteratorInfo_th.java - src/jdk.localedata/share/classes/sun/text/resources/th/BreakIteratorRules_th.java - src/jdk.localedata/share/classes/sun/text/resources/th/CollationData_th.java - src/jdk.localedata/share/classes/sun/text/resources/th/FormatData_th.java - src/jdk.localedata/share/classes/sun/text/resources/th/JavaTimeSupplementary_th.java - src/jdk.localedata/share/classes/sun/text/resources/th/TH/FormatData_th_TH.java - src/jdk.localedata/share/classes/sun/text/resources/th/thai_dict - src/jdk.localedata/share/classes/sun/text/resources/tr/CollationData_tr.java - src/jdk.localedata/share/classes/sun/text/resources/tr/FormatData_tr.java - src/jdk.localedata/share/classes/sun/text/resources/tr/JavaTimeSupplementary_tr.java - src/jdk.localedata/share/classes/sun/text/resources/tr/TR/FormatData_tr_TR.java - src/jdk.localedata/share/classes/sun/text/resources/uk/CollationData_uk.java - src/jdk.localedata/share/classes/sun/text/resources/uk/FormatData_uk.java - src/jdk.localedata/share/classes/sun/text/resources/uk/JavaTimeSupplementary_uk.java - src/jdk.localedata/share/classes/sun/text/resources/uk/UA/FormatData_uk_UA.java - src/jdk.localedata/share/classes/sun/text/resources/vi/CollationData_vi.java - src/jdk.localedata/share/classes/sun/text/resources/vi/FormatData_vi.java - src/jdk.localedata/share/classes/sun/text/resources/vi/JavaTimeSupplementary_vi.java - src/jdk.localedata/share/classes/sun/text/resources/vi/VN/FormatData_vi_VN.java - src/jdk.localedata/share/classes/sun/text/resources/zh/CN/FormatData_zh_CN.java - src/jdk.localedata/share/classes/sun/text/resources/zh/CollationData_zh.java - src/jdk.localedata/share/classes/sun/text/resources/zh/FormatData_zh.java - src/jdk.localedata/share/classes/sun/text/resources/zh/HK/CollationData_zh_HK.java - src/jdk.localedata/share/classes/sun/text/resources/zh/HK/FormatData_zh_HK.java - src/jdk.localedata/share/classes/sun/text/resources/zh/JavaTimeSupplementary_zh.java - src/jdk.localedata/share/classes/sun/text/resources/zh/SG/FormatData_zh_SG.java - src/jdk.localedata/share/classes/sun/text/resources/zh/TW/CollationData_zh_TW.java - src/jdk.localedata/share/classes/sun/text/resources/zh/TW/FormatData_zh_TW.java - src/jdk.localedata/share/classes/sun/text/resources/zh/TW/JavaTimeSupplementary_zh_TW.java - src/jdk.localedata/share/classes/sun/util/resources/ar/AE/CurrencyNames_ar_AE.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/BH/CurrencyNames_ar_BH.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/CalendarData_ar.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/DZ/CurrencyNames_ar_DZ.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/EG/CurrencyNames_ar_EG.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/IQ/CurrencyNames_ar_IQ.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/JO/CurrencyNames_ar_JO.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/KW/CurrencyNames_ar_KW.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/LB/CurrencyNames_ar_LB.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/LY/CurrencyNames_ar_LY.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/LocaleNames_ar.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/MA/CurrencyNames_ar_MA.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/OM/CurrencyNames_ar_OM.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/QA/CurrencyNames_ar_QA.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/SA/CurrencyNames_ar_SA.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/SD/CurrencyNames_ar_SD.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/SY/CurrencyNames_ar_SY.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/TN/CurrencyNames_ar_TN.properties - src/jdk.localedata/share/classes/sun/util/resources/ar/YE/CurrencyNames_ar_YE.properties - src/jdk.localedata/share/classes/sun/util/resources/be/BY/CurrencyNames_be_BY.properties - src/jdk.localedata/share/classes/sun/util/resources/be/CalendarData_be.properties - src/jdk.localedata/share/classes/sun/util/resources/be/LocaleNames_be.properties - src/jdk.localedata/share/classes/sun/util/resources/bg/BG/CurrencyNames_bg_BG.properties - src/jdk.localedata/share/classes/sun/util/resources/bg/CalendarData_bg.properties - src/jdk.localedata/share/classes/sun/util/resources/bg/LocaleNames_bg.properties - src/jdk.localedata/share/classes/sun/util/resources/ca/CalendarData_ca.properties - src/jdk.localedata/share/classes/sun/util/resources/ca/ES/CurrencyNames_ca_ES.properties - src/jdk.localedata/share/classes/sun/util/resources/ca/LocaleNames_ca.properties - src/jdk.localedata/share/classes/sun/util/resources/cs/CZ/CurrencyNames_cs_CZ.properties - src/jdk.localedata/share/classes/sun/util/resources/cs/CalendarData_cs.properties - src/jdk.localedata/share/classes/sun/util/resources/cs/LocaleNames_cs.properties - src/jdk.localedata/share/classes/sun/util/resources/da/CalendarData_da.properties - src/jdk.localedata/share/classes/sun/util/resources/da/DK/CurrencyNames_da_DK.properties - src/jdk.localedata/share/classes/sun/util/resources/da/LocaleNames_da.properties - src/jdk.localedata/share/classes/sun/util/resources/de/AT/CurrencyNames_de_AT.properties - src/jdk.localedata/share/classes/sun/util/resources/de/CH/CurrencyNames_de_CH.properties - src/jdk.localedata/share/classes/sun/util/resources/de/CalendarData_de.properties - src/jdk.localedata/share/classes/sun/util/resources/de/CurrencyNames_de.properties - src/jdk.localedata/share/classes/sun/util/resources/de/DE/CurrencyNames_de_DE.properties - src/jdk.localedata/share/classes/sun/util/resources/de/GR/CurrencyNames_de_GR.properties - src/jdk.localedata/share/classes/sun/util/resources/de/LU/CurrencyNames_de_LU.properties - src/jdk.localedata/share/classes/sun/util/resources/de/LocaleNames_de.properties - src/jdk.localedata/share/classes/sun/util/resources/de/TimeZoneNames_de.java - src/jdk.localedata/share/classes/sun/util/resources/el/CY/CalendarData_el_CY.properties - src/jdk.localedata/share/classes/sun/util/resources/el/CY/CurrencyNames_el_CY.properties - src/jdk.localedata/share/classes/sun/util/resources/el/CY/LocaleNames_el_CY.properties - src/jdk.localedata/share/classes/sun/util/resources/el/CalendarData_el.properties - src/jdk.localedata/share/classes/sun/util/resources/el/GR/CurrencyNames_el_GR.properties - src/jdk.localedata/share/classes/sun/util/resources/el/LocaleNames_el.properties - src/jdk.localedata/share/classes/sun/util/resources/en/AU/CurrencyNames_en_AU.properties - src/jdk.localedata/share/classes/sun/util/resources/en/CA/CurrencyNames_en_CA.properties - src/jdk.localedata/share/classes/sun/util/resources/en/CA/TimeZoneNames_en_CA.java - src/jdk.localedata/share/classes/sun/util/resources/en/GB/CalendarData_en_GB.properties - src/jdk.localedata/share/classes/sun/util/resources/en/GB/CurrencyNames_en_GB.properties - src/jdk.localedata/share/classes/sun/util/resources/en/GB/TimeZoneNames_en_GB.java - src/jdk.localedata/share/classes/sun/util/resources/en/IE/CalendarData_en_IE.properties - src/jdk.localedata/share/classes/sun/util/resources/en/IE/CurrencyNames_en_IE.properties - src/jdk.localedata/share/classes/sun/util/resources/en/IE/TimeZoneNames_en_IE.java - src/jdk.localedata/share/classes/sun/util/resources/en/IN/CurrencyNames_en_IN.properties - src/jdk.localedata/share/classes/sun/util/resources/en/MT/CalendarData_en_MT.properties - src/jdk.localedata/share/classes/sun/util/resources/en/MT/CurrencyNames_en_MT.properties - src/jdk.localedata/share/classes/sun/util/resources/en/MT/LocaleNames_en_MT.properties - src/jdk.localedata/share/classes/sun/util/resources/en/NZ/CurrencyNames_en_NZ.properties - src/jdk.localedata/share/classes/sun/util/resources/en/PH/CurrencyNames_en_PH.properties - src/jdk.localedata/share/classes/sun/util/resources/en/PH/LocaleNames_en_PH.properties - src/jdk.localedata/share/classes/sun/util/resources/en/SG/CurrencyNames_en_SG.properties - src/jdk.localedata/share/classes/sun/util/resources/en/SG/LocaleNames_en_SG.properties - src/jdk.localedata/share/classes/sun/util/resources/en/ZA/CurrencyNames_en_ZA.properties - src/jdk.localedata/share/classes/sun/util/resources/es/AR/CurrencyNames_es_AR.properties - src/jdk.localedata/share/classes/sun/util/resources/es/BO/CurrencyNames_es_BO.properties - src/jdk.localedata/share/classes/sun/util/resources/es/CL/CurrencyNames_es_CL.properties - src/jdk.localedata/share/classes/sun/util/resources/es/CO/CurrencyNames_es_CO.properties - src/jdk.localedata/share/classes/sun/util/resources/es/CR/CurrencyNames_es_CR.properties - src/jdk.localedata/share/classes/sun/util/resources/es/CU/CurrencyNames_es_CU.properties - src/jdk.localedata/share/classes/sun/util/resources/es/CalendarData_es.properties - src/jdk.localedata/share/classes/sun/util/resources/es/CurrencyNames_es.properties - src/jdk.localedata/share/classes/sun/util/resources/es/DO/CurrencyNames_es_DO.properties - src/jdk.localedata/share/classes/sun/util/resources/es/EC/CurrencyNames_es_EC.properties - src/jdk.localedata/share/classes/sun/util/resources/es/ES/CalendarData_es_ES.properties - src/jdk.localedata/share/classes/sun/util/resources/es/ES/CurrencyNames_es_ES.properties - src/jdk.localedata/share/classes/sun/util/resources/es/GT/CurrencyNames_es_GT.properties - src/jdk.localedata/share/classes/sun/util/resources/es/HN/CurrencyNames_es_HN.properties - src/jdk.localedata/share/classes/sun/util/resources/es/LocaleNames_es.properties - src/jdk.localedata/share/classes/sun/util/resources/es/MX/CurrencyNames_es_MX.properties - src/jdk.localedata/share/classes/sun/util/resources/es/NI/CurrencyNames_es_NI.properties - src/jdk.localedata/share/classes/sun/util/resources/es/PA/CurrencyNames_es_PA.properties - src/jdk.localedata/share/classes/sun/util/resources/es/PE/CurrencyNames_es_PE.properties - src/jdk.localedata/share/classes/sun/util/resources/es/PR/CurrencyNames_es_PR.properties - src/jdk.localedata/share/classes/sun/util/resources/es/PY/CurrencyNames_es_PY.properties - src/jdk.localedata/share/classes/sun/util/resources/es/SV/CurrencyNames_es_SV.properties - src/jdk.localedata/share/classes/sun/util/resources/es/TimeZoneNames_es.java - src/jdk.localedata/share/classes/sun/util/resources/es/US/CalendarData_es_US.properties - src/jdk.localedata/share/classes/sun/util/resources/es/US/CurrencyNames_es_US.properties - src/jdk.localedata/share/classes/sun/util/resources/es/US/LocaleNames_es_US.properties - src/jdk.localedata/share/classes/sun/util/resources/es/UY/CurrencyNames_es_UY.properties - src/jdk.localedata/share/classes/sun/util/resources/es/VE/CurrencyNames_es_VE.properties - src/jdk.localedata/share/classes/sun/util/resources/et/CalendarData_et.properties - src/jdk.localedata/share/classes/sun/util/resources/et/EE/CurrencyNames_et_EE.properties - src/jdk.localedata/share/classes/sun/util/resources/et/LocaleNames_et.properties - src/jdk.localedata/share/classes/sun/util/resources/fi/CalendarData_fi.properties - src/jdk.localedata/share/classes/sun/util/resources/fi/FI/CurrencyNames_fi_FI.properties - src/jdk.localedata/share/classes/sun/util/resources/fi/LocaleNames_fi.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/BE/CurrencyNames_fr_BE.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/CA/CalendarData_fr_CA.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/CA/CurrencyNames_fr_CA.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/CH/CurrencyNames_fr_CH.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/CalendarData_fr.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/CurrencyNames_fr.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/FR/CurrencyNames_fr_FR.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/LU/CurrencyNames_fr_LU.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/LocaleNames_fr.properties - src/jdk.localedata/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java - src/jdk.localedata/share/classes/sun/util/resources/ga/IE/CurrencyNames_ga_IE.properties - src/jdk.localedata/share/classes/sun/util/resources/ga/LocaleNames_ga.properties - src/jdk.localedata/share/classes/sun/util/resources/hi/CalendarData_hi.properties - src/jdk.localedata/share/classes/sun/util/resources/hi/IN/CurrencyNames_hi_IN.properties - src/jdk.localedata/share/classes/sun/util/resources/hi/LocaleNames_hi.properties - src/jdk.localedata/share/classes/sun/util/resources/hi/TimeZoneNames_hi.java - src/jdk.localedata/share/classes/sun/util/resources/hr/CalendarData_hr.properties - src/jdk.localedata/share/classes/sun/util/resources/hr/HR/CurrencyNames_hr_HR.properties - src/jdk.localedata/share/classes/sun/util/resources/hr/LocaleNames_hr.properties - src/jdk.localedata/share/classes/sun/util/resources/hu/CalendarData_hu.properties - src/jdk.localedata/share/classes/sun/util/resources/hu/HU/CurrencyNames_hu_HU.properties - src/jdk.localedata/share/classes/sun/util/resources/hu/LocaleNames_hu.properties - src/jdk.localedata/share/classes/sun/util/resources/in/ID/CalendarData_in_ID.properties - src/jdk.localedata/share/classes/sun/util/resources/in/ID/CurrencyNames_in_ID.properties - src/jdk.localedata/share/classes/sun/util/resources/in/LocaleNames_in.properties - src/jdk.localedata/share/classes/sun/util/resources/is/CalendarData_is.properties - src/jdk.localedata/share/classes/sun/util/resources/is/IS/CurrencyNames_is_IS.properties - src/jdk.localedata/share/classes/sun/util/resources/is/LocaleNames_is.properties - src/jdk.localedata/share/classes/sun/util/resources/it/CH/CurrencyNames_it_CH.properties - src/jdk.localedata/share/classes/sun/util/resources/it/CalendarData_it.properties - src/jdk.localedata/share/classes/sun/util/resources/it/CurrencyNames_it.properties - src/jdk.localedata/share/classes/sun/util/resources/it/IT/CurrencyNames_it_IT.properties - src/jdk.localedata/share/classes/sun/util/resources/it/LocaleNames_it.properties - src/jdk.localedata/share/classes/sun/util/resources/it/TimeZoneNames_it.java - src/jdk.localedata/share/classes/sun/util/resources/iw/CalendarData_iw.properties - src/jdk.localedata/share/classes/sun/util/resources/iw/IL/CurrencyNames_iw_IL.properties - src/jdk.localedata/share/classes/sun/util/resources/iw/LocaleNames_iw.properties - src/jdk.localedata/share/classes/sun/util/resources/ja/CalendarData_ja.properties - src/jdk.localedata/share/classes/sun/util/resources/ja/CurrencyNames_ja.properties - src/jdk.localedata/share/classes/sun/util/resources/ja/JP/CurrencyNames_ja_JP.properties - src/jdk.localedata/share/classes/sun/util/resources/ja/LocaleNames_ja.properties - src/jdk.localedata/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java - src/jdk.localedata/share/classes/sun/util/resources/ko/CalendarData_ko.properties - src/jdk.localedata/share/classes/sun/util/resources/ko/CurrencyNames_ko.properties - src/jdk.localedata/share/classes/sun/util/resources/ko/KR/CurrencyNames_ko_KR.properties - src/jdk.localedata/share/classes/sun/util/resources/ko/LocaleNames_ko.properties - src/jdk.localedata/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java - src/jdk.localedata/share/classes/sun/util/resources/lt/CalendarData_lt.properties - src/jdk.localedata/share/classes/sun/util/resources/lt/LT/CurrencyNames_lt_LT.properties - src/jdk.localedata/share/classes/sun/util/resources/lt/LocaleNames_lt.properties - src/jdk.localedata/share/classes/sun/util/resources/lv/CalendarData_lv.properties - src/jdk.localedata/share/classes/sun/util/resources/lv/LV/CurrencyNames_lv_LV.properties - src/jdk.localedata/share/classes/sun/util/resources/lv/LocaleNames_lv.properties - src/jdk.localedata/share/classes/sun/util/resources/mk/CalendarData_mk.properties - src/jdk.localedata/share/classes/sun/util/resources/mk/LocaleNames_mk.properties - src/jdk.localedata/share/classes/sun/util/resources/mk/MK/CurrencyNames_mk_MK.properties - src/jdk.localedata/share/classes/sun/util/resources/ms/LocaleNames_ms.properties - src/jdk.localedata/share/classes/sun/util/resources/ms/MY/CalendarData_ms_MY.properties - src/jdk.localedata/share/classes/sun/util/resources/ms/MY/CurrencyNames_ms_MY.properties - src/jdk.localedata/share/classes/sun/util/resources/mt/CalendarData_mt.properties - src/jdk.localedata/share/classes/sun/util/resources/mt/LocaleNames_mt.properties - src/jdk.localedata/share/classes/sun/util/resources/mt/MT/CalendarData_mt_MT.properties - src/jdk.localedata/share/classes/sun/util/resources/mt/MT/CurrencyNames_mt_MT.properties - src/jdk.localedata/share/classes/sun/util/resources/nl/BE/CurrencyNames_nl_BE.properties - src/jdk.localedata/share/classes/sun/util/resources/nl/CalendarData_nl.properties - src/jdk.localedata/share/classes/sun/util/resources/nl/LocaleNames_nl.properties - src/jdk.localedata/share/classes/sun/util/resources/nl/NL/CurrencyNames_nl_NL.properties - src/jdk.localedata/share/classes/sun/util/resources/no/CalendarData_no.properties - src/jdk.localedata/share/classes/sun/util/resources/no/LocaleNames_no.properties - src/jdk.localedata/share/classes/sun/util/resources/no/NO/CurrencyNames_no_NO.properties - src/jdk.localedata/share/classes/sun/util/resources/no/NO/LocaleNames_no_NO_NY.properties - src/jdk.localedata/share/classes/sun/util/resources/pl/CalendarData_pl.properties - src/jdk.localedata/share/classes/sun/util/resources/pl/LocaleNames_pl.properties - src/jdk.localedata/share/classes/sun/util/resources/pl/PL/CurrencyNames_pl_PL.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/BR/CalendarData_pt_BR.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/BR/CurrencyNames_pt_BR.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/BR/LocaleNames_pt_BR.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/BR/TimeZoneNames_pt_BR.java - src/jdk.localedata/share/classes/sun/util/resources/pt/CalendarData_pt.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/CurrencyNames_pt.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/LocaleNames_pt.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/PT/CalendarData_pt_PT.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/PT/CurrencyNames_pt_PT.properties - src/jdk.localedata/share/classes/sun/util/resources/pt/PT/LocaleNames_pt_PT.properties - src/jdk.localedata/share/classes/sun/util/resources/ro/CalendarData_ro.properties - src/jdk.localedata/share/classes/sun/util/resources/ro/LocaleNames_ro.properties - src/jdk.localedata/share/classes/sun/util/resources/ro/RO/CurrencyNames_ro_RO.properties - src/jdk.localedata/share/classes/sun/util/resources/ru/CalendarData_ru.properties - src/jdk.localedata/share/classes/sun/util/resources/ru/LocaleNames_ru.properties - src/jdk.localedata/share/classes/sun/util/resources/ru/RU/CurrencyNames_ru_RU.properties - src/jdk.localedata/share/classes/sun/util/resources/sk/CalendarData_sk.properties - src/jdk.localedata/share/classes/sun/util/resources/sk/LocaleNames_sk.properties - src/jdk.localedata/share/classes/sun/util/resources/sk/SK/CurrencyNames_sk_SK.properties - src/jdk.localedata/share/classes/sun/util/resources/sl/CalendarData_sl.properties - src/jdk.localedata/share/classes/sun/util/resources/sl/LocaleNames_sl.properties - src/jdk.localedata/share/classes/sun/util/resources/sl/SI/CurrencyNames_sl_SI.properties - src/jdk.localedata/share/classes/sun/util/resources/sq/AL/CurrencyNames_sq_AL.properties - src/jdk.localedata/share/classes/sun/util/resources/sq/CalendarData_sq.properties - src/jdk.localedata/share/classes/sun/util/resources/sq/LocaleNames_sq.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/BA/CalendarData_sr_Latn_BA.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/BA/CurrencyNames_sr_BA.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/BA/CurrencyNames_sr_Latn_BA.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/CS/CurrencyNames_sr_CS.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/CalendarData_sr.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/LocaleNames_sr.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/LocaleNames_sr_Latn.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/ME/CalendarData_sr_Latn_ME.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/ME/CurrencyNames_sr_Latn_ME.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/ME/CurrencyNames_sr_ME.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/RS/CalendarData_sr_Latn_RS.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/RS/CurrencyNames_sr_Latn_RS.properties - src/jdk.localedata/share/classes/sun/util/resources/sr/RS/CurrencyNames_sr_RS.properties - src/jdk.localedata/share/classes/sun/util/resources/sv/CalendarData_sv.properties - src/jdk.localedata/share/classes/sun/util/resources/sv/CurrencyNames_sv.properties - src/jdk.localedata/share/classes/sun/util/resources/sv/LocaleNames_sv.properties - src/jdk.localedata/share/classes/sun/util/resources/sv/SE/CurrencyNames_sv_SE.properties - src/jdk.localedata/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java - src/jdk.localedata/share/classes/sun/util/resources/th/CalendarData_th.properties - src/jdk.localedata/share/classes/sun/util/resources/th/LocaleNames_th.properties - src/jdk.localedata/share/classes/sun/util/resources/th/TH/CurrencyNames_th_TH.properties - src/jdk.localedata/share/classes/sun/util/resources/tr/CalendarData_tr.properties - src/jdk.localedata/share/classes/sun/util/resources/tr/LocaleNames_tr.properties - src/jdk.localedata/share/classes/sun/util/resources/tr/TR/CurrencyNames_tr_TR.properties - src/jdk.localedata/share/classes/sun/util/resources/uk/CalendarData_uk.properties - src/jdk.localedata/share/classes/sun/util/resources/uk/LocaleNames_uk.properties - src/jdk.localedata/share/classes/sun/util/resources/uk/UA/CurrencyNames_uk_UA.properties - src/jdk.localedata/share/classes/sun/util/resources/vi/CalendarData_vi.properties - src/jdk.localedata/share/classes/sun/util/resources/vi/LocaleNames_vi.properties - src/jdk.localedata/share/classes/sun/util/resources/vi/VN/CurrencyNames_vi_VN.properties - src/jdk.localedata/share/classes/sun/util/resources/zh/CN/CurrencyNames_zh_CN.properties - src/jdk.localedata/share/classes/sun/util/resources/zh/CN/TimeZoneNames_zh_CN.java - src/jdk.localedata/share/classes/sun/util/resources/zh/CalendarData_zh.properties - src/jdk.localedata/share/classes/sun/util/resources/zh/HK/CurrencyNames_zh_HK.java - src/jdk.localedata/share/classes/sun/util/resources/zh/HK/LocaleNames_zh_HK.java - src/jdk.localedata/share/classes/sun/util/resources/zh/HK/TimeZoneNames_zh_HK.java - src/jdk.localedata/share/classes/sun/util/resources/zh/LocaleNames_zh.properties - src/jdk.localedata/share/classes/sun/util/resources/zh/SG/CurrencyNames_zh_SG.java - src/jdk.localedata/share/classes/sun/util/resources/zh/SG/LocaleNames_zh_SG.properties - src/jdk.localedata/share/classes/sun/util/resources/zh/TW/CurrencyNames_zh_TW.properties - src/jdk.localedata/share/classes/sun/util/resources/zh/TW/LocaleNames_zh_TW.properties - src/jdk.localedata/share/classes/sun/util/resources/zh/TW/TimeZoneNames_zh_TW.java - test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.html - test/java/lang/ProcessHandle/TEST.properties - test/java/net/SocketPermission/policy - test/java/util/stream/bootlib/java/util/stream/CollectorOps.java - test/java/util/stream/bootlib/java/util/stream/DefaultMethodStreams.java - test/java/util/stream/bootlib/java/util/stream/DoubleStreamTestDataProvider.java - test/java/util/stream/bootlib/java/util/stream/DoubleStreamTestScenario.java - test/java/util/stream/bootlib/java/util/stream/FlagDeclaringOp.java - test/java/util/stream/bootlib/java/util/stream/IntStreamTestDataProvider.java - test/java/util/stream/bootlib/java/util/stream/IntStreamTestScenario.java - test/java/util/stream/bootlib/java/util/stream/IntermediateTestOp.java - test/java/util/stream/bootlib/java/util/stream/LambdaTestHelpers.java - test/java/util/stream/bootlib/java/util/stream/LambdaTestMode.java - test/java/util/stream/bootlib/java/util/stream/LoggingTestCase.java - test/java/util/stream/bootlib/java/util/stream/LongStreamTestDataProvider.java - test/java/util/stream/bootlib/java/util/stream/LongStreamTestScenario.java - test/java/util/stream/bootlib/java/util/stream/OpTestCase.java - test/java/util/stream/bootlib/java/util/stream/SpliteratorTestHelper.java - test/java/util/stream/bootlib/java/util/stream/StatefulTestOp.java - test/java/util/stream/bootlib/java/util/stream/StatelessTestOp.java - test/java/util/stream/bootlib/java/util/stream/StreamOpFlagTestHelper.java - test/java/util/stream/bootlib/java/util/stream/StreamTestDataProvider.java - test/java/util/stream/bootlib/java/util/stream/StreamTestScenario.java - test/java/util/stream/bootlib/java/util/stream/TestData.java - test/java/util/stream/bootlib/java/util/stream/TestFlagExpectedOp.java - test/java/util/stream/bootlib/java/util/stream/ThowableHelper.java - test/java/util/stream/boottest/java/util/stream/DoubleNodeTest.java - test/java/util/stream/boottest/java/util/stream/FlagOpTest.java - test/java/util/stream/boottest/java/util/stream/IntNodeTest.java - test/java/util/stream/boottest/java/util/stream/LongNodeTest.java - test/java/util/stream/boottest/java/util/stream/NodeBuilderTest.java - test/java/util/stream/boottest/java/util/stream/NodeTest.java - test/java/util/stream/boottest/java/util/stream/SliceSpliteratorTest.java - test/java/util/stream/boottest/java/util/stream/SpinedBufferTest.java - test/java/util/stream/boottest/java/util/stream/StreamFlagsTest.java - test/java/util/stream/boottest/java/util/stream/StreamOpFlagsTest.java - test/java/util/stream/boottest/java/util/stream/StreamReuseTest.java - test/javax/sound/midi/MidiDeviceProvider/FakeInfo.java - test/javax/sound/midi/MidiDeviceProvider/NullInfo.java - test/javax/sound/midi/MidiDeviceProvider/UnsupportedInfo.java - test/javax/sound/sampled/FileReader/AudioFileClose.java - test/javax/sound/sampled/FileReader/ReadersExceptions.java - test/javax/sound/sampled/FileReader/RepeatedFormatReader.java - test/javax/sound/sampled/FileWriter/AlawEncoderSync.java - test/javax/sound/sampled/FileWriter/WriterCloseInput.java - test/javax/swing/JScrollPane/8033000/bug8033000.java - test/jdk/internal/misc/JavaLangAccess/FormatUnsigned.java - test/lib/testlibrary/jdk/testlibrary/InputArguments.java - test/sun/invoke/anon/ConstantPoolPatch/OptimalMapSize.java - test/sun/misc/Cleaner/ExitOnThrow.java - test/sun/misc/Cleaner/exitOnThrow.sh - test/sun/misc/Encode/DecodeBuffer.java - test/sun/misc/Encode/Encode.java - test/sun/misc/Encode/GetBytes.java - test/sun/misc/FloatingDecimal/OldFDBigIntForTest.java - test/sun/misc/FloatingDecimal/OldFloatingDecimalForTest.java - test/sun/misc/FloatingDecimal/TestFDBigInteger.java - test/sun/misc/FloatingDecimal/TestFloatingDecimal.java - test/sun/misc/VM/GetNanoTimeAdjustment.java - test/sun/misc/Version/Version.java - test/sun/security/tools/jarsigner/warning.sh - test/valhalla/boottest/valhalla/specializer/SignatureSpecializerTest.java - test/valhalla/test/valhalla/classdyn/ManglerTest.java - test/valhalla/test/valhalla/specializer/SignatureVisitorTest.java Changeset: 2800c266d243 Author: dsimms Date: 2016-06-09 13:08 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/2800c266d243 Merge Changeset: 00a9cf4de5b4 Author: dsimms Date: 2016-06-21 12:43 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/00a9cf4de5b4 Merge - interpreter/test-helpers/test/valhalla/interpreter/InterpreterTestHelper5.java Changeset: c92f241d60b6 Author: dsimms Date: 2016-06-28 11:05 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/c92f241d60b6 Merge - src/java.base/share/classes/valhalla/reflect/runtime/impl/DelegatedMirrorImpl.java From david.simms at oracle.com Tue Jun 28 11:57:45 2016 From: david.simms at oracle.com (David Simms) Date: Tue, 28 Jun 2016 13:57:45 +0200 Subject: Value Types Bytecodes - "Level 0" prototype Message-ID: <57726639.7090607@oracle.com> Recently pushed some basic "value type" prototype code to Valhalla repository. Usual caveats apply *this is a prototype*, things will change, the format of the bytecodes or whether we go ahead with said bytecodes at all. From bytecodes.hpp (mostly correspond to aref bytecodes): // value-type bytecodes _vload = 203, // 0xcb _vstore = 204, // 0xcc _vaload = 205, // 0xcd _vastore = 206, // 0xce _vnew = 207, // 0xcf _vnewarray = 208, // 0xd0 _multivnewarray = 209, // 0xd1 _vreturn = 210, // 0xd2 _vgetfield = 211, // 0xd3 _typed = 212, // 0xd4 _invokedirect = 213, // 0xd5 "Level 0" Prototype: Currently value types are simply modelled with oops and heap allocated for simplicity (class derives from instanceKlass). The semantics of value types are mostly there, but there is currently no stack or thread local allocation, work for the future. There is initial support for flattened compositions of values and array elements. The prototype "value types" have no JIT or verifier support, so code that wants to play with value types: * x86_64, Linux and Mac only. * "-noverify -Xint", no verify or JIT support * GC should be fine, not that we have extensively tested all GC configurations * invokedirect can execute values methods, that's about it o the type system isn't anywhere near being completely defined (e.g. should value types implement interfaces, and if so, how) Folks that don't use value types shouldn't notice any restrictions using the JIT etc. Cheers /David Simms From pbenedict at apache.org Tue Jun 28 15:27:12 2016 From: pbenedict at apache.org (Paul Benedict) Date: Tue, 28 Jun 2016 10:27:12 -0500 Subject: Value Types Bytecodes - "Level 0" prototype In-Reply-To: <57726639.7090607@oracle.com> References: <57726639.7090607@oracle.com> Message-ID: Do the value byte codes work only on the "flat" representation of the type? I don't think Valhalla has gotten to the point of boxing the type (has it?), but I am curious if these also operate on the boxed representation? Cheers, Paul On Tue, Jun 28, 2016 at 6:57 AM, David Simms wrote: > > Recently pushed some basic "value type" prototype code to Valhalla > repository. > > Usual caveats apply *this is a prototype*, things will change, the format > of the bytecodes or whether we go ahead with said bytecodes at all. From > bytecodes.hpp (mostly correspond to aref bytecodes): > > // value-type bytecodes > _vload = 203, // 0xcb > _vstore = 204, // 0xcc > _vaload = 205, // 0xcd > _vastore = 206, // 0xce > _vnew = 207, // 0xcf > _vnewarray = 208, // 0xd0 > _multivnewarray = 209, // 0xd1 > _vreturn = 210, // 0xd2 > _vgetfield = 211, // 0xd3 > _typed = 212, // 0xd4 > _invokedirect = 213, // 0xd5 > > > "Level 0" Prototype: Currently value types are simply modelled with oops > and heap allocated for simplicity (class derives from instanceKlass). The > semantics of value types are mostly there, but there is currently no stack > or thread local allocation, work for the future. There is initial support > for flattened compositions of values and array elements. > > The prototype "value types" have no JIT or verifier support, so code that > wants to play with value types: > > * x86_64, Linux and Mac only. > * "-noverify -Xint", no verify or JIT support > * GC should be fine, not that we have extensively tested all GC > configurations > * invokedirect can execute values methods, that's about it > o the type system isn't anywhere near being completely defined > (e.g. should value types implement interfaces, and if so, how) > > Folks that don't use value types shouldn't notice any restrictions using > the JIT etc. > > Cheers > /David Simms > > From david.simms at oracle.com Tue Jun 28 15:56:53 2016 From: david.simms at oracle.com (David Simms) Date: Tue, 28 Jun 2016 17:56:53 +0200 Subject: Value Types Bytecodes - "Level 0" prototype In-Reply-To: References: <57726639.7090607@oracle.com> Message-ID: Correct, there is still a fair amount of work to be done on what it means to be boxed On 28/06/2016 5:27 p.m., Paul Benedict wrote: > Do the value byte codes work only on the "flat" representation of the > type? I don't think Valhalla has gotten to the point of boxing the > type (has it?), but I am curious if these also operate on the boxed > representation? > > Cheers, > Paul > > On Tue, Jun 28, 2016 at 6:57 AM, David Simms > wrote: > > > Recently pushed some basic "value type" prototype code to Valhalla > repository. > > Usual caveats apply *this is a prototype*, things will change, the > format of the bytecodes or whether we go ahead with said bytecodes > at all. From bytecodes.hpp (mostly correspond to aref bytecodes): > > // value-type bytecodes > _vload = 203, // 0xcb > _vstore = 204, // 0xcc > _vaload = 205, // 0xcd > _vastore = 206, // 0xce > _vnew = 207, // 0xcf > _vnewarray = 208, // 0xd0 > _multivnewarray = 209, // 0xd1 > _vreturn = 210, // 0xd2 > _vgetfield = 211, // 0xd3 > _typed = 212, // 0xd4 > _invokedirect = 213, // 0xd5 > > > "Level 0" Prototype: Currently value types are simply modelled > with oops and heap allocated for simplicity (class derives from > instanceKlass). The semantics of value types are mostly there, but > there is currently no stack or thread local allocation, work for > the future. There is initial support for flattened compositions of > values and array elements. > > The prototype "value types" have no JIT or verifier support, so > code that wants to play with value types: > > * x86_64, Linux and Mac only. > * "-noverify -Xint", no verify or JIT support > * GC should be fine, not that we have extensively tested all GC > configurations > * invokedirect can execute values methods, that's about it > o the type system isn't anywhere near being completely defined > (e.g. should value types implement interfaces, and if so, how) > > Folks that don't use value types shouldn't notice any restrictions > using the JIT etc. > > Cheers > /David Simms > > From brian.goetz at oracle.com Tue Jun 28 16:31:31 2016 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 28 Jun 2016 12:31:31 -0400 Subject: Value Types Bytecodes - "Level 0" prototype In-Reply-To: References: <57726639.7090607@oracle.com> Message-ID: <49c0afb8-3155-9a77-838a-ead678bc3eab@oracle.com> First, the usual disclaimer: this is a total "throw something against the wall" prototype, everything *will* change. The existing bytecode set makes strong distinction between primitives and refs; the key safety promise of the verifier is that we will never let you cast an object ref to an int. So refs are moved with aload/astore, and ints with iload/istore. The reason there are separate bytecodes for I vs J (but not I vs B,C,S -- here, the VM mostly erases byte/short/char to int) is that I and J have different size. So it is with values; flattened values have varying sizes too. So the v* bytecodes being prototyped here are the value equivalent of iload/istore/etc, but with an extra operand so you know *what* value type (QPoint vs QComplex) is being moved. Logically, these work only on the flat representation -- a Q type, not an L-type. But the VM is free to transparently box a value if it wants to -- as long as this conversion is invisible to the bytecode consumer. So if the *user* wants to convert a flat Point into its box equivalent, it will explicitly box, somehow (current thinking is an `a2b` bytecode, which names a source type and a target type, which will convert from QPoint to LPoint.) On 6/28/2016 11:27 AM, Paul Benedict wrote: > Do the value byte codes work only on the "flat" representation of the type? > I don't think Valhalla has gotten to the point of boxing the type (has > it?), but I am curious if these also operate on the boxed representation? > > Cheers, > Paul > > On Tue, Jun 28, 2016 at 6:57 AM, David Simms wrote: > >> Recently pushed some basic "value type" prototype code to Valhalla >> repository. >> >> Usual caveats apply *this is a prototype*, things will change, the format >> of the bytecodes or whether we go ahead with said bytecodes at all. From >> bytecodes.hpp (mostly correspond to aref bytecodes): >> >> // value-type bytecodes >> _vload = 203, // 0xcb >> _vstore = 204, // 0xcc >> _vaload = 205, // 0xcd >> _vastore = 206, // 0xce >> _vnew = 207, // 0xcf >> _vnewarray = 208, // 0xd0 >> _multivnewarray = 209, // 0xd1 >> _vreturn = 210, // 0xd2 >> _vgetfield = 211, // 0xd3 >> _typed = 212, // 0xd4 >> _invokedirect = 213, // 0xd5 >> >> >> "Level 0" Prototype: Currently value types are simply modelled with oops >> and heap allocated for simplicity (class derives from instanceKlass). The >> semantics of value types are mostly there, but there is currently no stack >> or thread local allocation, work for the future. There is initial support >> for flattened compositions of values and array elements. >> >> The prototype "value types" have no JIT or verifier support, so code that >> wants to play with value types: >> >> * x86_64, Linux and Mac only. >> * "-noverify -Xint", no verify or JIT support >> * GC should be fine, not that we have extensively tested all GC >> configurations >> * invokedirect can execute values methods, that's about it >> o the type system isn't anywhere near being completely defined >> (e.g. should value types implement interfaces, and if so, how) >> >> Folks that don't use value types shouldn't notice any restrictions using >> the JIT etc. >> >> Cheers >> /David Simms >> >> From david.simms at oracle.com Thu Jun 30 07:08:27 2016 From: david.simms at oracle.com (david.simms at oracle.com) Date: Thu, 30 Jun 2016 07:08:27 +0000 Subject: hg: valhalla/valhalla/hotspot: Compile value types for 32-bit Message-ID: <201606300708.u5U78Rg9025250@aojmv0008.oracle.com> Changeset: 4aad53f2afc1 Author: dsimms Date: 2016-06-30 09:06 +0200 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/4aad53f2afc1 Compile value types for 32-bit ! src/cpu/x86/vm/abstractInterpreter_x86.cpp ! src/cpu/x86/vm/interp_masm_x86.cpp ! src/cpu/x86/vm/interpreterRT_x86_32.cpp ! src/cpu/x86/vm/templateTable_x86.cpp From maurizio.cimadamore at oracle.com Thu Jun 30 11:05:27 2016 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 30 Jun 2016 11:05:27 +0000 Subject: hg: valhalla/valhalla/jdk: Fix: Model3Converter does not handle erased inner classes properly Message-ID: <201606301105.u5UB5R23018266@aojmv0008.oracle.com> Changeset: 7ad88bd23c4e Author: mcimadamore Date: 2016-06-30 12:05 +0100 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/7ad88bd23c4e Fix: Model3Converter does not handle erased inner classes properly ! src/java.base/share/classes/valhalla/model3/Model3Converter.java From brian.goetz at oracle.com Thu Jun 30 20:14:38 2016 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 30 Jun 2016 20:14:38 +0000 Subject: hg: valhalla/valhalla/jdk: Incremental progress on streams port; more test cases Message-ID: <201606302014.u5UKEcoA001832@aojmv0008.oracle.com> Changeset: 6ac303e36f22 Author: briangoetz Date: 2016-06-30 16:14 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/jdk/rev/6ac303e36f22 Incremental progress on streams port; more test cases ! src/java.base/share/classes/java/anyutil/OptionalInt.java ! src/java.base/share/classes/java/anyutil/PrimitiveIterator.java ! src/java.base/share/classes/java/anyutil/Spliterator.java ! src/java.base/share/classes/java/anyutil/stream/DoubleStream.java ! src/java.base/share/classes/java/anyutil/stream/ForEachOps.java ! src/java.base/share/classes/java/anyutil/stream/IntStream.java ! src/java.base/share/classes/java/anyutil/stream/LongStream.java ! src/java.base/share/classes/java/anyutil/stream/Pipeline.java ! src/java.base/share/classes/java/anyutil/stream/Sink.java ! src/java.base/share/classes/java/anyutil/stream/SliceOps.java ! src/java.base/share/classes/java/anyutil/stream/Stream.java ! src/java.base/share/classes/java/anyutil/stream/StreamSupport.java ! src/java.base/share/classes/java/anyutil/stream/Streams.java ! test/valhalla/test/valhalla/anyutil/SimplePipelineTest.java + test/valhalla/test/valhalla/model3/EncoderTest.java