On 11/02/2019 07:12, ToddAndMargo via perl6-users wrote:
WHERE is pretty sweet command!
$ p6 'sub a (Buf $b) { say $b.WHERE.base(0x10) }; my $c =
Buf.new(1,2,3); say $c.WHERE.base(0x10); a($c);'
7F385D41334C
7F385D41334C
On 11/02/2019 12:16, ToddAndMargo via perl6-users wrote:
On 2/11/19 2:52 AM, Timo Paulssen wrote:
Please be aware that WHERE will give you the actual memory address of an
object, but moarvm has a moving garbage collector, which means that
objects can change their memory location. at the moment it will only
happen up to two times, i believe.
you'll probably have a better result with .WHICH for what you want to
achieve.
>>
>> $ p6 'sub a (Buf $b) { say $b.WHICH.base(0x10) }; my $c =
>> Buf.new(1,2,3); say $c.WHICH.base(0x10); a($c);'
>> No such method 'base' for invocant of type 'ObjAt'. Did you mean any
>> of these?
>> Hash
>> hash
>> take
>>
>> in block <unit> at -e line 1
>>
>>
On 2/11/19 3:27 AM, Timo Paulssen wrote:
> WHICH doesn't give you a numerical value. just print it as it is.
$ p6 'sub a (Buf $b) { say $b.WHICH }; my $c = Buf.new(1,2,3); say
$c.WHICH; a($c);'
Buf|71848984
Buf|71848984
If "moarvm has a moving garbage collector" moves my 100 MB+ buffer
around, "I am in a heap of trouble".