Ignore:
Timestamp:
Dec 15, 2008, 10:28:35 AM (11 years ago)
Author:
gb
Message:

x86 support for FLASH-FREEZE.
Use signed_natural in x86 gc-like functions.
RECURSIVE-LOCK-WHOSTATE and the RWLOCK-WHOSTATE functions: use
WITH-STANDARD-IO-SYNTAX when consing up the string. Do that in
higher-level code, to avoid early refs to CL-USER pacjage.
(In general, other things similar to RECURSIVE-LOCK-WHOSTATE are
suspect, in that they call (FORMAT NIL ...) in a random environment
where things like *PRINT-READABLY* may be in effect. There are
probably other cases of this.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-exceptions.c

    r11521 r11523  
    158158natural gc_deferred = 0, full_gc_deferred = 0;
    159159
     160signed_natural
     161flash_freeze(TCR *tcr, signed_natural param)
     162{
     163  return 0;
     164}
     165
     166
    160167Boolean
    161168handle_gc_trap(ExceptionInformation *xp, TCR *tcr)
     
    212219    }
    213220    xpGPR(xp, Iimm0) = lisp_heap_gc_threshold;
     221    break;
     222
     223  case GC_TRAP_FUNCTION_FLASH_FREEZE: /* Like freeze below, but no GC */
     224    untenure_from_area(tenured_area);
     225    gc_like_from_xp(xp,flash_freeze,0);
     226    a->active = (BytePtr) align_to_power_of_2(a->active, log2_page_size);
     227    tenured_area->static_dnodes = area_dnode(a->active, a->low);
     228    if (egc_was_enabled) {
     229      tenure_to_area(tenured_area);
     230    }
     231    xpGPR(xp, Iimm0) = tenured_area->static_dnodes << dnode_shift;
    214232    break;
    215233
     
    25962614
    25972615
    2598 int
     2616signed_natural
    25992617gc_like_from_xp(ExceptionInformation *xp,
    2600                 int(*fun)(TCR *, signed_natural),
     2618                signed_natural(*fun)(TCR *, signed_natural),
    26012619                signed_natural param)
    26022620{
     
    26622680}
    26632681
    2664 int
     2682signed_natural
    26652683purify_from_xp(ExceptionInformation *xp, signed_natural param)
    26662684{
     
    26682686}
    26692687
    2670 int
     2688signed_natural
    26712689impurify_from_xp(ExceptionInformation *xp, signed_natural param)
    26722690{
     
    26762694/* Returns #bytes freed by invoking GC */
    26772695
    2678 int
     2696signed_natural
    26792697gc_from_tcr(TCR *tcr, signed_natural param)
    26802698{
     
    26982716}
    26992717
    2700 int
     2718signed_natural
    27012719gc_from_xp(ExceptionInformation *xp, signed_natural param)
    27022720{
    2703   int status = gc_like_from_xp(xp, gc_from_tcr, param);
     2721  signed_natural status = gc_like_from_xp(xp, gc_from_tcr, param);
    27042722
    27052723  freeGCptrs();
Note: See TracChangeset for help on using the changeset viewer.