Alpha VM on Solaris UltraSPARC?
Lee Salzman
lsalzman1 at cox.net
Fri Mar 11 15:43:44 PST 2005
The problem there is dispatchID is a 64 bit integer. However, GCC
generates a particular 64 bit load store requires dispatchID to be
aligned to an 8 byte address, which the Slate heap can't guarentee. You
just need to replace the dispatchID stores with some sort of byte-wise
store that GCC won't optimize into the aligned store.
Lee
Nick Forde wrote:
> I'm having some trouble running the slate alpha vm and bootstrap image
> on a Sun workstation - it core dumps loading the image. Should the vm
> run on this architecture?
>
> I've appended some debug information in case this is of use.
>
> Regards,
>
> Nick.
>
>
> $ uname -a
> SunOS 5.8 Generic_108528-29 sun4u sparc SUNW,Sun-Fire-880
>
> (gdb) where
> #0 0x0001d20c in ObjectPointer_dispatchTo_arity_above_ (name=582768,
> arguments=0xc8148, n=1, resendMethod=0) at ../../../../../vm.c:2920
> #1 0x0001ddb4 in PSInterpreter_send_to_through_arity_withOptionals_
> (i=0xc8174, selector=582768, args=0xc8148, dispatchers=0xc8148, n=1,
> opts=0x0)
> at ../../../../../vm.c:3128
> #2 0x00025574 in PSInterpreter_sendMessage_withOptionals_ (i=0xc8174,
> n=1, opts=0x0) at ../../../../../vm.c:1045
> #3 0x0001f4dc in PSInterpreter_interpret (i=0xc8174) at
> ../../../../../vm.c:3495
> #4 0x00014600 in slateMain (argc=2, argv=0xffbef6fc) at ../boot.c:140
> #5 0x00016e00 in main (argc=2, argv=0xffbef6fc) at main.c:5
>
> (gdb) list
> 2915 else
> 2916 obj = ObjectPointer_pointer(arg);
> 2917 map = obj -> map;
> 2918 if (!(map -> dispatchID == currentDispatchID))
> 2919 {
> 2920 map -> dispatchID = currentDispatchID;
> 2921 map -> visitedPositions = 0;
> 2922 }
> 2923 if (((map -> visitedPositions & (1 << index)) ==
> 0) && (((map -> flags & MapFlagRestrictDelegation) == 0) ||
> (restricted < 0)))
> 2924 {
>
> (gdb) p *obj
> $5 = {header = {isMarked = 1, idHash = 299, objectSize = 5,
> objectFormat = 0}, map = 0xd1c14}
>
> (gdb) p *map
> $2 = {header = {isMarked = 1, idHash = 14101, objectSize = 9,
> objectFormat = 2}, map = 0xd42bc, traits = 265112, flags = 1,
> representative = 264808,
> numDelegates = 7, numSlots = 1, slotTable = 0xd1c48, roleTable =
> 0xd1c78, visitedPositions = 0, dispatchID = 0}
>
> (gdb) p map->dispatchID
> $1 = 0
>
> (gdb) p currentDispatchID
> $2 = 1
>
>
More information about the Slate
mailing list