Re: [External] : Re: Do we even need IO/VO interfaces? (was: JEP update: Value Objects)

2021-12-20 Thread forax
> From: "Brian Goetz" > To: "Remi Forax" > Cc: "daniel smith" , "Dan Heidinga" > , "John Rose" , > "valhalla-spec-experts" > Sent: Mardi 21 Décembre 2021 01:07:15 > Subject: Re: [External] : Re: Do we even need IO/

Re: Updated State of Valhalla documents

2021-12-23 Thread forax
> From: "John Rose" > To: "Remi Forax" > Cc: "Brian Goetz" , "valhalla-spec-experts" > > Sent: Thursday, December 23, 2021 7:51:14 PM > Subject: Re: Updated State of Valhalla documents >> On Dec 23, 2021, at 10:35 AM, Remi Forax

Re: [External] : Re: Updated State of Valhalla documents

2021-12-23 Thread forax
> From: "John Rose" > To: "Remi Forax" > Cc: "Brian Goetz" , "valhalla-spec-experts" > > Sent: Thursday, December 23, 2021 8:43:22 PM > Subject: Re: [External] : Re: Updated State of Valhalla documents > On 23 Dec 2021, at 11

Re: Updated State of Valhalla documents

2022-01-05 Thread forax
- Original Message - > From: "daniel smith" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Thursday, January 6, 2022 12:37:09 AM > Subject: Re: Updated State of Valhalla documents >> On Dec 23, 2021, at 12:58 PM, fo...@un

Re: Updated State of Valhalla documents

2022-01-06 Thread forax
- Original Message - > From: "John Rose" > To: "daniel smith" > Cc: "Remi Forax" , "valhalla-spec-experts" > > Sent: Thursday, January 6, 2022 4:53:28 AM > Subject: Re: Updated State of Valhalla documents >> On Jan 5, 202

Re: Why do we need .ref class for primtive class ?

2022-01-06 Thread forax
oxing, but using checkcast to convert from a QComplex; to a LComplex; One reason may be that this is not a subtyping relationship but a boxing relationship so it may not work when well we will have fully reified generics. Rémi > From: "Brian Goetz" > To: "Remi Forax

Re: L-type, Q-type and class mirrors

2022-01-12 Thread forax
- Original Message - > From: "Brian Goetz" > To: "Remi Forax" , "valhalla-spec-experts" > > Sent: Wednesday, January 12, 2022 1:27:07 PM > Subject: Re: L-type, Q-type and class mirrors >> Let's take a detour, and try to answer t

Re: VM model and aconst_init

2022-01-12 Thread forax
> From: "Brian Goetz" > To: "Remi Forax" , "valhalla-spec-experts" > > Sent: Wednesday, January 12, 2022 1:45:34 PM > Subject: Re: VM model and aconst_init > Both value and primitive classes use the aconst_init / withfield > initializatio

Re: [External] : Re: VM model and aconst_init

2022-01-12 Thread forax
> From: "Brian Goetz" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Wednesday, January 12, 2022 2:30:00 PM > Subject: Re: [External] : Re: VM model and aconst_init > The operand of C_Class is a weird beast. It can be an internal name &

Re: VM model and aconst_init

2022-01-25 Thread forax
> From: "John Rose" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Wednesday, January 19, 2022 9:40:15 AM > Subject: Re: VM model and aconst_init > I think (based on our most recent conversations) > that aconst_init can return a Q-

Re: VM model and aconst_init

2022-01-25 Thread forax
> From: "Brian Goetz" > To: "Dan Heidinga" > Cc: "Remi Forax" , "John Rose" , > "valhalla-spec-experts" > Sent: Tuesday, January 25, 2022 3:57:17 PM > Subject: Re: VM model and aconst_init > The motivation for this co

Re: The interfaces IdentityObject and ValueObject must die !

2022-01-26 Thread forax
- Original Message - > From: "daniel smith" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Wednesday, January 26, 2022 6:20:07 AM > Subject: Re: The interfaces IdentityObject and ValueObject must die ! >> On Jan 25, 202

Re: The interfaces IdentityObject and ValueObject must die !

2022-01-26 Thread forax
> From: "daniel smith" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Wednesday, January 26, 2022 4:42:30 PM > Subject: Re: The interfaces IdentityObject and ValueObject must die ! >> On Jan 26, 2022, at 2:18 AM, [ mailto:fo...@

Re: The interfaces IdentityObject and ValueObject must die !

2022-01-26 Thread forax
> From: "John Rose" > To: "daniel smith" > Cc: "Remi Forax" , "valhalla-spec-experts" > > Sent: Thursday, January 27, 2022 2:18:03 AM > Subject: Re: The interfaces IdentityObject and ValueObject must die ! > On 26 Jan 2022, at

Re: SoV-3: constructor questions

2022-01-27 Thread forax
- Original Message - > From: "Dan Heidinga" > To: "Remi Forax" > Cc: "daniel smith" , "valhalla-spec-experts" > > Sent: Thursday, January 27, 2022 4:41:14 PM > Subject: Re: SoV-3: constructor questions >> >> The rea

Re: [External] : Re: VM model and aconst_init

2022-01-31 Thread forax
> From: "John Rose" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Thursday, January 27, 2022 10:00:20 PM > Subject: Re: [External] : Re: VM model and aconst_init > On 25 Jan 2022, at 2:50, [ mailto:fo...@univ-mlv.fr | fo...@univ-mlv.

Re: VM model and aconst_init

2022-01-31 Thread forax
> From: "Brian Goetz" > To: "daniel smith" , "John Rose" > > Cc: "Remi Forax" , "valhalla-spec-experts" > > Sent: Saturday, January 29, 2022 6:40:13 PM > Subject: Re: VM model and aconst_init > I think we're kind of

Re: Objects vs. values, the continuation

2022-04-25 Thread forax
> From: "Kevin Bourrillion" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Monday, April 25, 2022 4:17:19 AM > Subject: Re: Objects vs. values, the continuation > On Sun, Apr 24, 2022 at 6:23 PM Remi Forax < [ mailto:fo...@uni

Re: [External] : Re: Objects vs. values, the continuation

2022-04-25 Thread forax
- Original Message - > From: "Brian Goetz" > To: "Remi Forax" > Cc: "Kevin Bourrillion" , "valhalla-spec-experts" > > Sent: Monday, April 25, 2022 1:57:28 AM > Subject: Re: [External] : Re: Objects vs. values, the continuation

Re: [External] Foo / Foo.ref is a backward default; should be Foo.val / Foo

2022-04-25 Thread forax
> From: "Brian Goetz" > To: "Remi Forax" > Cc: "Dan Heidinga" , "Kevin Bourrillion" > , "valhalla-spec-experts" > > Sent: Monday, April 25, 2022 9:54:26 PM > Subject: Re: [External] Foo / Foo.ref is a backward default; sho

Re: B3 ref model

2022-04-26 Thread forax
- Original Message - > From: "daniel smith" > To: "Remi Forax" > Cc: "valhalla-spec-experts" > Sent: Tuesday, April 26, 2022 2:15:17 AM > Subject: Re: B3 ref model >> On Apr 25, 2022, at 3:08 PM, Remi Forax wrote: >> >

Re: B3 ref model

2022-04-26 Thread forax
- Original Message - > From: "Brian Goetz" > To: "Remi Forax" > Cc: "daniel smith" , "valhalla-spec-experts" > > Sent: Tuesday, April 26, 2022 4:12:43 PM > Subject: Re: B3 ref model >> so if we have >> >> pr

Re: [External] : Re: User model stacking

2022-04-28 Thread forax
> From: "Brian Goetz" > To: "Remi Forax" > Cc: "Dan Heidinga" , "valhalla-spec-experts" > > Sent: Thursday, April 28, 2022 3:43:59 PM > Subject: Re: [External] : Re: User model stacking >> On Apr 28, 2022, at 9:09 AM, Remi For

Re: [External] : Re: User model stacking

2022-04-28 Thread forax
> From: "Kevin Bourrillion" > To: "Remi Forax" > Cc: "Brian Goetz" , "Dan Heidinga" > , "valhalla-spec-experts" > > Sent: Thursday, April 28, 2022 3:51:07 PM > Subject: Re: [External] : Re: User model stacking > On T

Re: User model: terminology

2022-05-06 Thread forax
> From: "Kevin Bourrillion" > To: "Remi Forax" > Cc: "Brian Goetz" , "valhalla-spec-experts" > > Sent: Wednesday, May 4, 2022 11:42:21 PM > Subject: Re: User model: terminology > On Wed, May 4, 2022 at 8:44 AM Remi Forax < [ ma

Re: Anonymous value classes

2022-06-04 Thread forax
> From: "Maurizio Cimadamore" > To: "Brian Goetz" , "Remi Forax" > Cc: "daniel smith" , "valhalla-spec-experts" > > Sent: Friday, June 3, 2022 8:18:44 PM > Subject: Re: Anonymous value classes > And `var` ? > (but

Re: Anonymous value classes

2022-06-07 Thread forax
- Original Message - > From: "daniel smith" > To: "Remi Forax" > Cc: "Maurizio Cimadamore" , "Brian Goetz" > , > "valhalla-spec-experts" > Sent: Monday, June 6, 2022 7:56:40 PM > Subject: Re: Anonymous value classe

Re: User model stacking: current status

2022-06-14 Thread forax
> From: "Brian Goetz" > To: "Remi Forax" , "valhalla-spec-experts" > > Cc: "daniel smith" , "valhalla-spec-experts" > > Sent: Tuesday, June 14, 2022 3:16:41 PM > Subject: Re: User model stacking: current status [...]

Re: Initial feedback on Minimal Value Types 0.2 for discussion

2017-03-28 Thread Remi Forax
Question, why a value type can not loss identity inside a method ? Is it true for local variable access ? for field access ? for static access ? V value = ... Object o = v; Object o2 = v; o == o2 ?? field.o = v; o == field.o ?? // what about the concurrent access Class.o = v; o == Class

Value Type on stack in the interpreter

2017-03-31 Thread Remi Forax
I've some trouble to see how value types are laid on stack (conceptually, not necessary the real implementation). First, i may be wrong but it seems that vload do not reference the corresponding Q-type, so i wonder how the verifier knows that it can then access to component of the value type. T

Re: Draft JVMS changes for Nestmates

2017-04-18 Thread Remi Forax
- Mail original - > De: "Dan Smith" > À: valhalla-...@openjdk.java.net > Envoyé: Mardi 18 Avril 2017 20:44:11 > Objet: Fwd: Draft JVMS changes for Nestmates > For those not subscribed to (or not paying attention to) > valhalla-spec-experts, > I just posted a link to an updated draft of J

Re: Valhalla Minimal Value Types review invitation

2017-05-10 Thread Remi Forax
Sorry, I was thinking to be able to join the discussion during the connection in between two flights but the first one was delayed. Reading the new version of shady in the plane, i still do not see why a Qtype is needed, it seen that the VM can infer if a Qtype or a Ltype should be used. Rémi

Re: What's in a CONSTANT_Class?

2017-06-10 Thread Remi Forax
You're not alone :) I want the result of an async procedure call to be a CompletableFuture too. Rémi On June 9, 2017 10:53:14 PM GMT+02:00, John Rose wrote: >On Jun 9, 2017, at 1:45 PM, John Rose wrote: >> >> Allowing in return position to assume will be attractive >with new generics. > >

UFoo; ?? Was: notes from Valhalla meeting 5/24/17

2017-06-10 Thread Remi Forax
The need for a UFoo; is not clear to me. So correct me if i'm wrong, u-bytecodes are bytecodes for representing something similar to T and Foo in Java but for the VM with the supplementary constraint that T can be either a primitive, a value type or class. I do not see how does UFoo; fit in

Re: What's in a CONSTANT_Class?

2017-06-14 Thread Remi Forax
Hi Karen, With my ASM Hat, both CONSTANT_Class_info “;Q” and CONSTANT_ValueType_info that references an UTF8 are Ok for me. Weirdly, having a CONSTANT_Value_info that reference a CONSTANT_Class_info is little harder to implement because the implementation of ASM is sensitive to the number of le

Meeting today ?

2017-06-21 Thread Remi Forax
Hi all, does somebody can send me the correct URL for the meeting today ? cheers, Rémi

Re: notes from Valhalla meeting 5/24/17

2017-06-21 Thread Remi Forax
Nice work John, but i do not like with this proposal as is, i will explain why and how to fix it: - condy is linked to a static final field but unlike invokedynamic which is a link from an invokedynamic instruction to a CONSTANT_InvokeDynamic_info, there is no link from the static final field

Re: minutes Valhalla EG June 07, 2017

2017-06-21 Thread Remi Forax
John, Do we agree that this API can also replace the constant pool patching done by unsafe.defineAnonymousClass, i.e. that the Object can be any live Object? Rémi > De: "John Rose" > À: "Daniel Heidinga" > Cc: valhalla-spec-experts@openjdk.java.net > Envoyé: Mercredi 21 Juin 2017 17:51:11

Integration of ASM 7 into the MVT

2017-06-24 Thread Remi Forax
Hi all, re-reading the spec, http://cr.openjdk.java.net/~dlsmith/values.html i've remarked that it seems that the spec is a forked from the JVMS 8 and not JVMS 9. I'm planning to create an alpha release of ASM 7 by forking ASM 6 that does already implement the JVMS 9 (from the Java Platform Mo

Re: Valhalla EG minutes 6/21/17

2017-07-06 Thread Remi Forax
- Mail original - > De: "Paul Sandoz" > À: "John Rose" > Cc: valhalla-spec-experts@openjdk.java.net > Envoyé: Jeudi 6 Juillet 2017 22:02:39 > Objet: Re: Valhalla EG minutes 6/21/17 > In terms of what we have today we could easily do: > > // lookup must have private access to the look

Re: class, type, instance, object, value

2017-07-12 Thread Remi Forax
Usually the difference between a class and a type is more runtime vs compile time. A type exist at compile time, a class exist at runtime. A type at compile time which is propagated as a class at runtime is a reified type, etc... Rémi - Mail original - > De: "John Rose" > À: "Bjorn B V

Re: Valhalla EG minutes 6/21/17

2017-07-19 Thread Remi Forax
> De: "Daniel Heidinga" > À: "daniel smith" > Cc: "valhalla-spec-experts" > Envoyé: Mercredi 19 Juillet 2017 16:31:18 > Objet: Re: Valhalla EG minutes 6/21/17 > There are a couple of different terms that have been used to describe early > access features - incubator (jep 11), experiment, or opt

MVT spec and getfield

2017-08-28 Thread Remi Forax
I've found the sentence in section (6.5 getfield) "The value, which must be of the referenced type, is popped from the operand stack." ambiguous. While is understand the sentence, it's easy to read "the referenced type" as a type reference. What about: "The value, which must be of the refe

Re: ConstantDynamic JVMS comments

2017-09-01 Thread Remi Forax
Hi John, Thinking a little bit about that, 1/ conceptually a BootstrapCallInfo and a ConstantGroup are every similar, it's a bunch of constants, the BootstrapCallInfo as just a special meaning for some of them. 2/ at runtime, it's like an array or a java.util.List (again conceptually) of sta

vastore and vaload

2017-09-07 Thread Remi Forax
I've just discovered that while the spec specified that vaload and vastore takes a constant class as parameter, the implementation use vaload and vastore with no parameter (like aaload, aastore). Let see the tradeoffs: 1/ vaload/vastore has the same bytecode shape as the other *aload/*astore,

Re: Valhalla EG minutes Aug 30

2017-09-13 Thread Remi Forax
> AI: What does reflection get_enclosing_class do if for example the enclosing > class has been deleted? NoClassDefFoundError And if you do the same with an annotation, getAnnotations() skip the annotation. (Obviously isAnnotationPresent() and getAnnotation() does not work because they takes the

Re: ConstantDynamic JVMS comments

2017-09-27 Thread Remi Forax
ping ! Rémi > De: "Remi Forax" > À: "John Rose" > Cc: "valhalla-spec-experts" > Envoyé: Samedi 2 Septembre 2017 00:39:42 > Objet: Re: ConstantDynamic JVMS comments > Hi John, > Thinking a little bit about that, > 1/ conceptually a B

Re: nestmates spec open issues

2017-10-25 Thread Remi Forax
> De: "Karen Kinnear" > À: "valhalla-spec-experts" > Envoyé: Mercredi 25 Octobre 2017 16:45:51 > Objet: nestmates spec open issues > ... > 2. Core reflection APIs [ https://bugs.openjdk.java.net/browse/JDK-8188075 | > https://bugs.openjdk.java.net/browse/JDK-8188075 ] > John Rose proposed: > a)

Re: nestmates spec open issues

2017-10-25 Thread Remi Forax
getClasses() throws an exception but getAnnotations() skips unavailable annotations. that said, i'm not against throwing in this case. Rémi - Mail original - > De: "David Holmes" > À: "Valhalla Expert Group Observers" > , "John Rose" > , > "Brian Goetz" > Cc: "valhalla-spec-experts"

Fix Parameter Runtime*ParameterAnnotations spec

2017-10-31 Thread Remi Forax
[I've trouble to find what is the right list for the JVMS spec change describe below, so i apologize in advance for the spam] Hi all, the spec of the Runtime*ParameterAnnotations attribute [1], allow the number of parameter annotations to be different from the number of parameter from the metho

Re: [Nestmates] Draft core reflection API

2017-11-08 Thread Remi Forax
Apart for the corrections already mentioned, this is perfect. Rémi - Mail original - > De: "David Holmes" > À: "valhalla-spec-experts" > Envoyé: Mardi 7 Novembre 2017 08:26:47 > Objet: [Nestmates] Draft core reflection API > For comment: > > http://cr.openjdk.java.net/~dholmes/8188075

Re: abandon all U-types, welcome to L-world (or, what I learned in Burlington)

2017-11-19 Thread Remi Forax
To summarize for myself, we already know that we only need only one U, java.lang.__Value, let try to make it java.lang.Object (with no boxing). The claim is that Object is used more as the root of any types like in collections than as the root of all references like in System.out.println(). Ok,

Re: Design notes for next values iteration

2017-11-22 Thread Remi Forax
Interesting ! here is my current view of the problem. Lets say we are in the R/Q/U world, we want U interface to abstract over a reference type or a value type, we want UObject because object is basically an interface, we also want U object like UOptional to be able to painlessly move a referen

More on seeing the L world as a U world

2017-11-22 Thread Remi Forax
that the model is really complex, which means that it will impose a real burden when we will want to maintain or tweak it again in the future. The model i propose is far simpler. Rémi - Mail original - > De: "Remi Forax" > À: "daniel smith" > Cc: "val

Re: Design notes for next values iteration

2017-11-22 Thread Remi Forax
e way in my opinion is if the R Optional and Q Optional occupy the same lattice, i.e. are a L Optional. This is what i have wanted to say with my first paragraph below. Rémi - Mail original - > De: "Remi Forax" > À: "daniel smith" > Cc: "valhal

Re: abandon all U-types, welcome to L-world (or, what I learned in Burlington)

2017-11-22 Thread Remi Forax
> De: "John Rose" > À: "Brian Goetz" > Cc: "valhalla-spec-experts" > Envoyé: Mercredi 22 Novembre 2017 19:48:18 > Objet: Re: abandon all U-types, welcome to L-world (or, what I learned in > Burlington) > On Nov 22, 2017, at 5:48 AM, Brian Goetz < [ mailto:brian.go...@oracle.com | > brian.go...@

Doubling down on the erasure vs constant pool specialization

2017-12-06 Thread Remi Forax
Hi John, hi all, i've read the doc you send us during our last meeting on the classfile specialization, while it's powerful i do not think we need to do constant pool specialization at least to implements generics over primitives and value types. One of the results of the MVT prototype is that w

Re: Doubling down on the erasure vs constant pool specialization

2017-12-15 Thread Remi Forax
types and generics specialization are parts of the same mechanism. Rémi - Mail original - > De: "Remi Forax" > À: "valhalla-spec-experts" > Envoyé: Mercredi 6 Décembre 2017 15:47:41 > Objet: Doubling down on the erasure vs constant pool specialization

Re: nestmates JVMTI spec proposal changes

2017-12-20 Thread Remi Forax
Given that we will have a NestMate phase 2, i agree with Dan, we can revisit that point later. Rémi > De: "Daniel Heidinga" > À: "Karen Kinnear" > Cc: "valhalla-spec-experts" > Envoyé: Mercredi 20 Décembre 2017 16:58:03 > Objet: Re: nestmates JVMTI spec proposal changes > We're on board wi

Re: A "RecursiveConstants" attribute

2018-02-17 Thread Remi Forax
> Most classes should naturally use backward references exclusively, since > entries tend to be generated bottom-up. > (In theory. If there are counter examples produced by any mainstream bytecode > generators, that would be good to know.) Currently, javac and ecj tends to generate their constan

Re: A "RecursiveConstants" attribute

2018-02-17 Thread Remi Forax
I like this approach, this is fine for me. Rémi - Mail original - > De: "daniel smith" > À: "valhalla-spec-experts" > Envoyé: Samedi 17 Février 2018 00:32:17 > Objet: Re: A "RecursiveConstants" attribute >> On Jan 31, 2018, at 2:50 PM, Brian Goetz wrote: >> >> OK, so the goal is clea

Re: CONSTANT_Dynamic bootstrap signature restriction

2018-03-07 Thread Remi Forax
Daniel (S), Brian, i think your view on this subject is biased by the fact that you built that library. While the name and the type of a condy are not strictly necessary because if you have one bsm by constant, you know the type, you still need the lookup argument, apart if you are building a l

Re: value type hygiene

2018-05-07 Thread Remi Forax
> De: "John Rose" > À: "valhalla-spec-experts" > Envoyé: Lundi 7 Mai 2018 22:55:22 > Objet: Re: value type hygiene > On May 6, 2018, at 2:17 AM, John Rose < [ mailto:john.r.r...@oracle.com | > john.r.r...@oracle.com ] > wrote: >> Like many of us, I have been thinking about the problems of keepi

Re: value type hygiene

2018-05-08 Thread Remi Forax
- Mail original - > De: "John Rose" > À: "Paul Sandoz" > Cc: "valhalla-spec-experts" > Envoyé: Mardi 8 Mai 2018 06:25:53 > Objet: Re: value type hygiene > On May 7, 2018, at 6:06 PM, Paul Sandoz wrote: >> >> Thanks for sharing this! >> >> I like the null containment approach. It re

Re: value type hygiene

2018-05-10 Thread Remi Forax
- Mail original - > De: "daniel smith" > À: "John Rose" > Cc: "valhalla-spec-experts" > Envoyé: Jeudi 10 Mai 2018 01:46:07 > Objet: Re: value type hygiene >> On May 6, 2018, at 3:17 AM, John Rose wrote: >> >> Like many of us, I have been thinking about the problems of keeping values,

Re: value type hygiene

2018-05-10 Thread Remi Forax
- Mail original - > De: "Maurizio Cimadamore" > À: "daniel smith" , "John Rose" > > Cc: "valhalla-spec-experts" > Envoyé: Jeudi 10 Mai 2018 18:27:00 > Objet: Re: value type hygiene > On 10/05/18 00:46, Dan Smith wrote: >> (To be clear about my preferred alternative: we introduce Q type

Re: value type hygiene

2018-05-14 Thread Remi Forax
I think i prefer a declaration site annotation like @ValueBasedClass to a use site annotation ValueRef. For me a value based class, if you want to be as compatible as possible, is a reference type (so 'L') that behave like a value type at runtime, so the JIT can see it has a value type at runt

Re: Towards Minimal L World

2018-05-18 Thread Remi Forax
It's more code like a class and don't leak 'this' as Ali and Maurizio said. Rémi - Mail original - > De: "Brian Goetz" > À: "John Rose" , "Maurizio Cimadamore" > > Cc: "valhalla-spec-experts" > Envoyé: Vendredi 18 Mai 2018 22:05:15 > Objet: Re: Towards Minimal L World >> Thesis: Val

Re: Valhalla EG minutes May 9 and Apr 25 2018

2018-05-26 Thread Remi Forax
- Mail original - > De: "Karen Kinnear" > À: "valhalla-spec-experts" > Envoyé: Mercredi 23 Mai 2018 16:11:30 > Objet: Valhalla EG minutes May 9 and Apr 25 2018 > Corrections welcome - apologies for the delay > > May 9, 2018 > > Attendees: Remi, Dan H, ]Dan Smith, Frederic, David Sim

toString/equals/hashCode implemented using method handles

2018-06-20 Thread Remi Forax
As discussed during our today meeting, here is an implementation of toString, equals and hashCode that can be used as default implementation of these methods for value types. toString use the ConcatMetafactory so the code is simple, for equals(), it first sort the fields to have the primitive typ

Re: EG help please with getting to LW1 re: Value Types Consistency Checking

2018-07-10 Thread Remi Forax
Hi all, > De: "John Rose" > À: "Tobi Ajila" > Cc: "valhalla-spec-experts" > Envoyé: Samedi 7 Juillet 2018 23:08:27 > Objet: Re: EG help please with getting to LW1 re: Value Types Consistency > Checking > Hi Tobi. Thanks for the write-up. > To be brief, your proposed technique will seems to r

Anonymous value class ?

2018-07-11 Thread Remi Forax
While testing how value types can be used, i had to find workarounds around the fact that there is no way to create an anonymous value class using the compiler. If we follow the idea of having a classical constructor being transformed to a factory method, i think we should also allow anonymous v

How to represent value based classes ?

2018-07-23 Thread Remi Forax
Hi all, i've plyed for some quite times now to specify in my mind what a value based class can be and i think it's time write that down. First, why we need value based class ? We want to offer a path to refactor a class to a value type but given that class instances are nullable and value type v

value based class vs nullable value type

2018-08-02 Thread Remi Forax
Hi all, just to write my current state of thinking somewhere, I see 3 ways to implement value based class which all have their pros and cons - the value based class bit, a value based class is tagged with ACC_VALUE_BASED, which means that they have no identity. It's not a value class so instan

Nullable ValueType, Generics and other vexations

2018-08-29 Thread Remi Forax
Hi all, just to formalize a little more my thinking about the interaction between (nullable) value types and erased generics. With LW1, the VM enforces that a value type can not be null, so each time there is a conversion between an Object to a value type, a nullcheck is inserted. This works gre

Re: JVM alternatives for supporting nullable value types

2018-09-12 Thread Remi Forax
Thanks Daniel ! There is another variation of the last semantics, instead of allowing the type notation on method parameters, you have a boolean in the attribute ValueTypes that indicates if the value type is nullable or not. So you are only allowed to decide class wide is a value type is nulla

Re: Valhalla EG meeting notes Sep 12 2018

2018-09-13 Thread Remi Forax
Hi Tobias, [Switching back to valhalla-spec-experts] - Mail original - > De: "Tobias Hartmann" > À: "valhalla-dev" > Envoyé: Jeudi 13 Septembre 2018 09:33:19 > Objet: Re: Valhalla EG meeting notes Sep 12 2018 > [Switching from valhalla-spec-experts to valhalla-dev] > > Just wanted to

Reified generics - shadow class edition

2018-09-18 Thread Remi Forax
Reified generics - shadow class edition. I believe that try to make method descriptor variant is a bad idea, it comes from the model 1...3 experimentation but it's an artifact of such implementations, not a concept. Here i describe a way to keep generics erased even if they are reified. If the

Re: Reified generics - shadow class edition

2018-09-18 Thread Remi Forax
- > De: "Remi Forax" > À: "valhalla-spec-experts" > Envoyé: Mardi 18 Septembre 2018 12:32:16 > Objet: Reified generics - shadow class edition > Reified generics - shadow class edition. > > I believe that trying to make method descriptor variant is a

var, static factory method and value type constructor

2018-10-06 Thread Remi Forax
I've observed an interesting side effect of the introduction of var that troubles my students, the introduction of var make the generics method call with type arguments needed to be mentioned more frequent. writing List list = List.of(); foo(list); // foo takes a List of String works out o

Re: Value types, encapsulation, and uninitialized values

2018-10-11 Thread Remi Forax
Being able use the default constructor to initialize the default value has a circular issue currently because a constructor is actually transformed to a default + with + with etc, so to call the default constructor you need to have acces to the default value. The circle can be broken if the defau

Re: Array covariance

2018-10-25 Thread Remi Forax
> De: "Brian Goetz" > À: "valhalla-spec-experts" > Envoyé: Jeudi 25 Octobre 2018 21:04:30 > Objet: Array covariance > Since the Burlington meeting, Simms has been prodding me to offer an > alternative > to supporting array covariance for value arrays. John and I kicked around the > following id

val and box

2019-01-05 Thread Remi Forax
Hi, from the language perspective, one can create a value type using a "value class" VT or a nullable value type NVT with the annonation @ValueBased. The language let you automatically derive - a nullable value type VT.box from a value type VT and VT.val is equivalent to VT. - a non nullable val

Re: Finding the spirit of L-World

2019-01-08 Thread Remi Forax
- Mail original - > De: "Brian Goetz" > À: "valhalla-spec-experts" > Envoyé: Lundi 7 Janvier 2019 18:21:26 > Objet: Finding the spirit of L-World > I’ve been processing the discussions at the Burlington meeting. While I think > we made a lot of progress, I think we fell into a few wi

Re: Finding the spirit of L-World

2019-01-08 Thread Remi Forax
But i agree that having all these Q-ref in the bytecode will not help the introduction of generics. I think that the way to implement the reification of generics is: - do the specialization of the data shape by asking a boostrap method with the restriction that the data shape has to be covariant

Re: Migrating the primitive boxes to values

2019-01-26 Thread Remi Forax
For 5, the first idea is to forward the call to the constructor to the factory method, but detecting the new + dup + invokespecial may be hard especially in the interpreter. The other solution is to redirect the call to new to create a larval value type and have the invokespecial call to fill th

Re: Bridge methods in the VM

2019-01-26 Thread Remi Forax
> De: "Brian Goetz" > À: "valhalla-spec-experts" > Envoyé: Mardi 22 Janvier 2019 14:51:35 > Objet: Bridge methods in the VM > We’ve been thinking for a long time about the possibilities of pushing > bridging > down into the VM. The reasons we have had until now have not been strong > enough, bu

Re: Valhalla EG notes Jan 16, 2019

2019-01-29 Thread Remi Forax
- Mail original - > De: "Karen Kinnear" > À: "valhalla-spec-experts" > Envoyé: Mardi 29 Janvier 2019 19:55:17 > Objet: Valhalla EG notes Jan 16, 2019 > Attendees: Remi, Tobi, Dan H, John, Brian, Simms, Fred, Karen > Corrections welcome - thank you John for your summary notes > > AIs: >

Re: Valhalla EG notes Jan 16, 2019

2019-01-30 Thread Remi Forax
> De: "John Rose" > À: "Brian Goetz" > Cc: "valhalla-spec-experts" > Envoyé: Mercredi 30 Janvier 2019 01:20:50 > Objet: Re: Valhalla EG notes Jan 16, 2019 > On Jan 29, 2019, at 12:27 PM, Brian Goetz < [ mailto:brian.go...@oracle.com | > brian.go...@oracle.com ] > wrote: >> But, now we a proble

An example of substituability test that is recursive

2019-01-31 Thread Remi Forax
Hi Karen, here is an example that recurse to its death with the current prototype import java.lang.invoke.ValueBootstrapMethods; import java.util.stream.IntStream; public class Substituable { static value class Link { private final int value; private final Object next; public L

Re: An example of substituability test that is recursive

2019-01-31 Thread Remi Forax
otherwise calling the lambda will stack overflow too but it means that == will be slow (because it does a recursive comparison). Rémi - Mail original - > De: "Remi Forax" > À: "Karen Kinnear" > Cc: "valhalla-spec-experts" > Envoyé: Jeudi 31 Ja

Re: Valhalla Meeting Notes Jan 30, 2019

2019-02-13 Thread Remi Forax
ederic, Karen > > AI: Remi: send GitHub POC experiment outside of vm with bridge forwarding https://github.com/forax/indy-everywhere Rémi

acmp again !

2019-02-20 Thread Remi Forax
I still think we have not finished exploring how to implement acmp for value types. We currently have two semantics for value types: - always return false, - recursively compare each components Support of acmp like the support of synchronized or System.identityHashcode is not a part of the orig

Re: Finding the spirit of L-World

2019-02-23 Thread Remi Forax
- Mail original - > De: "John Rose" > À: "Kevin Bourrillion" > Cc: "valhalla-spec-experts" > Envoyé: Samedi 23 Février 2019 03:57:56 > Objet: Re: Finding the spirit of L-World > On Feb 22, 2019, at 11:42 AM, Kevin Bourrillion wrote: >> >> I think we should make users write `equals` to

Re: Finding the spirit of L-World

2019-02-23 Thread Remi Forax
- Mail original - > De: "John Rose" > À: "Kevin Bourrillion" > Cc: "valhalla-spec-experts" > Envoyé: Samedi 23 Février 2019 04:02:15 > Objet: Re: Finding the spirit of L-World > On Feb 22, 2019, at 6:57 PM, John Rose wrote: >> >> On Feb 22, 2019, at 11:42 AM, Kevin Bourrillion wro

The substituability test is breaking the encapsulation

2019-02-25 Thread Remi Forax
Hi all, there is another issue with making the component wide test available for any value types, it's leaking the implementation. Let say we have this class: public value class GuessANumber { private final int value; public GuessANumber(int value) { this.value = value; } publi

Re: lazy statics design notes

2019-02-28 Thread Remi Forax
27, 2019, at 7:30 AM, Karen Kinnear wrote: >> Subject: Valhalla EG notes Feb 13, 2019 >> To: valhalla-spec-experts >> ... >> III. [Remi Forax] DynamicValue attribute >> Another project Remi will lead and create JEP >> language level: static lazy final >>

Re: lazy statics design notes

2019-02-28 Thread Remi Forax
- Mail original - > De: "John Rose" > À: "Brian Goetz" > Cc: "valhalla-spec-experts" > Envoyé: Mercredi 27 Février 2019 22:01:07 > Objet: Re: lazy statics design notes > On Feb 27, 2019, at 12:58 PM, Brian Goetz wrote: >> >> I think the answer to all the objections is "then just use "

Re: Finding the spirit of L-World

2019-02-28 Thread Remi Forax
> De: "Brian Goetz" > À: "valhalla-spec-experts" > Envoyé: Jeudi 28 Février 2019 18:17:43 > Objet: Re: Finding the spirit of L-World >> class Object { ... } >> class RefObject extends Object { ... } >> class ValObject extends Object { ... } > Let’s talk about this one some more. There are some

Re: lazy statics design notes

2019-03-02 Thread Remi Forax
Hi John, the semantics of a lazy final instance field and a lazy final static field are different, likewise the semantics of an instance field and a static field are different too, by example the static fields are initialized under a lock but there is no implicit lock around the instance fields

<    1   2   3   4   >