[squeak-dev] The Trunk: Kernel-eem.501.mcz

Eliot Miranda eliot.miranda at gmail.com
Sun Sep 26 03:33:15 UTC 2010


On Sat, Sep 25, 2010 at 8:27 PM, Levente Uzonyi <leves at elte.hu> wrote:

> On Sun, 26 Sep 2010, commits at source.squeak.org wrote:
>
>  Eliot Miranda uploaded a new version of Kernel to project The Trunk:
>> http://source.squeak.org/trunk/Kernel-eem.501.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Kernel-eem.501
>> Author: eem
>> Time: 25 September 2010, 7:55:34.708 pm
>> UUID: 5b55eae3-594b-4416-9d47-5a4ebaabb238
>> Ancestors: Kernel-ul.500
>>
>> Add mirror primitives which can be used for accurate
>> execution simulation (a.k.a. debugging) of proxies.
>>
>
> #objectSize: seems to be missing.
>

Superb catch.  In trying to collect the mirror primitives and only the
mirror primitives I stupidly did SystemNavigation new browseAllSelect: [:m|
m beginsWith: 'object:'] and so missed this.

Thanks!


>
> Levente
>
>
>> =============== Diff against Kernel-ul.500 ===============
>>
>> Item was added:
>> + ----- Method: ContextPart>>object:basicAt: (in category 'mirror
>> primitives') -----
>> + object: anObject basicAt: index
>> +       "Answer the value of an indexable element in the argument anObject
>> without sending
>> +        it a message. Fail if the argument index is not an Integer or is
>> out of bounds, or if
>> +        anObject is not indexable. This mimics the action of the VM when
>> it indexes an object.
>> +        Used to simulate the execution machinery by, for example, the
>> debugger.
>> +        Primitive.  See Object documentation whatIsAPrimitive."
>> +
>> +       <primitive: 60>
>> +       index isInteger ifTrue: [self errorSubscriptBounds: index].
>> +       index isNumber
>> +               ifTrue: [^self object: anObject basicAt: index asInteger]
>> +               ifFalse: [self errorNonIntegerIndex]!
>>
>> Item was added:
>> + ----- Method: ContextPart>>object:basicAt:put: (in category 'mirror
>> primitives') -----
>> + object: anObject basicAt: index put: value
>> +       "Store the last argument
>> +        value in the indexable element of the argument anObject indicated
>> by index without sending
>> +        anObject a message. Fail if the argument index is not an Integer
>> or is out of bounds, or if
>> +        anObject is not indexable, or if value is an inappropriate value
>> for anObject's indexable slots.
>> +        This mimics the action of the VM when it indexes an object.
>> +        Used to simulate the execution machinery by, for example, the
>> debugger.
>> +        Primitive.  See Object documentation whatIsAPrimitive."
>> +
>> +       <primitive: 61>
>> +       index isInteger
>> +               ifTrue: [(index >= 1 and: [index <= (self objectSize:
>> anObject)])
>> +                                       ifTrue: [self errorImproperStore]
>> +                                       ifFalse: [self
>> errorSubscriptBounds: index]].
>> +       index isNumber
>> +               ifTrue: [^self object: anObject basicAt: index asInteger
>> put: value]
>> +               ifFalse: [self errorNonIntegerIndex]!
>>
>> Item was added:
>> + ----- Method: ContextPart>>object:eqeq: (in category 'mirror
>> primitives') -----
>> + object: anObject eqeq: anOtherObject
>> +       "Answer whether the first and second arguments are the same object
>> (have the
>> +        same object pointer) without sending a message to the first
>> argument.  This
>> +        mimics the action of the VM when it compares two object pointers.
>>  Used to
>> +        simulate the execution machinery by, for example, the debugger.
>> +        Primitive.  See Object documentation whatIsAPrimitive."
>> +
>> +       <primitive: 110>
>> +       self primitiveFailed!
>>
>> Item was added:
>> + ----- Method: ContextPart>>object:instVarAt: (in category 'mirror
>> primitives') -----
>> + object: anObject instVarAt: anIndex
>> +       "Primitive. Answer a fixed variable in an object. The numbering of
>> the
>> +        variables corresponds to the named instance variables. Fail if
>> the index
>> +        is not an Integer or is not the index of a fixed variable.
>> Essential for the
>> +        debugger. See  Object documentation whatIsAPrimitive."
>> +
>> +       <primitive: 73>
>> +       "Access beyond fixed variables."
>> +       ^self object: anObject basicAt: anIndex - (self objectClass:
>> anObject) instSize!
>>
>> Item was added:
>> + ----- Method: ContextPart>>object:instVarAt:put: (in category 'mirror
>> primitives') -----
>> + object: anObject instVarAt: anIndex put: aValue
>> +       "Primitive. Store a value into a fixed variable in the argument
>> anObject.
>> +        The numbering of the variables corresponds to the named instance
>> +        variables.  Fail if the index is not an Integer or is not the
>> index of a
>> +        fixed variable.  Answer the value stored as the result. Using
>> this
>> +        message violates the  principle that each object has sovereign
>> control
>> +        over the storing of values into its instance variables. Essential
>> for the
>> +        debugger. See Object documentation whatIsAPrimitive."
>> +
>> +       <primitive: 74>
>> +       "Access beyond fixed fields"
>> +       ^self object: anObject basicAt: anIndex - (self objectClass:
>> anObject) instSize put: aValue!
>>
>> Item was added:
>> + ----- Method: ContextPart>>object:perform:withArguments:inClass: (in
>> category 'mirror primitives') -----
>> + object: anObject perform: selector withArguments: argArray inClass:
>> lookupClass
>> +       "Send the selector, aSymbol, to anObject with arguments in
>> argArray.
>> +        Fail if the number of arguments expected by the selector
>> +        does not match the size of argArray, or if lookupClass
>> +        cannot be found among the anObject's superclasses.
>> +        Primitive. Essential for the debugger."
>> +
>> +       <primitive: 100 error: error>
>> +       (selector isMemberOf: Symbol) ifFalse:
>> +               [^self error: 'selector argument must be a Symbol'].
>> +       (argArray isMemberOf: Array) ifFalse:
>> +               [^self error: 'argArray must be an Array'].
>> +       (selector numArgs = argArray size)
>> +               ifFalse: [^self error: 'incorrect number of arguments'].
>> +       ((self objectClass: anObject) == lookupClass
>> +        or: [(self objectClass: anObject) inheritsFrom: lookupClass])
>> ifFalse:
>> +               [^self error: 'lookupClass is not in anObject''s
>> inheritance chain'].
>> +       self primitiveFailed!
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20100925/f9ef41b1/attachment.htm


More information about the Squeak-dev mailing list