Stef, I had a look at the description of these fixes, but it does not look like 
there is something related in it.

Eliot, the requested output is below.
But as far as I can see, it is identical. Have verified it also in the Squeak 
4.1 image, all three produce the same bytecode.

Perhaps it not the compiler directly but some closure related code?

Thanks
Stefan



Pharo 1.1: (Erlang class>>#spawn:) abstractSymbolic

'<primitive: 19>
        pushLit: Process
        pushTemp: 0
        closureNumCopied: 1 numArgs: 0 bytes 51 to 59
                pushConstant: 1
                send: #halt (0 args)
                pop
                pushTemp: 0
                send: #value (0 args)
                pop
                pushLit: Processor
                send: #terminateActive (0 args)
                blockReturn
        send: #asContext (0 args)
        pushLit: Processor
        send: #activePriority (0 args)
        send: #forContext:priority: (2 args)
        popIntoTemp: 1
        pushTemp: 1
        send: #resume (0 args)
        pop
        pushTemp: 1
        returnTop
'

Pharo 1.1: (Erlang class>>#spawn:) symbolic.
'<primitive: 19>
45 <41> pushLit: Process
46 <10> pushTemp: 0
47 <8F 10 00 09> closureNumCopied: 1 numArgs: 0 bytes 51 to 59
51      <76> pushConstant: 1
52      <D3> send: halt
53      <87> pop
54      <10> pushTemp: 0
55      <C9> send: value
56      <87> pop
57      <45> pushLit: Processor
58      <D4> send: terminateActive
59      <7D> blockReturn
60 <D2> send: asContext
61 <45> pushLit: Processor
62 <D6> send: activePriority
63 <F0> send: forContext:priority:
64 <69> popIntoTemp: 1
65 <11> pushTemp: 1
66 <D7> send: resume
67 <87> pop
68 <11> pushTemp: 1
69 <7C> returnTop
'

Squeak 4.2: (Erlang class>>#spawn:) abstractSymbolic.
 '<primitive: 19>
        pushLit: Process
        pushTemp: 0
        closureNumCopied: 1 numArgs: 0 bytes 51 to 59
                pushConstant: 1
                send: #halt (0 args)
                pop
                pushTemp: 0
                send: #value (0 args)
                pop
                pushLit: Processor
                send: #terminateActive (0 args)
                blockReturn
        send: #asContext (0 args)
        pushLit: Processor
        send: #activePriority (0 args)
        send: #forContext:priority: (2 args)
        popIntoTemp: 1
        pushTemp: 1
        send: #resume (0 args)
        pop
        pushTemp: 1
        returnTop
'

Squeak 4.2: (Erlang class>>#spawn:) symbolic.

 '<primitive: 19>
45 <41> pushLit: Process
46 <10> pushTemp: 0
47 <8F 10 00 09> closureNumCopied: 1 numArgs: 0 bytes 51 to 59
51      <76> pushConstant: 1
52      <D3> send: halt
53      <87> pop
54      <10> pushTemp: 0
55      <C9> send: value
56      <87> pop
57      <45> pushLit: Processor
58      <D4> send: terminateActive
59      <7D> blockReturn
60 <D2> send: asContext
61 <45> pushLit: Processor
62 <D6> send: activePriority
63 <F0> send: forContext:priority:
64 <69> popIntoTemp: 1
65 <11> pushTemp: 1
66 <D7> send: resume
67 <87> pop
68 <11> pushTemp: 1
69 <7C> returnTop
'


On 29 Sep 2010, at 20:29, Stéphane Ducasse wrote:

> and http://code.google.com/p/pharo/issues/list?cursor=2818
> 
> Stef
> 
> 
>>> spawn: aBlock
>>>      "Answer an ErlProcess running the code given in the parameter. The 
>>> process isscheduled."
>>>      | proc |
>>>      <primitive: 19> "Simulation guard"
>>>      proc := Process
>>>              forContext:
>>>                      [1 halt. aBlock value.
>>>                       Processor terminateActive] asContext
>>>              priority: Processor activePriority.
>>>      proc resume.
>>>      ^ proc


-- 
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


_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to