LargePositiveInteger into a plugin

John M McIntosh johnmci at smalltalkconsulting.com
Wed Aug 9 21:09:10 UTC 2006


We do this all the time for the file system since it supports 64 bit  
pointers.
Mind does the operating system file system support 64 bit offsets,  
but that is a different question.

Trick is to pass the oop as an oops, then convert to a longlong  or  
long as needed.

longlongThing := interpreterProxy  signed64BitValueOf: oop

on return convert the longlong to an oops

oop := interpreterProxy positive64BitIntegerFor: size
or if it's a long
oop = interpreterProxy positive32BitIntegerFor: size

beware that asking for a positive64BitIntegerFor: might cause a VM  
memory allocation and swizzle earlier allocated oops, if you don't
understand that please review usage's of pushRemappableOop:/ 
popRemappableOop: to understand the dangers.

Note there is signed converters too

signed64BitIntegerFor:

Lastly I'm sure I recall earlier this year someone pointed out  
converting a large negative integer did the wrong thing, so which VM  
you use
and when it was compiled with which version of VMMaker may play a  
role here.

I recall having a hand in writing the original code, but my Sunits  
for checking the passing of longlong to the file system only
considered positive integers, thus missing the conversion error for  
negative longlong.



On 9-Aug-06, at 1:41 PM, Bruno Luca wrote:

> Hello,
> i've a SmartSyntaxInterpreterPlugin with this method:
>
> primitiveName
> 	self primitive: 'primitiveName' parameters: #(SmallInteger)
>
> But i need to pass a LargePositiveInteger not a SmallInteger, i  
> really don't know how to do it. If i put parameters: # 
> (LargePositiveInteger) i think it's not the right way since the  
> primitive fails.
> Any suggestion?
>
> Thanks.
>
> -- 
> www.lethalman.net - Thoughts about internet technologies
>

--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===





More information about the Squeak-dev mailing list