The Trunk: Compiler-eem.257.mcz

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

The Trunk: Compiler-eem.257.mcz

commits-2
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.257.mcz

==================== Summary ====================

Name: Compiler-eem.257
Author: eem
Time: 12 March 2013, 1:35:51.456 pm
UUID: 02f32284-4e16-4352-a766-7b3dd7a461b1
Ancestors: Compiler-nice.256

Fix Decompiler now that Environments uses Alias.
Alias isSpecialReadBinding and isSpecialWriteBinding and so
is accessed by sending #value[:] and must be decompiled
appropriately.

=============== Diff against Compiler-nice.256 ===============

Item was changed:
  ----- Method: DecompilerConstructor>>codeMessage:selector:arguments: (in category 'constructor') -----
  codeMessage: receiver selector: selector arguments: arguments
+ | symbol |
- | symbol node |
  symbol := selector key.
+ (BraceNode new
- (node := BraceNode new
  matchBraceWithReceiver: receiver
  selector: symbol
+ arguments: arguments) ifNotNil: [:node| ^node].
+ (self
+ decodeLiteralVariableValueDereferenceWithReceiver: receiver
+ selector: symbol
+ arguments: arguments) ifNotNil: [:node| ^node].
+ (self decodeIfNilWithReceiver: receiver
- arguments: arguments) ifNotNil: [^ node].
- (node := self decodeIfNilWithReceiver: receiver
  selector: symbol
+ arguments: arguments) ifNotNil: [:node| ^node].
+ ^MessageNode new
- arguments: arguments) ifNotNil: [^ node].
- ^ MessageNode new
  receiver: receiver selector: selector
  arguments: arguments
  precedence: symbol precedence!

Item was added:
+ ----- Method: DecompilerConstructor>>decodeLiteralVariableValueDereferenceWithReceiver:selector:arguments: (in category 'constructor') -----
+ decodeLiteralVariableValueDereferenceWithReceiver: receiver selector: selector arguments: arguments
+ | varNode |
+ (receiver notNil "cascades"
+ and: [receiver isLiteralNode
+ and: [receiver key isVariableBinding]]) ifFalse:
+ [^nil].
+ varNode := self codeAnyLitInd: receiver key.
+ selector = #value ifTrue:
+ [^varNode].
+ ^selector = #value: ifTrue:
+ [self codeAssignTo: varNode value: arguments first]!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Compiler-eem.257.mcz

Frank Shearar-3
On 12 March 2013 20:36,  <[hidden email]> wrote:

> Eliot Miranda uploaded a new version of Compiler to project The Trunk:
> http://source.squeak.org/trunk/Compiler-eem.257.mcz
>
> ==================== Summary ====================
>
> Name: Compiler-eem.257
> Author: eem
> Time: 12 March 2013, 1:35:51.456 pm
> UUID: 02f32284-4e16-4352-a766-7b3dd7a461b1
> Ancestors: Compiler-nice.256
>
> Fix Decompiler now that Environments uses Alias.
> Alias isSpecialReadBinding and isSpecialWriteBinding and so
> is accessed by sending #value[:] and must be decompiled
> appropriately.
>
> =============== Diff against Compiler-nice.256 ===============

Cool, that just fixed 47 tests! That leaves 67-odd still breaking:
http://build.squeak.org/job/SqueakTrunk/223/testReport/

The cluster of PureBehaviorTest failures look to largely be "Cannot
store into read-only bindings" failures. A bunch of others too - the
trait composition tests, for instance.

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Compiler-eem.257.mcz

Colin Putney-3



On Tue, Mar 12, 2013 at 2:03 PM, Frank Shearar <[hidden email]> wrote:
 
The cluster of PureBehaviorTest failures look to largely be "Cannot
store into read-only bindings" failures. A bunch of others too - the
trait composition tests, for instance.

Huh. It's odd that this wasn't failing before—SystemDictionary doesn't, AFAICT, guard against read-only bindings. Did we have a bunch of bindings that should have been read-only, but weren't?

 


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Compiler-eem.257.mcz

Levente Uzonyi-2
On Tue, 12 Mar 2013, Colin Putney wrote:

>
>
>
> On Tue, Mar 12, 2013 at 2:03 PM, Frank Shearar <[hidden email]> wrote:
>  
>       The cluster of PureBehaviorTest failures look to largely be "Cannot
> store into read-only bindings" failures. A bunch of others too - the
> trait composition tests, for instance.
>
>
> Huh. It's odd that this wasn't failing before—SystemDictionary doesn't, AFAICT, guard against read-only bindings. Did we have a bunch of bindings that should have been read-only, but weren't?
Yes, actually all classes should have a read-only binding, since this
is not valid code:

  Object := 1.

But starting with Squeak 3.x there's a bug, which makes new class
bindings have Association instead of ReadOnlyVariableBinding as class. We
discussed this a few months ago during the first iteration of
Environments.


Levente

>
>  
>
>