New arm architecture detection scheme.
Needs testing on armv6.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15802 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Start somewhere.  (Some of this was actually started over a year
ago and the content's a bit stale.  Hopefully it'll be a lot
easier to maintain.)


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15803 8bdb8f1d-59ce-db11-9e41-0016172a54ae
More of the same ...


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15804 8bdb8f1d-59ce-db11-9e41-0016172a54ae
New! Improved! (Well, converted to LyX, at least.)


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15807 8bdb8f1d-59ce-db11-9e41-0016172a54ae
METHOD-LAMBDA-P: don't choke on malformed lambda lists
VERIFY-LAMBDA-LIST: explicit LISTP check, so that error message might
 be clearer in some cases.
NX1-FLET: verify lambda list even if local function isn't referenced.
 Be more explicit about error context if verification failed.
NX1-LABELS:  Be more explicit about error context if verification failed.

Fixes ticket:1084 in the trunk.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15809 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Again, without stray #\o.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15810 8bdb8f1d-59ce-db11-9e41-0016172a54ae
work in progress; may discard this.  Maintain the global 'ephemeral_ref'
in x86 write-barriers.  (Other platforms - and the rest of this - to follow.)


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15811 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Maintain ephemeral_ref in ARM write barrier.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15812 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Maintain ephemeral_ref in PPC write barrier.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15813 8bdb8f1d-59ce-db11-9e41-0016172a54ae
arm-exceptions.c, x86-exceptions.c, ppc-exceptions.c: if we set an
 egc refbit, set ephemeral_ref.
memory.c: clear ephermal_ref when zeroing refbits if managed_static_area
 empty.  Screw: need two booleans.
gc.h, gc-common.c: mark_memoized_area returns a boolean.  Only
 process (mark-,forward-) memoized area if ephemeral_ref is true.

As indicated above: if this idea (only process the refmap if there's
reason to believe that it contains an ephemeral reference) is worthwhile,
it's likely to be a better idea to maintain two flags in the write barrier
on platforms where we use a managed static area.

For now, see if this has the intended effect.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15814 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Indeed, discard last idea: good when applicable, but not always
applicable.  Start to implement new idea.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15815 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Start new scheme: maintain a second bitmap with 1 bit for every 256
in the global ephemeral refmap.  (According too my calculations, this
should  be ... 256X smaller than the refmap and should be easier to
traverse on machines with relatively small caches.

So far, we just allocate it (at overestimated maximum size) and map
it all read/write.   Maintain this in the write barrier on x86 (so far)
and in pc_luser_xp's emulation of the write barrier

Todo: map at correct size and associate with managed_static
and tenured areas, and actually traverse this.

Last commit added  a kernel global to support this.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15816 8bdb8f1d-59ce-db11-9e41-0016172a54ae
New write-barrier for PPC.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15817 8bdb8f1d-59ce-db11-9e41-0016172a54ae
ARM write-barrier changes.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15818 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Spell "bit" with an #\i.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15819 8bdb8f1d-59ce-db11-9e41-0016172a54ae
split the refidx into dynamic, managed_static parts.
(Still need to handle lowering tenured area for static conses.)
Make check_refmap_consistency check the refidx.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15820 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Handle null refidx when checking refmap consistency.
Don't call memset() in zero_bits.
zero out refmaps/refidx's when tenuring to tenured area.  (Should
use indices to find set bits in maps; shouldn't usually be many.)


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15821 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Bother to maintain refidx in _SPstore_node_conditional.
Preserve temp2 in _SPstore_node_conditional, _SPset_hash_key conditional;
Use unboxed temp2 to determine ea in pc_luser_xp for those subprims.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15822 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Still not working; may not be for another few days.
Will create a branch for this and revert trunk.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15823 8bdb8f1d-59ce-db11-9e41-0016172a54ae
Revert to r15810.


git-svn-id: http://svn.clozure.com/publicsvn/openmcl/trunk/source@15826 8bdb8f1d-59ce-db11-9e41-0016172a54ae