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