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