The Trunk: System-eem.803.mcz

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

The Trunk: System-eem.803.mcz

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

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

Name: System-eem.803
Author: eem
Time: 2 March 2016, 7:18:21.713694 pm
UUID: 934ce776-0717-469b-8818-300954393791
Ancestors: System-bf.802

Add getters that answer whether the VM supports immutability or multiple bytecode sets.

=============== Diff against System-bf.802 ===============

Item was added:
+ ----- Method: SmalltalkImage>>supportsImmutability (in category 'system attributes') -----
+ supportsImmutability
+ "Answer whether the VM observes the per-object immutability flag and consequently
+ aborts writes to inst vars of, and fails primitives that attempt to write, to immutable objects."
+ "SmalltalkImage current supportsImmutability"
+
+ ^(self vmParameterAt: 65)
+ ifNil: [false]
+ ifNotNil:
+ [:param| "In older VMs this is a boolean reflecting MULTIPLE_BYTECODE_SETS"
+ param isInteger "In newer VMs it is a set of integer flags, bit 1 of which is IMMUTABILITY"
+ ifTrue: [param anyMask: 2]
+ ifFalse: [false]]!

Item was added:
+ ----- Method: SmalltalkImage>>supportsMultipleBytecodeSets (in category 'system attributes') -----
+ supportsMultipleBytecodeSets
+ "Answer whether the VM supports multiple bytecodeSets."
+ "SmalltalkImage current supportsMultipleBytecodeSets"
+
+ ^(self vmParameterAt: 65)
+ ifNil: [false]
+ ifNotNil:
+ [:param| "In older VMs this is a boolean reflecting MULTIPLE_BYTECODE_SETS"
+ param isInteger "In newer VMs it is a set of integer flags, bit 0 of which is MULTIPLE_BYTECODE_SETS"
+ ifTrue: [param anyMask: 1]
+ ifFalse: [param]]!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-eem.803.mcz

Tobias Pape
Hi all, Hi Eliot, Hi Clément

Well, you know I'm the opponent here regarding the Immutability naming.
I hate that I have to come back to the naming thing here once again.
But it is rather important for me, since I work on immutability concepts
that are unlike what immutability would mean here. I think it is also
important to know that immutability in most other languages means
 "it won't change whatsoever" (including OCaml[1], Racket[2],
Haskell[3], or object-oriented programming in general[4])

Now, I see the need, usefulness, and practical implementation for objects
that cannot be written and hence throw an error, which _then_ can be
circumvented/made be writable. I'm all for it and I like it. Except
for the name.

As Clément put it:
        "As argued on the virtual machine mailing list, we are talking
        about a write-barrier more than immutability itself."


I would hence propose to name those objects

        locked objects

with the accompanying Someone-tries-to-write-that-Error named

        ObjectIsLockedError

and the state-change messages

        Object>>lock
        Object>>unlock

and likewise the VM-information

        SmalltalkImage>>supportsLockedObjects

I know, re-iterating this is tedious, but it will avoid unmet
expectations by newcomers from other languages as well as
name clashes with actual immutability implementations (how should
we name those, then)?

With apologies
        -Tobias


[1]: http://typeocaml.com/2015/01/02/immutable/
[2]: a) http://docs.racket-lang.org/reference/pairs.html "Pairs are not mutable"
     b) http://docs.racket-lang.org/reference/strings.html
[3]: https://wiki.haskell.org/A_brief_introduction_to_Haskell#Immutable_declarations
[4]: https://en.wikipedia.org/wiki/Immutable_object

On 03.03.2016, at 03:19, [hidden email] wrote:

> Eliot Miranda uploaded a new version of System to project The Trunk:
> http://source.squeak.org/trunk/System-eem.803.mcz
>
> ==================== Summary ====================
>
> Name: System-eem.803
> Author: eem
> Time: 2 March 2016, 7:18:21.713694 pm
> UUID: 934ce776-0717-469b-8818-300954393791
> Ancestors: System-bf.802
>
> Add getters that answer whether the VM supports immutability or multiple bytecode sets.
>
> =============== Diff against System-bf.802 ===============
>
> Item was added:
> + ----- Method: SmalltalkImage>>supportsImmutability (in category 'system attributes') -----
> + supportsImmutability
> + "Answer whether the VM observes the per-object immutability flag and consequently
> + aborts writes to inst vars of, and fails primitives that attempt to write, to immutable objects."
> + "SmalltalkImage current supportsImmutability"
> +
> + ^(self vmParameterAt: 65)
> + ifNil: [false]
> + ifNotNil:
> + [:param| "In older VMs this is a boolean reflecting MULTIPLE_BYTECODE_SETS"
> + param isInteger "In newer VMs it is a set of integer flags, bit 1 of which is IMMUTABILITY"
> + ifTrue: [param anyMask: 2]
> + ifFalse: [false]]!
>
> Item was added:
> + ----- Method: SmalltalkImage>>supportsMultipleBytecodeSets (in category 'system attributes') -----
> + supportsMultipleBytecodeSets
> + "Answer whether the VM supports multiple bytecodeSets."
> + "SmalltalkImage current supportsMultipleBytecodeSets"
> +
> + ^(self vmParameterAt: 65)
> + ifNil: [false]
> + ifNotNil:
> + [:param| "In older VMs this is a boolean reflecting MULTIPLE_BYTECODE_SETS"
> + param isInteger "In newer VMs it is a set of integer flags, bit 0 of which is MULTIPLE_BYTECODE_SETS"
> + ifTrue: [param anyMask: 1]
> + ifFalse: [param]]!
>
>


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-eem.803.mcz

Stéphane Rollandin

> Object>>lock
> Object>>unlock

#lock and #unlock are already used (notably in Morph).

Stef


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-eem.803.mcz

marcel.taeumel
#activeWriteBarrier
#deactivateWriteBarrier

?

Best,
Marcel
Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-eem.803.mcz

Tobias Pape
In reply to this post by Stéphane Rollandin

On 03.03.2016, at 10:14, Stéphane Rollandin <[hidden email]> wrote:

>
>> Object>>lock
>> Object>>unlock
>
> #lock and #unlock are already used (notably in Morph).

Oh, wow, how did I miss that :/

Best
        -Tobias
Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: System-eem.803.mcz

Tom Rushworth-2
Maybe

   Object>>freeze
   Object>>melt

?
On 16-03-03 02:05 , Tobias Pape wrote:

>
> On 03.03.2016, at 10:14, Stéphane Rollandin <[hidden email]> wrote:
>
>>
>>> Object>>lock
>>> Object>>unlock
>>
>> #lock and #unlock are already used (notably in Morph).
>
> Oh, wow, how did I miss that :/
>
> Best
> -Tobias
>


--
Tom Rushworth