Changeset 14143
- Timestamp:
- Aug 5, 2010, 7:29:39 AM (14 years ago)
- File:
-
- 1 edited
-
trunk/source/lisp-kernel/x86-constants64.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/x86-constants64.h
r13627 r14143 256 256 /* The objects themselves look something like this: */ 257 257 258 /* Order of CAR and CDR doesn't seem to matter much - there aren't */259 /* too many tricks to be played with predecrement/preincrement addressing. */260 /* Keep them in the confusing MCL 3.0 order, to avoid confusion. */261 262 typedef struct cons {263 LispObj cdr;264 LispObj car;265 } cons;266 267 268 269 typedef struct lispsymbol {270 LispObj header;271 LispObj pname;272 LispObj vcell;273 LispObj fcell;274 LispObj package_predicate;275 LispObj flags;276 LispObj plist;277 LispObj binding_index;278 } lispsymbol;279 280 typedef struct ratio {281 LispObj header;282 LispObj numer;283 LispObj denom;284 } ratio;285 258 286 259 typedef struct double_float { … … 290 263 291 264 292 typedef struct macptr {293 LispObj header;294 LispObj address;295 LispObj class;296 LispObj type;297 } macptr;298 299 typedef struct xmacptr {300 LispObj header;301 LispObj address;302 LispObj class;303 LispObj type;304 LispObj flags;305 LispObj link;306 } xmacptr;307 308 309 310 typedef struct special_binding {311 struct special_binding *link;312 struct lispsymbol *sym;313 LispObj value;314 } special_binding;315 265 316 266 typedef struct lisp_frame { … … 338 288 339 289 340 /* The GC (at least) needs to know what a341 package looks like, so that it can do GCTWA. */342 typedef struct package {343 LispObj header;344 LispObj itab; /* itab and etab look like (vector (fixnum . fixnum) */345 LispObj etab;346 LispObj used;347 LispObj used_by;348 LispObj names;349 LispObj shadowed;350 } package;351 290 352 291 /* … … 380 319 #define fixnum_bitmask(n) (1LL<<((n)+fixnumshift)) 381 320 382 /*383 The GC (at least) needs to know about hash-table-vectors and their flag bits.384 */385 386 typedef struct hash_table_vector_header {387 LispObj header;388 LispObj link; /* If weak */389 LispObj flags; /* a fixnum; see below */390 LispObj gc_count; /* gc-count kernel global */391 LispObj free_alist; /* preallocated conses for finalization_alist */392 LispObj finalization_alist; /* key/value alist for finalization */393 LispObj weak_deletions_count; /* incremented when GC deletes weak pair */394 LispObj hash; /* backpointer to hash-table */395 LispObj deleted_count; /* number of deleted entries [not maintained if lock-free] */396 LispObj count; /* number of valid entries [not maintained if lock-free] */397 LispObj cache_idx; /* index of last cached pair */398 LispObj cache_key; /* value of last cached key */399 LispObj cache_value; /* last cached value */400 LispObj size; /* number of entries in table */401 LispObj size_reciprocal; /* shifted reciprocal of size */402 } hash_table_vector_header;403 404 /*405 Bits (masks) in hash_table_vector.flags:406 */407 408 /* GC should track keys when addresses change */409 #define nhash_track_keys_mask fixnum_bitmask(28)410 411 /* GC should set when nhash_track_keys_bit & addresses change */412 #define nhash_key_moved_mask fixnum_bitmask(27)413 414 /* weak on key or value (need new "weak both" encoding.) */415 #define nhash_weak_mask fixnum_bitmask(12)416 417 /* weak on value */418 #define nhash_weak_value_mask fixnum_bitmask(11)419 420 /* finalizable */421 #define nhash_finalizable_mask fixnum_bitmask(10)422 423 /* keys frozen, i.e. don't clobber keys, only values */424 #define nhash_keys_frozen_mask fixnum_bitmask(9)425 426 /* Lfun bits */427 428 #define lfbits_nonnullenv_mask fixnum_bitmask(0)429 #define lfbits_keys_mask fixnum_bitmask(1)430 #define lfbits_restv_mask fixnum_bitmask(7)431 #define lfbits_optinit_mask fixnum_bitmask(14)432 #define lfbits_rest_mask fixnum_bitmask(15)433 #define lfbits_aok_mask fixnum_bitmask(16)434 #define lfbits_lap_mask fixnum_bitmask(23)435 #define lfbits_trampoline_mask fixnum_bitmask(24)436 #define lfbits_evaluated_mask fixnum_bitmask(25)437 #define lfbits_cm_mask fixnum_bitmask(26) /* combined_method */438 #define lfbits_nextmeth_mask fixnum_bitmask(26) /* or call_next_method with method_mask */439 #define lfbits_gfn_mask fixnum_bitmask(27) /* generic_function */440 #define lfbits_nextmeth_with_args_mask fixnum_bitmask(27) /* or call_next_method_with_args with method_mask */441 #define lfbits_method_mask fixnum_bitmask(28) /* method function */442 /* PPC only but want it defined for xcompile */443 #define lfbits_noname_mask fixnum_bitmask(29)444 445 /*446 known values of an "extended" (gcable) macptr's flags word:447 */448 449 450 /* Creole */451 452 #define doh_quantum 400453 #define doh_block_slots ((doh_quantum >> 2) - 3)454 455 typedef struct doh_block {456 struct doh_block *link;457 unsigned size;458 unsigned free;459 LispObj data[doh_block_slots];460 } doh_block, *doh_block_ptr;461 462 463 #define population_weak_list (0<<fixnum_shift)464 #define population_weak_alist (1<<fixnum_shift)465 #define population_termination_bit (16+fixnum_shift)466 #define population_type_mask ((1<<population_termination_bit)-1)467 468 #define gc_retain_pages_bit fixnum_bitmask(0)469 #define gc_integrity_check_bit fixnum_bitmask(2)470 #define egc_verbose_bit fixnum_bitmask(3)471 #define gc_verbose_bit fixnum_bitmask(4)472 #define gc_allow_stack_overflows_bit fixnum_bitmask(5)473 #define gc_postgc_pending fixnum_bitmask(26)474 321 475 322 #include "lisp-errors.h"
Note:
See TracChangeset
for help on using the changeset viewer.
