Daily Commit Log

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Daily Commit Log

commits-2
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:

http://lists.squeakfoundation.org/pipermail/packages/2010-August/003616.html

Name: Compiler-eem.168
Ancestors: Compiler-eem.166

Merge with Compiler-nice.164.

Fix the case of special write binding.
Reminder: in case of special write binding, we must:
        1) load the VariableBinding
        2) push assigned value
        3) send value:
(see AssignmentNode>>emitCodeForEffect:encoder: )

#sizeCodeForLoad: read inst var writeNode
#sizeCodeForStore: write inst var writeNode
#sizeCodeForLoad: is sent before #sizeCodeForStore:
Therefore writeNode is read before written and the door is open for bugs.

Fortunately, #sizeCodeForStore: redo the job of #sizeCodeForLoad: and reserve space for pushing the VariableBinding on stack.

Unfortunately, it sometimes happens that the sizeCodeFor... is requested twice, the writeNode is then initialized and sizeCodeForLoad: reserve space for pushing VariableBinding a second time leading to a code size discrepancy...

Present fix implement following solution:
1) let sizeCodeForLoad: reserve size for emitCodeForLoad:encoder: operations, but don't trust writeNode isNil for this job.
2) let sizeCodeForStore: reserve size for - and only for - emitCodeForStore:encoder: operations.

=============================================

http://lists.squeakfoundation.org/pipermail/packages/2010-August/003617.html

Name: Compiler-eem.169
Ancestors: Compiler-eem.168

Allow the user to choose at what level to delcare an undeclared temp,
either method-level or block-local.

=============================================