Changeset 13015


Ignore:
Timestamp:
Oct 14, 2009, 4:25:26 AM (10 years ago)
Author:
rme
Message:

If an object in not in a dynamic areas, refuse to watch it. Make
WATCH return NIL in such a case.

File:
1 edited

Legend:

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

    r13002 r13015  
    37353735    size = uvector_total_size_in_bytes(noderef);
    37363736
    3737   if (object_area && object_area->code != AREA_WATCHED) {
     3737  if (object_area && object_area->code == AREA_DYNAMIC) {
    37383738    area *a = new_watched_area(size);
    37393739    LispObj old = object;
     
    37483748    wp_update_references(tcr, old, new);
    37493749    check_all_areas(tcr);
     3750    return 1;
    37503751  }
    37513752  return 0;
     
    37913792  LispObj selector = xpGPR(xp,Iimm0);
    37923793  LispObj object = xpGPR(xp, Iarg_z);
     3794  signed_natural result;
    37933795 
    37943796  switch (selector) {
    37953797    case WATCH_TRAP_FUNCTION_WATCH:
    3796       gc_like_from_xp(xp, watch_object, object);
     3798      result = gc_like_from_xp(xp, watch_object, object);
     3799      if (result == 0)
     3800        xpGPR(xp,Iarg_z) = lisp_nil;
    37973801      break;
    37983802    case WATCH_TRAP_FUNCTION_UNWATCH:
Note: See TracChangeset for help on using the changeset viewer.