gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gcl-devel] HEAD and GBC on Windows.


From: Camm Maguire
Subject: Re: [Gcl-devel] HEAD and GBC on Windows.
Date: 16 Dec 2005 10:34:00 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!

"Mike Thomas" <address@hidden> writes:

> Hi Camm. 
> 
> | > Following your overnight advice I set base in unexnt.c to
> | > DBEGIN+PAGESIZE*500 rather than DBEGIN which puts DBEGIN below the 
> | > DBEGIN+start
> | > of the heap sufficiently to avoid that early call to GBC.
> | > 
> | 
> | Great!
> | 
> | > raw_pre_gcl.exe then barfs in the first find_package due to 
> | a problem 
> | > in the check_package_designator() macro.
> | > 
> | 
> | I've seen this before too, but have forgotten the cause.  It 
> | is simple if memory serves.
> 
> 
> Would you agee that the sequence below is wrong, specifically the part
> where set_type_of alters the value of *(object*) obj.
> 
> The new value of 0x80090000 is above the immediate fixnum configuration
> constant and so causes the later problem with find_package.
> 

Is it possible the endianness of your system is being incorrectly
determined by configure?  This is goeverned by the LITTLE_END C macro.
Briefly, cvs head now determines the object type from the first word
indirected by each object pointer.  Cons are even, 8 byte aligned
valid addresses in the heap, or immediate fixnums.  All other types
are odd integers, indicating that they should be interpreted as a
special type word which has a type field enumerating the actual type.
I.e. if *(unsigned *)obj is odd (and not an imm fixnum), then the type is

obj->d.t 

otherwise

obj->c.c_cdr

is either another object, or an imm fixnum.


You can look at obj->d in gdb.  obj->d.e should be set for non-cons
objects as is the case here.  This should be the least significant
bit, but it appears that the most significant is set in your case.

Take care,


> ==========================================================
> Breakpoint 3, alloc_object (t=t_string) at alloc.c:364
> 364             if ((obj=maybe_alloc_on_stack(tm->tm_size,t))) {
> (gdb) s
> 370             CHECK_INTERRUPT;
> (gdb) n
> 372             obj = tm->tm_free;
> (gdb) n
> 373             if (obj == OBJNULL) {
> (gdb) n
> 389             tm->tm_free = OBJ_LINK(obj);
> (gdb) s
> 390             --(tm->tm_nfree);
> (gdb) obj->c.c_cdr
> Undefined command: "obj-".  Try "help".
> (gdb) p obj->c.c_cdr
> $1 = 0xa0170000
> (gdb) p *(object *) obj
> $2 = 0xa0170000
> (gdb) n
> 391             (tm->tm_nused)++;
> (gdb) n
> 392             set_type_of(obj,t);/*FIXME try removing this*/
> (gdb) s
> 393             return(obj);
> (gdb) p *(object *) obj
> $3 = 0x80090000
> (gdb) p obj->c.c_cdr
> $4 = 0x80090000
> (gdb)
> ==========================================================
> 
> Cheers
> 
> Mike Thomas
> 
> 
> _______________________________________________
> Gcl-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/gcl-devel
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]