From christian.thalinger at oracle.com Tue Mar 1 01:37:31 2016 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Mon, 29 Feb 2016 15:37:31 -1000 Subject: AArch64: Status In-Reply-To: <56D172E6.7050004@redhat.com> References: <56D172E6.7050004@redhat.com> Message-ID: <3951AD96-93B2-45A8-B4C6-8D0BFC1D71A1@oracle.com> > On Feb 26, 2016, at 11:56 PM, Andrew Haley wrote: > > On 26/02/16 23:03, Christian Thalinger wrote: > >> The assert suggests there is some code missing in the >> DeoptimizationBlob. Another way would be to implement >> PreferGraalStubs=true and use these by default on AArch64. That >> would be my preferred way, actually, because the reason I introduced >> DeoptimizationStub and UncommonTrapStub was to make porting to a new >> architecture easier. And this is one of these rare cases! > > That solution makes sense to me. > >> Also, I?m seeing issues with biased locking and method flushing very >> likely related to stack walking. Although garbage collections >> seemingly do work. >> >> Oh, and I haven?t implemented compressed oops yet (that?s the >> low-hanging fruit!). >> >> Anyway, I have to go off and work on something else for a while so >> it would be great if other people could pick up some of the open >> issues. > > Sure. My biggest problem with Graal has always been figuring out how > to run and test it. I have it all built, but it's very hard to get my > head around what it's doing. If you have a recipe with the right > instructions about how to run the tests and reproduce the problems > that would help a lot. It?s basically the command at the end of my post: $ mx unittest -XX:-UseCompressedOops bytecode.BC Turn compressed oops on, run it and you will see a lot of exceptions. Mostly the same, I would guess. Some can be fixed locally on an x86 machine by doing: $ mx unittest -Dos.arch=aarch64 -XX:-UseCompressedOops bytecode.BC It will fail once it hits the code installer or a foreign call which needs some architecture specific information but for most missing LIR implementations this approach works. The next big group is: $ mx unittest -XX:-UseCompressedOops except.BC (The last command line option is basically a substring match on all JUnit tests. Check out the package com.oracle.graal.jtt.except) From java at stefan-marr.de Tue Mar 1 13:20:41 2016 From: java at stefan-marr.de (Stefan Marr) Date: Tue, 1 Mar 2016 14:20:41 +0100 Subject: Call for Papers: 11th Workshop on Implementation, Compilation, Optimization of OO Languages, Programs and Systems Message-ID: <7C62CB6D-E1DA-4A3C-B2E9-7759602E70B8@stefan-marr.de> Call for Papers: ICOOOLPS?16 ============================ 11th Workshop on Implementation, Compilation, Optimization of OO Languages, Programs and Systems Co-located with ECOOP July 18, 2016, Rome, Italy URL: http://2016.ecoop.org/track/ICOOOLPS-2016 Twitter: @ICOOOLPS The ICOOOLPS workshop series brings together researchers and practitioners working in the field of language implementation and optimization. The goal of the workshop is to discuss emerging problems and research directions as well as new solutions to classic performance challenges. The topics of interest for the workshop include techniques for the implementation and optimization of a wide range of languages including but not limited to object-oriented ones. Furthermore, meta-compilation techniques or language-agnostic approaches are welcome, too. A non-exclusive list of topics follows: - implementation and optimization of fundamental languages features (from automatic memory management to zero-overhead metaprogramming) - runtime systems technology (libraries, virtual machines) - static, adaptive, and speculative optimizations and compiler techniques - meta-compilation techniques and language-agnostic approaches for the efficient implementation of languages - compilers (intermediate representations, offline and online optimizations,...) - empirical studies on language usage, benchmark design, and benchmarking methodology - resource-sensitive systems (real-time, low power, mobile, cloud) - studies on design choices and tradeoffs (dynamic vs. static compilation, heuristics vs. programmer input,...) - tooling support, debuggability and observability of languages as well as their implementations ### Workshop Format and Submissions This workshop welcomes the presentation and discussion of new ideas and emerging problems that give a chance for interaction and exchange. More mature work is welcome as part of a mini-conference format, too. We aim to interleave interactive brainstorming and demonstration sessions between the formal presentations to foster an active exchange of ideas. The workshop papers will be published either in the ACM DL or in the Dagstuhl LIPIcs ECOOP Workshop proceedings. Until further notice, please use the ACM SIGPLAN template with a 10pt font size: http://www.sigplan.org/Resources/Author/ - position and work-in-progress paper: 1-4 pages - technical paper: max. 10 pages - demos and posters: 1-page abstract For the submission, please use the HotCRP system: http://ssw.jku.at/icooolps/ ### Important Dates - abstract submission: April 11, 2016 - paper submission: April 15, 2016 - notification: May 13, 2016 - all deadlines: Anywhere on Earth (AoE), i.e., GMT/UTC?12:00 hour - workshop: July 18th, 2016 ### Program Committee Edd Barrett, King?s College London, UK Clement Bera, Inria Lille, France Maxime Chevalier-Boisvert, Universit? de Montr?al, Canada Tim Felgentreff, Hasso Plattner Institute, Germany Roland Ducournau, LIRMM, Universit? de Montpellier, France Elisa Gonzalez Boix, Vrije Universiteit Brussel, Belgium David Gregg, Trinity College Dublin, Ireland Matthias Grimmer, Johannes Kepler University Linz, Austria Michael Haupt, Oracle, Germany Richard Jones, University of Kent, UK Tomas Kalibera, Northeastern University, USA Hidehiko Masuhara, Tokyo Institute of Technology, Japan Tiark Rompf, Purdue University, USA Jennifer B. Sartor, Ghent University, Belgium Sam Tobin-Hochstadt, Indiana University, USA ### Workshop Organizers Stefan Marr, Johannes Kepler University Linz, Austria Eric Jul, University of Oslo, Norway For questions or concerns, please mail to stefan.marr at jku.at or contact us via https://twitter.com/icooolps. From jaroslav.tulach at oracle.com Wed Mar 2 03:18:45 2016 From: jaroslav.tulach at oracle.com (Jaroslav Tulach) Date: Wed, 02 Mar 2016 04:18:45 +0100 Subject: truffle-api-changes after PR #86 In-Reply-To: <1149871124.19.1456886206052@1cf9741c4b7e> References: <1149871124.19.1456886206052@1cf9741c4b7e> Message-ID: <2827473.OEHNpOO8sD@logoutik> Hi. I've just merged pull request https://github.com/graalvm/truffle/pull/86 and as can be seen in the Travis output https://travis-ci.org/graalvm/truffle/jobs/113014547 there are some API changes. Here is explanation of what they mean: > Checking all signature changes against > /home/travis/build/graalvm/truffle/truffle/com.oracle.truffle.api/snapshot. > sigtest > > Added Annotations > > ----------------- > > com.oracle.truffle.api.CompilerDirectives.init: anno 0 > java.lang.Deprecated() > > com.oracle.truffle.api.ExactMath.init: anno 0 java.lang.Deprecated() > > com.oracle.truffle.api.Truffle.init: anno 0 java.lang.Deprecated() > > com.oracle.truffle.api.frame.FrameUtil.init: anno 0 > java.lang.Deprecated() > > com.oracle.truffle.api.nodes.NodeUtil.init: anno 0 > java.lang.Deprecated() > > com.oracle.truffle.api.utilities.JSONHelper$JSONStringBuilder.init: > anno 0 java.lang.Deprecated() > > com.oracle.truffle.api.utilities.JSONHelper.init: anno 0 > java.lang.Deprecated() > > com.oracle.truffle.api.utilities.ValueProfile.init: anno 0 > java.lang.Deprecated() In Java, if your source doesn't specify a constructor, a default one is generated. That is OK for regular code, but in case of API it is usually not what a designer wants. In most cases (like those eight classes listed above), the designer did want default constructor at all - in case of utility classes (those with static only methods) it makes little sense. I kept the constructors, but I deprecated them. We'll remove them when we do cleanup of deprecated methods. > Missing Constructors > > -------------------- > > com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder: > constructor public > com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.init(com > .oracle.truffle.api.instrumentation.SourceSectionFilter) This is the same case as above, just with one difference: The new instrumentation API hasn't been released yet, so I made the constructor private - hence it is reported as missing compared to yesterday's state. > There are changes! Yes, there were changes, but they made the Truffle API cleaner! Or am I wrong? -jt From bahram.yarahmadi at gmail.com Wed Mar 9 11:05:17 2016 From: bahram.yarahmadi at gmail.com (Bahram Yarahmadi) Date: Wed, 9 Mar 2016 14:35:17 +0330 Subject: Problem with Ideal_graph_visualizer Message-ID: Hi guys, When I enter mx igv command in the graal-core directory to see the visulizer I get this Error Buildfile: /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/build.xml IGV ant build & launch failed. Check '.ideal_graph_visualizer.log'. You can also try to delete 'src/share/tools/IdealGraphVisualizer/nbplatform'. what should I do ? Regrads From roland.schatz at oracle.com Wed Mar 9 12:19:25 2016 From: roland.schatz at oracle.com (Roland Schatz) Date: Wed, 9 Mar 2016 13:19:25 +0100 Subject: AArch64: Status In-Reply-To: References: Message-ID: <56E014CD.7000102@oracle.com> On 02/27/2016 12:03 AM, Christian Thalinger wrote: > Now that https://bugs.openjdk.java.net/browse/JDK-8150561 is integrated into hs-comp the Graal AArch64 port can run (almost) all bytecode unit tests successfully. I say almost because there are two that are failing: > > Tests run: 1374, Failures: 2 Nice! > > These two fail because of the way AArch64Address works today. In my opinion AArch64Address knows too much about low-level details of AArch64 addressing modes. Fixing these two failures is non-trivial so I?m postponing this. > > The next most important thing to fix is deoptimization. Right now we crash every time we hit an uncommon trap or deoptimize for some other reason. Here is a stack trace for a deoptimization: IMO, now would be a good time to implement the test/compiler/jvmci/code tests for AArch64. They should catch most problems with code installation and debug info, which might be a reason for deopt failures. - Roland From thomas.wuerthinger at oracle.com Wed Mar 9 12:43:06 2016 From: thomas.wuerthinger at oracle.com (Thomas Wuerthinger) Date: Wed, 9 Mar 2016 13:43:06 +0100 Subject: Problem with Ideal_graph_visualizer In-Reply-To: References: Message-ID: <262749C5-6DDA-4256-949B-B3C6789B327D@oracle.com> What Java version is your JAVA_HOME assigned to? The suggestion of deleting 'src/share/tools/IdealGraphVisualizer/nbplatform? can indeed work. The error is usually due to a version mismatch involving Java and/or NetBeans. - thomas > On 09 Mar 2016, at 12:05, Bahram Yarahmadi wrote: > > Hi guys, > When I enter mx igv command in the graal-core directory to see the > visulizer I get this Error > Buildfile: > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/build.xml > IGV ant build & launch failed. Check '.ideal_graph_visualizer.log'. You can > also try to delete 'src/share/tools/IdealGraphVisualizer/nbplatform'. > > > what should I do ? > > > Regrads From christian.thalinger at oracle.com Thu Mar 10 04:08:27 2016 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Wed, 9 Mar 2016 18:08:27 -1000 Subject: AArch64: Status In-Reply-To: <56E014CD.7000102@oracle.com> References: <56E014CD.7000102@oracle.com> Message-ID: <3A1F8A48-C2B9-474F-B4E0-1C7B727E7ECC@oracle.com> > On Mar 9, 2016, at 2:19 AM, Roland Schatz wrote: > > On 02/27/2016 12:03 AM, Christian Thalinger wrote: >> Now that https://bugs.openjdk.java.net/browse/JDK-8150561 is integrated into hs-comp the Graal AArch64 port can run (almost) all bytecode unit tests successfully. I say almost because there are two that are failing: >> >> Tests run: 1374, Failures: 2 > Nice! > >> >> These two fail because of the way AArch64Address works today. In my opinion AArch64Address knows too much about low-level details of AArch64 addressing modes. Fixing these two failures is non-trivial so I?m postponing this. >> >> The next most important thing to fix is deoptimization. Right now we crash every time we hit an uncommon trap or deoptimize for some other reason. Here is a stack trace for a deoptimization: > IMO, now would be a good time to implement the test/compiler/jvmci/code tests for AArch64. They should catch most problems with code installation and debug info, which might be a reason for deopt failures. Right. Any volunteers? :-) From bahram.yarahmadi at gmail.com Mon Mar 14 12:34:44 2016 From: bahram.yarahmadi at gmail.com (Bahram Yarahmadi) Date: Mon, 14 Mar 2016 16:04:44 +0330 Subject: Problem with IGV Message-ID: Hello guys, These days I'm learning graal compiler from videos in openjdk website,I have a problem with IGV and I cannot run it and build it !! I want to omit these part the tutorial and learn graal with out IGV which is a bit difficult for me running and working with IGV is necessary to lean Graal ? I want to know your opinion Regards Bahram From doug.simon at oracle.com Mon Mar 14 12:57:08 2016 From: doug.simon at oracle.com (Doug Simon) Date: Mon, 14 Mar 2016 13:57:08 +0100 Subject: Problem with IGV In-Reply-To: References: Message-ID: <760508C2-8141-453C-B4C4-5C9286F646E7@oracle.com> Hi Bahram, Could you please state in more detail the issue(s) you are having? What set of mx commands are you running and what platform are you on? Did looking at .ideal_graph_visualizer.log reveal anything or deleting the src/share/tools/IdealGraphVisualizer/nbplatform directory (as suggested by Thomas)? -Doug > On 14 Mar 2016, at 13:34, Bahram Yarahmadi wrote: > > Hello guys, > These days I'm learning graal compiler from videos in openjdk website,I > have a problem with IGV and I cannot run it and build it !! > I want to omit these part the tutorial and learn graal with out IGV which > is a bit difficult for me > running and working with IGV is necessary to lean Graal ? I want to know > your opinion > > > Regards > > Bahram From doug.simon at oracle.com Mon Mar 14 16:07:30 2016 From: doug.simon at oracle.com (Doug Simon) Date: Mon, 14 Mar 2016 17:07:30 +0100 Subject: Problem with IGV In-Reply-To: References: <760508C2-8141-453C-B4C4-5C9286F646E7@oracle.com> <08AEE623-DC19-4652-BFBE-DB2F9891CE54@oracle.com> <0DA38775-0700-4BF0-B13E-E4667EB21B25@oracle.com> Message-ID: <21052C7B-3BCD-4C33-AED2-E10ECC1C26E4@oracle.com> Since IGV is launched with ant, you can specify ant proxies[1] via the ANT_OPTS environment variable. For example: $ export ANT_OPTS="-Dhttp.proxyHost=www-proxy.company.com -Dhttp.proxyPort=80? $ mx igv -Doug [1] https://ant.apache.org/manual/proxy.html > On 14 Mar 2016, at 15:44, Bahram Yarahmadi wrote: > > Thanks Doug, > You helped me a lot > > > Regards , > > > On Mon, Mar 14, 2016 at 6:00 PM, Bahram Yarahmadi wrote: > I'm in iran and the url is not accesable for me ,But I can download the file with some proxy setting in my web brower !! > > > On Mon, Mar 14, 2016 at 5:35 PM, Doug Simon wrote: > Might be a network issue on your end as I can download http://updates.netbeans.org/netbeans/updates/7.4/uc/final/distribution/catalog.xml.gz fine. Can you download it in a browser? > > > > On 14 Mar 2016, at 14:30, Bahram Yarahmadi wrote: > > > > Sorry Doug,Please accept my apology,The file was hidden and I didn't know > > And the content of the file : > > download: > > [mkdir] Created dir: /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/nbplatform/harness > > [echo] Downloading clusters ide|platform > > [get] Getting: http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/netbeans/harness/tasks.jar > > [get] To: /tmp/tasks.jar > > [get] local file date : Mon Mar 14 09:12:41 IRST 2016 > > [get] Not modified - so not downloaded > > [autoupdate] Downloading http://updates.netbeans.org/netbeans/updates/7.4/uc/final/distribution/catalog.xml.gz > > > > BUILD FAILED > > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/build.xml:7: The following error occurred while executing this line: > > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/nbproject/build-impl.xml:41: The following error occurred while executing this line: > > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/nbproject/platform.xml:29: Server returned HTTP response code: 403 for URL: http://updates.netbeans.org/netbeans/updates/7.4/uc/final/distribution/catalog.xml.gz > > > > Total time: 11 seconds > > > > On Mon, Mar 14, 2016 at 4:46 PM, Doug Simon wrote: > > > > > On 14 Mar 2016, at 14:08, Bahram Yarahmadi wrote: > > > > > > There is no such file .ideal_graph_visualizer.log. > > > > This file is in the jvmci suite directory which I?m guessing is ../jvmci/.ideal_graph_visualizer.log or ../graal-jvmci-8/.ideal_graph_visualizer.log for you (assuming you are in the graal-core/ directory). > > > > -Doug > > > > > From bahram.yarahmadi at gmail.com Tue Mar 15 12:06:08 2016 From: bahram.yarahmadi at gmail.com (Bahram Yarahmadi) Date: Tue, 15 Mar 2016 15:36:08 +0330 Subject: Problem with IGV In-Reply-To: <21052C7B-3BCD-4C33-AED2-E10ECC1C26E4@oracle.com> References: <760508C2-8141-453C-B4C4-5C9286F646E7@oracle.com> <08AEE623-DC19-4652-BFBE-DB2F9891CE54@oracle.com> <0DA38775-0700-4BF0-B13E-E4667EB21B25@oracle.com> <21052C7B-3BCD-4C33-AED2-E10ECC1C26E4@oracle.com> Message-ID: Thanks ,You solved my problem Regards Bahram On Mon, Mar 14, 2016 at 7:37 PM, Doug Simon wrote: > Since IGV is launched with ant, you can specify ant proxies[1] via the > ANT_OPTS environment variable. For example: > > $ export ANT_OPTS="-Dhttp.proxyHost=www-proxy.company.com > -Dhttp.proxyPort=80? > $ mx igv > > -Doug > > [1] https://ant.apache.org/manual/proxy.html > > > On 14 Mar 2016, at 15:44, Bahram Yarahmadi > wrote: > > > > Thanks Doug, > > You helped me a lot > > > > > > Regards , > > > > > > On Mon, Mar 14, 2016 at 6:00 PM, Bahram Yarahmadi < > bahram.yarahmadi at gmail.com> wrote: > > I'm in iran and the url is not accesable for me ,But I can download the > file with some proxy setting in my web brower !! > > > > > > On Mon, Mar 14, 2016 at 5:35 PM, Doug Simon > wrote: > > Might be a network issue on your end as I can download > http://updates.netbeans.org/netbeans/updates/7.4/uc/final/distribution/catalog.xml.gz > fine. Can you download it in a browser? > > > > > > > On 14 Mar 2016, at 14:30, Bahram Yarahmadi > wrote: > > > > > > Sorry Doug,Please accept my apology,The file was hidden and I didn't > know > > > And the content of the file : > > > download: > > > [mkdir] Created dir: > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/nbplatform/harness > > > [echo] Downloading clusters ide|platform > > > [get] Getting: > http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/netbeans/harness/tasks.jar > > > [get] To: /tmp/tasks.jar > > > [get] local file date : Mon Mar 14 09:12:41 IRST 2016 > > > [get] Not modified - so not downloaded > > > [autoupdate] Downloading > http://updates.netbeans.org/netbeans/updates/7.4/uc/final/distribution/catalog.xml.gz > > > > > > BUILD FAILED > > > > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/build.xml:7: > The following error occurred while executing this line: > > > > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/nbproject/build-impl.xml:41: > The following error occurred while executing this line: > > > > /home/bahram/graal/jvmci/src/share/tools/IdealGraphVisualizer/nbproject/platform.xml:29: > Server returned HTTP response code: 403 for URL: > http://updates.netbeans.org/netbeans/updates/7.4/uc/final/distribution/catalog.xml.gz > > > > > > Total time: 11 seconds > > > > > > On Mon, Mar 14, 2016 at 4:46 PM, Doug Simon > wrote: > > > > > > > On 14 Mar 2016, at 14:08, Bahram Yarahmadi < > bahram.yarahmadi at gmail.com> wrote: > > > > > > > > There is no such file .ideal_graph_visualizer.log. > > > > > > This file is in the jvmci suite directory which I?m guessing is > ../jvmci/.ideal_graph_visualizer.log or > ../graal-jvmci-8/.ideal_graph_visualizer.log for you (assuming you are in > the graal-core/ directory). > > > > > > -Doug > > > > > > > > > > > From raffaello.giulietti at supsi.ch Wed Mar 16 11:30:32 2016 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Wed, 16 Mar 2016 12:30:32 +0100 Subject: Object Storage Model: has anybody real-world experience? Message-ID: <56E943D8.10405@supsi.ch> Hello, the Object Storage Model (OSM) has been introduced here http://dl.acm.org/citation.cfm?id=2647517 and is provided in Truffle. The paper describes some (impressive) benchmarks done with the Truffle implementation of JavaScript and with JRuby+Truffle. I'm wondering if it has been used even in such class-based dynamic languages like Smalltalk and Newspeak, where objects have a fixed size of (named) dynamically typed instance variables but where the full flexibility of the model might perhaps be an overkill. Also, I'm wondering if the OSM has been used and measured in real-world server applications with hundred of millions or even billions of live objects and/or if there are informal reports on its the usage in such harsher environments. Thanks Raffaello From java at stefan-marr.de Wed Mar 16 12:04:04 2016 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 16 Mar 2016 13:04:04 +0100 Subject: Object Storage Model: has anybody real-world experience? In-Reply-To: <56E943D8.10405@supsi.ch> References: <56E943D8.10405@supsi.ch> Message-ID: Hi Raffaello: > On 16 Mar 2016, at 12:30, Raffaello Giulietti wrote: > > I?m wondering if it has been used even in such class-based dynamic languages like Smalltalk and Newspeak, where objects have a fixed size of (named) dynamically typed instance variables but where the full flexibility of the model might perhaps be an overkill. Yes, I used it for SOM Smalltalk: https://github.com/smarr/TruffleSOM/tree/truffle-object-model/ It can have benefits there as well. Imagine a very specific use case, a simply linked list implemented in the standard library. The class that implements the elements of such a list is typically used to store a wide range of different types. So, if you decouple the object model from a class, you could allow for specialization of that list element for integers as well as doubles. This could be a benefit. However, I am not sure how common that actually would be. In SOMns, i.e., Newspeak, I did not implement the Truffle object model yet, because I got a very similar custom object model (still from my SOM Smalltalk), and in Newspeak, I actually need another version of it for not objects, but classes, because of the inner class semantics. > Also, I?m wondering if the OSM has been used and measured in real-world server applications with hundred of millions or even billions of live objects and/or if there are informal reports on its the usage in such harsher environments. That?s perhaps something for the other Truffle languages, I don?t have numbers for such applications. Best regards Stefan -- Stefan Marr Johannes Kepler Universit?t Linz http://stefan-marr.de/research/ From raffaello.giulietti at supsi.ch Wed Mar 16 13:21:34 2016 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Wed, 16 Mar 2016 14:21:34 +0100 Subject: Object Storage Model: has anybody real-world experience? In-Reply-To: References: <56E943D8.10405@supsi.ch> Message-ID: <56E95DDE.2090801@supsi.ch> Hi Stefan, On 2016-03-16 13:04, Stefan Marr wrote: > Hi Raffaello: > >> On 16 Mar 2016, at 12:30, Raffaello Giulietti wrote: >> >> I?m wondering if it has been used even in such class-based dynamic languages like Smalltalk and Newspeak, where objects have a fixed size of (named) dynamically typed instance variables but where the full flexibility of the model might perhaps be an overkill. > > Yes, I used it for SOM Smalltalk: https://github.com/smarr/TruffleSOM/tree/truffle-object-model/ > It can have benefits there as well. > OK, I'll give it a look. > Imagine a very specific use case, a simply linked list implemented in the standard library. > The class that implements the elements of such a list is typically used to store a wide range of different types. > So, if you decouple the object model from a class, you could allow for specialization of that list element for integers as well as doubles. > > This could be a benefit. However, I am not sure how common that actually would be. > I guess OrderedCollection is much more used. More generally, to implement large contiguous heterogeneous collections in dynamically typed languages the OSM does not seem to be of great help: for the elements, one either has to resort to boxed primitives here and there or has to maintain two equally sized (large) Java arrays, one for potential primitives and one for potential objects. Or implement more complex and slower "strategies" to maintain mixed-mode cases. > In SOMns, i.e., Newspeak, I did not implement the Truffle object model yet, because I got a very similar custom object model (still from my SOM Smalltalk), and in Newspeak, I actually need another version of it for not objects, but classes, because of the inner class semantics. > As far as I remember, classes in Newspeak are very light-weight objects of predictable shape: not sure if they need the flexibility of the OSM. (Many years ago, long before Graal/Truffle, I tried to implement Newspeak on the JVM with the then upcoming invokedynamic instruction on early-access JDK7 platforms but had to gave up to preserve my nerves.) Greetings Raffaello From java at stefan-marr.de Wed Mar 16 14:07:25 2016 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 16 Mar 2016 15:07:25 +0100 Subject: Object Storage Model: has anybody real-world experience? In-Reply-To: <56E95DDE.2090801@supsi.ch> References: <56E943D8.10405@supsi.ch> <56E95DDE.2090801@supsi.ch> Message-ID: Hi Raffaello: > On 16 Mar 2016, at 14:21, Raffaello Giulietti wrote: > > More generally, to implement large contiguous heterogeneous collections in dynamically typed languages the OSM does not seem to be of great help: for the elements, one either has to resort to boxed primitives here and there or has to maintain two equally sized (large) Java arrays, one for potential primitives and one for potential objects. Or implement more complex and slower ?strategies" to maintain mixed-mode cases. What you describe sounds very similar to the Storage Strategy work of the PyPy guys [1,2]. This optimization is not provided by the Truffle object model since it is orthogonal to objects. However, TruffleSOM, SOMns, JRuby+Truffle and other Truffle-based languages use it as well. So, it might be useful to push that as something reusable into the framework. Don?t think anyone looked into making that happening specifically though. In TruffleSOM, you can have a look at SArray [3] and the #at: primitive [4] to get a basic impression of how it works. I haven?t actually seen an implementation that would use two arrays. I think PyPy implements a strategy for mixed int+float lists but beside that, it seems to be rather uncommon that collections are mixed in a way that a specific strategy promises huge gains. >> In SOMns, i.e., Newspeak, I did not implement the Truffle object model yet, because I got a very similar custom object model (still from my SOM Smalltalk), and in Newspeak, I actually need another version of it for not objects, but classes, because of the inner class semantics. >> > > As far as I remember, classes in Newspeak are very light-weight objects of predictable shape: not sure if they need the flexibility of the OSM. (Many years ago, long before Graal/Truffle, I tried to implement Newspeak on the JVM with the then upcoming invokedynamic instruction on early-access JDK7 platforms but had to gave up to preserve my nerves.) The problem with classes in Newspeak is that you essentially need to decouple their identity and their structure, otherwise you won?t get good results with optimization. If you see many different class objects, which is typically the case with inner classes in Newspeak, you would normally abort optimizing/go to a megamorphic case. If you decouple the identity and the structure, you can still optimize nicely for the same structure. SOMns does just that and thereby Newspeak is among the fastest Truffle languages. Bye the way, are you working on a Truffle language? Best regards Stefan [1] http://tratt.net/laurie/research/pubs/html/bolz_diekmann_tratt__storage_strategies_for_collections_in_dynamically_typed_languages/ [2] http://soft-dev.org/pubs/pdf/pape_et_al__language_independent_storage_strategies.pdf [3] https://github.com/smarr/TruffleSOM/blob/master/src/som/vmobjects/SArray.java [4] https://github.com/smarr/TruffleSOM/blob/master/src/som/primitives/arrays/AtPrim.java From raffaello.giulietti at supsi.ch Wed Mar 16 18:16:50 2016 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Wed, 16 Mar 2016 19:16:50 +0100 Subject: Object Storage Model: has anybody real-world experience? In-Reply-To: References: <56E943D8.10405@supsi.ch> <56E95DDE.2090801@supsi.ch> Message-ID: <56E9A312.2020906@supsi.ch> On 2016-03-16 15:07, Stefan Marr wrote: > Hi Raffaello: > > >> On 16 Mar 2016, at 14:21, Raffaello Giulietti wrote: >> >> More generally, to implement large contiguous heterogeneous collections in dynamically typed languages the OSM does not seem to be of great help: for the elements, one either has to resort to boxed primitives here and there or has to maintain two equally sized (large) Java arrays, one for potential primitives and one for potential objects. Or implement more complex and slower ?strategies" to maintain mixed-mode cases. > > What you describe sounds very similar to the Storage Strategy work of the PyPy guys [1,2]. > This optimization is not provided by the Truffle object model since it is orthogonal to objects. > > However, TruffleSOM, SOMns, JRuby+Truffle and other Truffle-based languages use it as well. > So, it might be useful to push that as something reusable into the framework. Don?t think anyone looked into making that happening specifically though. > > In TruffleSOM, you can have a look at SArray [3] and the #at: primitive [4] to get a basic impression of how it works. > OK, thanks. >>> In SOMns, i.e., Newspeak, I did not implement the Truffle object model yet, because I got a very similar custom object model (still from my SOM Smalltalk), and in Newspeak, I actually need another version of it for not objects, but classes, because of the inner class semantics. >>> >> >> As far as I remember, classes in Newspeak are very light-weight objects of predictable shape: not sure if they need the flexibility of the OSM. (Many years ago, long before Graal/Truffle, I tried to implement Newspeak on the JVM with the then upcoming invokedynamic instruction on early-access JDK7 platforms but had to gave up to preserve my nerves.) > > The problem with classes in Newspeak is that you essentially need to decouple their identity and their structure, otherwise you won?t get good results with optimization. > If you see many different class objects, which is typically the case with inner classes in Newspeak, you would normally abort optimizing/go to a megamorphic case. > If you decouple the identity and the structure, you can still optimize nicely for the same structure. > SOMns does just that and thereby Newspeak is among the fastest Truffle languages. > I think I don't get your point: my remembrances are that NS classes are simple triples holding a reference to the superclass, a reference to the enclosing object and a reference to the metadata info (ivars, methods + other ancillary data), all "finals" in Java jargon. Is this what you mean by decoupling identity and structure? > Bye the way, are you working on a Truffle language? > Yes, I'm experimenting with Smalltalk in my spare time. However, the environment I'm trying to build is not the classical Smalltalk image model but something more akin to Gemstone, i.e., with a persistence engine built-in and a snapshot isolation model for transactional processing. Greetings Raffaello From java at stefan-marr.de Wed Mar 16 18:29:35 2016 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 16 Mar 2016 19:29:35 +0100 Subject: Object Storage Model: has anybody real-world experience? In-Reply-To: <56E9A312.2020906@supsi.ch> References: <56E943D8.10405@supsi.ch> <56E95DDE.2090801@supsi.ch> <56E9A312.2020906@supsi.ch> Message-ID: <8CCEB15E-82CC-42EF-B7C5-0C4F636E61F1@stefan-marr.de> Hi Raffaello: > On 16 Mar 2016, at 19:16, Raffaello Giulietti wrote: > > I think I don't get your point: my remembrances are that NS classes are simple triples holding a reference to the superclass, a reference to the enclosing object and a reference to the metadata info (ivars, methods + other ancillary data), all "finals" in Java jargon. Is this what you mean by decoupling identity and structure? That?s almost what I mean. In my implementation it is essentially a 2-tuple of enclosing object and then a combination of superclass and metadata (called ClassFactory in the implementation). This combination essentially corresponds to a materialization of the concrete class (assuming that your metadata is merely the mixin). I need the combination/materialization to correctly speculate on object structure and method dispatch. >> Bye the way, are you working on a Truffle language? > > Yes, I'm experimenting with Smalltalk in my spare time. However, the environment I?m trying to build is not the classical Smalltalk image model but something more akin to Gemstone, i.e., with a persistence engine built-in and a snapshot isolation model for transactional processing. Ah nice. Is that by chance something that?s online somewhere? Best regards Stefan -- Stefan Marr Johannes Kepler Universit?t Linz http://stefan-marr.de/research/ From raffaello.giulietti at supsi.ch Wed Mar 16 19:29:28 2016 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Wed, 16 Mar 2016 19:29:28 +0000 Subject: Object Storage Model: has anybody real-world experience? In-Reply-To: <8CCEB15E-82CC-42EF-B7C5-0C4F636E61F1@stefan-marr.de> References: <56E943D8.10405@supsi.ch> <56E95DDE.2090801@supsi.ch> <56E9A312.2020906@supsi.ch> <8CCEB15E-82CC-42EF-B7C5-0C4F636E61F1@stefan-marr.de> Message-ID: <56E9B418.4020006@supsi.ch> Hi Stefan On 2016-03-16 18:29, Stefan Marr wrote: > Hi Raffaello: > >> On 16 Mar 2016, at 19:16, Raffaello Giulietti wrote: >> >> I think I don't get your point: my remembrances are that NS classes are simple triples holding a reference to the superclass, a reference to the enclosing object and a reference to the metadata info (ivars, methods + other ancillary data), all "finals" in Java jargon. Is this what you mean by decoupling identity and structure? > > That?s almost what I mean. In my implementation it is essentially a 2-tuple of enclosing object and then a combination of superclass and metadata (called ClassFactory in the implementation). This combination essentially corresponds to a materialization of the concrete class (assuming that your metadata is merely the mixin). I need the combination/materialization to correctly speculate on object structure and method dispatch. > I have to think about your solution versus the more intuitive but perhaps more naive "class-as-a-triple" alternative. Since both the enclosing object and the superclass, and thus the method dictionary, are known only at runtime, I would have bet that a triple is more appropriate. But perhaps this is not the right audience to discuss Newspeak related topics. >>> Bye the way, are you working on a Truffle language? >> >> Yes, I'm experimenting with Smalltalk in my spare time. However, the environment I?m trying to build is not the classical Smalltalk image model but something more akin to Gemstone, i.e., with a persistence engine built-in and a snapshot isolation model for transactional processing. > > Ah nice. Is that by chance something that?s online somewhere? > As I mentioned, I'm doing this in my spare time to get something running. But then I hope to be able to get a commitment (and funds) for further development from my employer, where we heavily rely on Gemstone (with all its good and less so good idiosyncrasies). Until I get to that point (unfortunately, my work is progressing rather slowly), and since I'm not sure what the outcome from the future discussion with my employer will be, I prefer not to publish code for the time being. Greetings Raffaello From java at stefan-marr.de Wed Mar 16 21:57:06 2016 From: java at stefan-marr.de (Stefan Marr) Date: Wed, 16 Mar 2016 22:57:06 +0100 Subject: Object Storage Model: has anybody real-world experience? In-Reply-To: <56E9B418.4020006@supsi.ch> References: <56E943D8.10405@supsi.ch> <56E95DDE.2090801@supsi.ch> <56E9A312.2020906@supsi.ch> <8CCEB15E-82CC-42EF-B7C5-0C4F636E61F1@stefan-marr.de> <56E9B418.4020006@supsi.ch> Message-ID: Hi Raffaello: > On 16 Mar 2016, at 20:29, Raffaello Giulietti wrote: > > I have to think about your solution versus the more intuitive but > perhaps more naive "class-as-a-triple" alternative. > > Since both the enclosing object and the superclass, and thus the method > dictionary, are known only at runtime, I would have bet that a triple is > more appropriate. Well, this is something that pops up here and there in optimistic optimizations. So, I?d argue it is actually an interesting thing to discuss here. The problem with Newspeak is indeed that classes are pure run-time constructs. To optimize them, you need to find some reoccurring stability. In the case of Newspeak, I speculate that classes are actually used like in Smalltalk, or Java for that matter. So, the combination of superclass and mixing gives me a concrete set of methods, and a set of object fields. And, it turns out at run time, most instantiations of inner classes belong to a group that has the same super class and mixin. Based on that in SOMns, an object knows not only which class it is of, but also which group it belongs to. So, if I see that speculating on a class does not work, because a specific point in a program sees to many classes, I fall back to speculate on the class group, which is just as good in terms of performance. It allows me to cache lookups, do inline, etc. Doing that based on the class identity, which is common in other languages like Smalltalk would just not work. Hope that makes some sense. So, the general lesson learned here for other optimization issues is: try to find a stable representation of common aspects that can be easily checked for at run time, and then try to speculate on that. Best regards Stefan From jaroslav.tulach at oracle.com Thu Mar 17 09:41:51 2016 From: jaroslav.tulach at oracle.com (Jaroslav Tulach) Date: Thu, 17 Mar 2016 10:41:51 +0100 Subject: Explaining truffle-api-changes #185 & #186 In-Reply-To: <106657077.4.1458157490864@1cf9741c4b7e> References: <106657077.4.1458157490864@1cf9741c4b7e> Message-ID: <1517703.PZHSmuZLa5@pracovni> Hi there. The daily report of changes noticed: Added Annotations ----------------- com.oracle.truffle.api.QuitException: anno 0 java.lang.Deprecated() that is correct, but probably we can go even further. The exception has been introduced after release of Truffle @ 0.11 and we can remove it before Truffle @ 0.12 is out. Please get ready for that. Added Methods ------------- com.oracle.truffle.api.debug.SuspendedEvent: method public final void com.oracle.truffle.api.debug.SuspendedEvent.kill() Correct. Plus I'd like to see removal of com.oracle.truffle.api.KillException (also introduced after 0.11 was released) before we release Truffle @ 0.12. Martin Entlicher suggested to make that exception package private subclass of ThreadDeath https://github.com/graalvm/truffle/pull/98#issuecomment-196412876 and I like that as it uses something that is Java standard rather than introducing Truffle's own concept. -jt PS: I'd like to release Truffle @ 0.12 during next week, but I am struggling with https://github.com/graalvm/truffle/issues/81 and it has to be resolved before we release. From raffaello.giulietti at supsi.ch Sun Mar 20 14:51:38 2016 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Sun, 20 Mar 2016 14:51:38 +0000 Subject: mx dependency on Python 2.7 Message-ID: <56EEB8F9.5010301@supsi.ch> Hello, I've a rather superficial understanding of both mx and Python. What I've got, however, is that mx depends on Python 2.7 and might not work on Python 3.x. The upcoming 16.04 LTS release of Ubuntu, planned for 2016-04-21, will transition to Python 3. I'm not sure if Python 2.7 can then co-exist transparently with Python 3. Stated otherwise, is it simply a matter of configuring the environment vars to keep mx running correctly on a system with both Python 2 and Python 3 installed? More forwardly thinking, are there plans to move mx to Python 3? Greetings Raffaello From gilles.m.duboscq at oracle.com Sun Mar 20 18:48:02 2016 From: gilles.m.duboscq at oracle.com (Gilles Duboscq) Date: Sun, 20 Mar 2016 19:48:02 +0100 Subject: mx dependency on Python 2.7 In-Reply-To: <56EEB8F9.5010301@supsi.ch> References: <56EEB8F9.5010301@supsi.ch> Message-ID: <56EEF062.7060708@oracle.com> Hi Raffaello, Python 2.x and 3.x can co-exist without any problem, there shouldn't be anything special to do besides making sure python 2.7 is installed. No environment variables should be necessary. We use `python2.7` as mx's python interpreter and fallback to `python2` if that doesn't exist. If `python2` also doesn't exist only then do we use the ambiguous `python`. When a distribution "transitions" to python 3.x, it just means that the `python` symlink goes to Python 3.x instead of 2.x. We have already used mx in distributions where Python 3 is the default without any problem. I don't know of any plan to port mx to Python 3. Gilles On 20/03/16 15:51, Raffaello Giulietti wrote: > Hello, > > I've a rather superficial understanding of both mx and Python. What I've > got, however, is that mx depends on Python 2.7 and might not work on > Python 3.x. > > The upcoming 16.04 LTS release of Ubuntu, planned for 2016-04-21, will > transition to Python 3. > > I'm not sure if Python 2.7 can then co-exist transparently with Python > 3. Stated otherwise, is it simply a matter of configuring the > environment vars to keep mx running correctly on a system with both > Python 2 and Python 3 installed? > > More forwardly thinking, are there plans to move mx to Python 3? > > Greetings > Raffaello > From raffaello.giulietti at supsi.ch Sun Mar 20 18:51:43 2016 From: raffaello.giulietti at supsi.ch (Raffaello Giulietti) Date: Sun, 20 Mar 2016 18:51:43 +0000 Subject: mx dependency on Python 2.7 In-Reply-To: <56EEF062.7060708@oracle.com> References: <56EEB8F9.5010301@supsi.ch> <56EEF062.7060708@oracle.com> Message-ID: <56EEF13F.5000000@supsi.ch> Hi Gilles, On 2016-03-20 18:48, Gilles Duboscq wrote: > Hi Raffaello, > > Python 2.x and 3.x can co-exist without any problem, there shouldn't be > anything special to do besides making sure python 2.7 is installed. > No environment variables should be necessary. We use `python2.7` as mx's > python interpreter and fallback to `python2` if that doesn't exist. If > `python2` also doesn't exist only then do we use the ambiguous `python`. > > When a distribution "transitions" to python 3.x, it just means that the > `python` symlink goes to Python 3.x instead of 2.x. > > We have already used mx in distributions where Python 3 is the default > without any problem. > > I don't know of any plan to port mx to Python 3. > > Gilles > Crystal clear Thanks Raffaello From jaroslav.tulach at oracle.com Wed Mar 23 08:03:13 2016 From: jaroslav.tulach at oracle.com (Jaroslav Tulach) Date: Wed, 23 Mar 2016 09:03:13 +0100 Subject: New prepareVM(Builder) method in TruffleTCK was: truffle-api-changes #202 In-Reply-To: <63833740.2.1458664342777@1cf9741c4b7e> References: <63833740.2.1458664342777@1cf9741c4b7e> Message-ID: <1682998.rt2zxJibSg@pracovni> Hi. As the report indicates: Missing Methods --------------- com.oracle.truffle.tck.TruffleTCK: method protected abstract com.oracle.truffle.api.vm.PolyglotEngine com.oracle.truffle.tck.TruffleTCK.prepareVM() Added Methods ------------- com.oracle.truffle.tck.TruffleTCK: method protected com.oracle.truffle.api.vm.PolyglotEngine com.oracle.truffle.tck.TruffleTCK.prepareVM() com.oracle.truffle.tck.TruffleTCK: method protected com.oracle.truffle.api.vm.PolyglotEngine com.oracle.truffle.tck.TruffleTCK.prepareVM(com.oracle.truffle.api.vm.PolyglotEngine$Builder) com.oracle.truffle.tck.TruffleTCK: method public static void com.oracle.truffle.tck.TruffleTCK.disposePreviousVM() anno 0 org.junit.AfterClass() there is a new method in the TCK, please consider implementing it - e.g. use the provided builder instead of creating your own. The change is result of https://github.com/graalvm/truffle/pull/146 and it opens up new possibilities in the test compatibility kit testing. For example I have long open request to test importSymbol method. Or we'd like to test debugging capabilities of languages [like we do for SL] (https://github.com/graalvm/truffle/blob/a4d9f095b6e2d2eb370aff6d848055adeac627a5/truffle/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/SLDebugTest.java) With the new method signature these tasks should be easier than ever. -jt From bahram.yarahmadi at gmail.com Thu Mar 24 10:29:03 2016 From: bahram.yarahmadi at gmail.com (Bahram Yarahmadi) Date: Thu, 24 Mar 2016 14:59:03 +0430 Subject: Generating Cuda Codes an finding specific bytecodes Message-ID: Dear all, These days I'm working and learning graal and as you know,I want to run Java 8 Stream APIs with Lambdas on GPUs I followed tutorial on the website but It was useless I have a few questions should I change the graal source repository and build it again with mx build command.For example in which class should I change my modification in order to change the specific bytecode (for example invocDynamic which is for lambdas) to graal IR ? How can I read Bytecodes and convert them to Graal IR? After that I want to apply come Optimizations would you mind giving me some hints ? (for example in which class should I focus and things like that ) Thanks in advance Regards From christian.thalinger at oracle.com Thu Mar 24 23:50:12 2016 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Thu, 24 Mar 2016 13:50:12 -1000 Subject: Generating Cuda Codes an finding specific bytecodes In-Reply-To: References: Message-ID: Last time we pointed you to the Sumatra project and the Graal changeset which contained the PTX and HSAIL backends before they got removed. I highly suggest to use that version to go forward. Also, if you are seriously interested in working on Sumatra I would use the sumatra-dev mailing list to ask questions (bcc?ing graal-dev). A good first step and excellent learning opportunity would be to bring the Sumatra changes to the current Graal version. Here is a list of people who have been involved in Project Sumatra in the past: http://openjdk.java.net/census#sumatra > On Mar 24, 2016, at 12:29 AM, Bahram Yarahmadi wrote: > > Dear all, > These days I'm working and learning graal and as you know,I want to run > Java 8 Stream APIs with Lambdas on GPUs > I followed tutorial on the website but It was useless > I have a few questions > should I change the graal source repository and build it again with mx > build command.For example in which class should I change my modification in > order to change the specific bytecode (for example invocDynamic which is > for lambdas) to graal IR ? > How can I read Bytecodes and convert them to Graal IR? > After that I want to apply come Optimizations > would you mind giving me some hints ? (for example in which class should I > focus and things like that ) > > Thanks in advance > > Regards From christian.thalinger at oracle.com Fri Mar 25 06:19:21 2016 From: christian.thalinger at oracle.com (Christian Thalinger) Date: Thu, 24 Mar 2016 20:19:21 -1000 Subject: RFR: PR165: Improve AddNode/MulNode input swapping. Message-ID: https://github.com/graalvm/graal-core/pull/165 From mqunaibi at uci.edu Tue Mar 29 01:24:55 2016 From: mqunaibi at uci.edu (Mohaned Y Qunaibit) Date: Mon, 28 Mar 2016 18:24:55 -0700 Subject: BailoutException in PEGraphDecoder.tooDeepInlining always print Message-ID: Hi, I noticed that BailoutException in PEGraphDecoder.tooDeepInlining always throws when inlining depth reaches limit to the user's sysout. Shouldn't this be controlled by *TraceTruffleCompilation*? Best, Mohaned Qunaibit From jaroslav.tulach at oracle.com Tue Mar 29 10:49:25 2016 From: jaroslav.tulach at oracle.com (Jaroslav Tulach) Date: Tue, 29 Mar 2016 12:49:25 +0200 Subject: Truffle-api-changes #213 In-Reply-To: <93948810.1.1459241977034@1cf9741c4b7e> References: <1538554739.0.1459107883929@1cf9741c4b7e> <93948810.1.1459241977034@1cf9741c4b7e> Message-ID: <1641798.OcsJCGvUXK@pracovni> FYI: Compatible additions: Added Methods ------------- com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder: method public final com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.lineEndsIn(com.oracle.truffle.api.instrumentation.SourceSectionFilter$IndexRange[]) com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder: method public final com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.lineStartsIn(com.oracle.truffle.api.instrumentation.SourceSectionFilter$IndexRange[]) From jaroslav.tulach at oracle.com Tue Mar 29 10:53:24 2016 From: jaroslav.tulach at oracle.com (Jaroslav Tulach) Date: Tue, 29 Mar 2016 12:53:24 +0200 Subject: Truffle-api-changes with respect to instrumentation API In-Reply-To: <93948810.1.1459241977034@1cf9741c4b7e> References: <1538554739.0.1459107883929@1cf9741c4b7e> <93948810.1.1459241977034@1cf9741c4b7e> Message-ID: <1669905.2utI1oFLxy@pracovni> String tags are replaced by Class based ones and each language has a way to declare the set of tags it supports/provides. More info at https://github.com/graalvm/truffle/pull/123 -jt Missing Methods --------------- com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder: method public final com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs(java.lang.String[]) com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder: method public final com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIsNot(java.lang.String[]) Added Classes ------------- com.oracle.truffle.api.instrumentation.ProvidedTags com.oracle.truffle.api.instrumentation.StandardTags com.oracle.truffle.api.instrumentation.StandardTags$CallTag com.oracle.truffle.api.instrumentation.StandardTags$RootTag com.oracle.truffle.api.instrumentation.StandardTags$StatementTag Added Methods ------------- com.oracle.truffle.api.instrumentation.ExecutionEventNode: method protected boolean com.oracle.truffle.api.nodes.Node.isTaggedWith(java.lang.Class) com.oracle.truffle.api.instrumentation.Instrumenter: method public abstract java.util.Set com.oracle.truffle.api.instrumentation.Instrumenter.queryTags(com.oracle.truffle.api.nodes.Node) com.oracle.truffle.api.instrumentation.ProbeNode: method protected boolean com.oracle.truffle.api.nodes.Node.isTaggedWith(java.lang.Class) com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder: method public final com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs(java.lang.Class[]) com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder: method public final com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIsNot(java.lang.Class[]) From christian.humer at gmail.com Tue Mar 29 15:21:55 2016 From: christian.humer at gmail.com (Christian Humer) Date: Tue, 29 Mar 2016 15:21:55 +0000 Subject: BailoutException in PEGraphDecoder.tooDeepInlining always print In-Reply-To: <> Message-ID: Hi Mohaned, You should hide the sysout behind a @TruffleBoundary otherwise the partial evaluator will get stuck in a recursion somewhere in the implementation of PrintStream. You cannot use recursion on the fast-path (=everything that is partially evaluated). As a rule of thumb you should not call into Java code that you don't control/know its implementation on the fast-path. Hope this helps, Christian On 29.03.2016 03:24:55, "Mohaned Y Qunaibit" wrote: >Hi, > >I noticed that BailoutException in PEGraphDecoder.tooDeepInlining >always >throws when inlining depth reaches limit to the user's sysout. >Shouldn't >this be controlled by *TraceTruffleCompilation*? > >Best, >Mohaned Qunaibit