Re: [Pharo-project] Meanwhile, at another vm
JSR 292 explicitly talks about become: (calls it hotswap) and is supposed to make it possible to run Smalltalk efficiently on a jvm. I don't know how complete the jsr 292 implementation is of mlvm. I got the link in a tweet. Roos builds modular automated test equipment. Stephan
Stefan, Am 13.04.2011 um 19:40 schrieb Stephan Eggermont <stephan@stack.nl>:
JSR 292 explicitly talks about become: (calls it hotswap)
the HotSwap I know is JVM technology introduced in Java 1.4 and is solely about changing method implementations at run-time. I haven't read the JSR, but I'd be amazed if another technology, this time for object identity exchange, would be introduced under the same name. Best, Michael
From: http://www.jcp.org/en/jsr/detail?id=292 "We will also investigate support for hotswapping, the capability to modify the structure of classes at run time." So, yes, they planned to "investigate" a version of become: The DaVinci Machine http://openjdk.java.net/projects/mlvm/ has an implementation: http://wiki.jvmlangsummit.com/images/4/41/DaVinciMachineTalk.pdf ../Dave
On Wed, Apr 13, 2011 at 11:06 PM, Dave Mason <dmason@mason-rose.ca> wrote:
From: http://www.jcp.org/en/jsr/detail?id=292
"We will also investigate support for hotswapping, the capability to modify the structure of classes at run time."
So, yes, they planned to "investigate" a version of become:
How is that phrase related to #become: ? Modyfing the structure of a class at runtime has nothing to do with a #become:
The DaVinci Machine
http://openjdk.java.net/projects/mlvm/
has an implementation:
http://wiki.jvmlangsummit.com/images/4/41/DaVinciMachineTalk.pdf
../Dave
-- Mariano http://marianopeck.wordpress.com
On 04/13/2011 11:15 PM, Mariano Martinez Peck wrote:
On Wed, Apr 13, 2011 at 11:06 PM, Dave Mason <dmason@mason-rose.ca "We will also investigate support for hotswapping, the capability to modify the structure of classes at run time."
So, yes, they planned to "investigate" a version of become:
How is that phrase related to #become: ? Modyfing the structure of a class at runtime has nothing to do with a #become:
It depends. If "modify structure" means "modifying methods" then indeed it has little to do with become:. But if it means "changing the memory layout of the class by for example adding ivars" then it has to do with become: because it is needed to do instance migration from the old class to the new class. regards, Göran
On 13 Apr 2011, at 23:27, Göran Krampe wrote:
On 04/13/2011 11:15 PM, Mariano Martinez Peck wrote:
On Wed, Apr 13, 2011 at 11:06 PM, Dave Mason <dmason@mason-rose.ca "We will also investigate support for hotswapping, the capability to modify the structure of classes at run time."
So, yes, they planned to "investigate" a version of become:
How is that phrase related to #become: ? Modyfing the structure of a class at runtime has nothing to do with a #become:
It depends. If "modify structure" means "modifying methods" then indeed it has little to do with become:. But if it means "changing the memory layout of the class by for example adding ivars" then it has to do with become: because it is needed to do instance migration from the old class to the new class.
There is no need for guessing, Google knows the answer: http://download.oracle.com/javase/6/docs/platform/jvmti/jvmti.html#RedefineC... "Instances of the redefined class are not affected -- fields retain their previous values. Tags on the instances are also unaffected." "The redefinition may change method bodies, the constant pool and attributes. The redefinition must not add, remove or rename fields or methods, change the signatures of methods, change modifiers, or change inheritance. These restrictions may be lifted in future versions. "... -- Stefan Marr Software Languages Lab Vrije Universiteit Brussel Pleinlaan 2 / B-1050 Brussels / Belgium http://soft.vub.ac.be/~smarr Phone: +32 2 629 2974 Fax: +32 2 629 3525
Maybe if that class has living instances, you must provide a way to mutate the instances... The easiest way is to create a mutated clone and becomeForward. Nicolas 2011/4/13 Mariano Martinez Peck <marianopeck@gmail.com>:
On Wed, Apr 13, 2011 at 11:06 PM, Dave Mason <dmason@mason-rose.ca> wrote:
From: Â Â Â Â http://www.jcp.org/en/jsr/detail?id=292
"We will also investigate support for hotswapping, the capability to modify the structure of classes at run time."
So, yes, they planned to "investigate" a version of become:
How is that phrase related to #become:  ?  Modyfing the structure of a class at runtime has nothing to do with a #become:
The DaVinci Machine
    http://openjdk.java.net/projects/mlvm/
has an implementation:
    http://wiki.jvmlangsummit.com/images/4/41/DaVinciMachineTalk.pdf
../Dave
-- Mariano http://marianopeck.wordpress.com
aha....good point guys. Thanks :) On Wed, Apr 13, 2011 at 11:29 PM, Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com> wrote:
Maybe if that class has living instances, you must provide a way to mutate the instances... The easiest way is to create a mutated clone and becomeForward.
Nicolas
2011/4/13 Mariano Martinez Peck <marianopeck@gmail.com>:
On Wed, Apr 13, 2011 at 11:06 PM, Dave Mason <dmason@mason-rose.ca>
wrote:
From: http://www.jcp.org/en/jsr/detail?id=292
"We will also investigate support for hotswapping, the capability to modify the structure of classes at run time."
So, yes, they planned to "investigate" a version of become:
How is that phrase related to #become: ? Modyfing the structure of a class at runtime has nothing to do with a #become:
The DaVinci Machine
http://openjdk.java.net/projects/mlvm/
has an implementation:
http://wiki.jvmlangsummit.com/images/4/41/DaVinciMachineTalk.pdf
../Dave
-- Mariano http://marianopeck.wordpress.com
-- Mariano http://marianopeck.wordpress.com
Dave, On 13 April 2011 23:06, Dave Mason <dmason@mason-rose.ca> wrote:
From: Â Â Â Â http://www.jcp.org/en/jsr/detail?id=292
"We will also investigate support for hotswapping, the capability to modify the structure of classes at run time."
So, yes, they planned to "investigate" a version of become:
The DaVinci Machine
    http://openjdk.java.net/projects/mlvm/
has an implementation:
    http://wiki.jvmlangsummit.com/images/4/41/DaVinciMachineTalk.pdf
I'm puzzled; where is #become: mentioned as being implemented in that talk? It's mostly about INVOKEDYNAMIC, which is an entirely different thing. (They mention HotSwap on one slide, but that, as I wrote, has been around since 1.4, and is also not really #become:.) Best, Michael
On Apr 14, 2011, at 04:13, Michael Haupt wrote:
I'm puzzled; where is #become: mentioned as being implemented in that talk? It's mostly about INVOKEDYNAMIC, which is an entirely different thing. (They mention HotSwap on one slide, but that, as I wrote, has been around since 1.4, and is also not really #become:.)
I'n not sure what you mean that hotswap (or rather HotSwap) has been around since 1.4... do you perhaps mean HotSpot - the better jitter? I haven't dug into the fine details, but here is a post from 2006 by Gilad Bracha, sometimes contributor to this list: http://blogs.sun.com/gbracha/entry/jsr292_and_hotswapping and the update to it is the slides I cited say there is a patch to support hotswap currently as of Sept 2009. Perhaps Gilad is listening, and can provide some context. ../Dave
Hi: On 14 Apr 2011, at 16:13, Dave Mason wrote:
On Apr 14, 2011, at 04:13, Michael Haupt wrote:
I'm puzzled; where is #become: mentioned as being implemented in that talk? It's mostly about INVOKEDYNAMIC, which is an entirely different thing. (They mention HotSwap on one slide, but that, as I wrote, has been around since 1.4, and is also not really #become:.)
I'n not sure what you mean that hotswap (or rather HotSwap) has been around since 1.4... do you perhaps mean HotSpot - the better jitter? Hotswap, as in changing methods in a class. That is what the JVM supports, and that is what Michael is referring to. That is part of the JVM debuggers and tooling interface. That is part of the spec, not just an implementation detail of HotSpot.
I haven't dug into the fine details, but here is a post from 2006 by Gilad Bracha, sometimes contributor to this list:
http://blogs.sun.com/gbracha/entry/jsr292_and_hotswapping
and the update to it is the slides I cited say there is a patch to support hotswap currently as of Sept 2009. Hotswap for methods was introduced as part of the debugging API, and that was part of Java 1.4 with its JavaTM Platform Debugger Architecture...
-- Stefan Marr Software Languages Lab Vrije Universiteit Brussel Pleinlaan 2 / B-1050 Brussels / Belgium http://soft.vub.ac.be/~smarr Phone: +32 2 629 2974 Fax: +32 2 629 3525
Hi Dave, On 14 April 2011 16:13, Dave Mason <dmason@mason-rose.ca> wrote:
I'n not sure what you mean that hotswap (or rather HotSwap) has been around since 1.4... do you perhaps mean HotSpot - the better jitter?
no, that's around since 1.3 IIRC. :-) The HotSwap technology (i.e., the possibility to change method implementations at run-time) was introduced in the Java VM with the release of Java 1.4. What I don't understand is how HotSwap is supposed to be related to #become:. Also, JSR 292 does not change anything about that if I'm not totally mistaken. It introduces INVOKEDYNAMIC. The details at http://www.jcp.org/en/jsr/detail?id=292 do not give away anything related to HotSwap, schema changes or object identity exchange. But we're probably rather off-topic by now. ;-) Best, Michael
Hi, On 14 April 2011 16:40, Norbert Hartl <norbert@hartl.name> wrote:
But we're probably rather off-topic by now. ;-)
No, the subject is "Meanwhile, at another vm". Quite flexible and welcoming to all sorts of discussions :)
all right then. Here we go. :-D Best, Michael
On 13.04.2011 19:40, Stephan Eggermont wrote:
JSR 292 explicitly talks about become: (calls it hotswap) and is supposed to make it possible to run Smalltalk efficiently on a jvm.
What I know as hotswap as hot swap would not help with #become:. My understanding is that when "they" went from an object table to direct pointers for memory access speed that made it more complicated to implement #become: and certainly slower. Cheers Philippe
participants (9)
-
Dave Mason -
Göran Krampe -
Mariano Martinez Peck -
Michael Haupt -
Nicolas Cellier -
Norbert Hartl -
Philippe Marschall -
Stefan Marr -
Stephan Eggermont