From: Tom Tromey Date: Sun, 29 Nov 2009 20:12:13 +0000 (+0100) Subject: Change Lisp_Buffer_Local_Value representation. X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=05ae648d2fb3142c73cb003f2119975bed1b8970;p=emacs.git Change Lisp_Buffer_Local_Value representation. This doesn't change semantics but prepares the way for per-thread buffer-local bindings. --- diff --git a/src/alloc.c b/src/alloc.c index f761be4c395..54359c5accd 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5577,16 +5577,8 @@ mark_object (arg) { register struct Lisp_Buffer_Local_Value *ptr = XBUFFER_LOCAL_VALUE (obj); - /* If the cdr is nil, avoid recursion for the car. */ - if (EQ (ptr->cdr, Qnil)) - { - obj = ptr->realvalue; - goto loop; - } mark_object (ptr->realvalue); - mark_object (ptr->buffer); - mark_object (ptr->frame); - obj = ptr->cdr; + obj = ptr->cdrs; goto loop; } diff --git a/src/buffer.c b/src/buffer.c index 0b899f250d4..a666c690224 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -980,7 +980,7 @@ is the default binding of the variable. */) /* What binding is loaded right now? */ valcontents = sym->value; current_alist_element - = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); + = XCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)); /* The value of the currently loaded binding is not stored in it, but rather in the realvalue slot. @@ -2688,7 +2688,7 @@ swap_out_buffer_local_variables (b) && (sym = XCAR (XCAR (alist)), SYMBOLP (sym)) /* Need not do anything if some other buffer's binding is now encached. */ - && EQ (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->buffer, + && EQ (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->cdrs), buffer)) { /* Symbol is set up for this buffer's old local value: diff --git a/src/data.c b/src/data.c index da74750952a..a2ae1d6f33e 100644 --- a/src/data.c +++ b/src/data.c @@ -1089,7 +1089,7 @@ swap_in_global_binding (symbol) { Lisp_Object valcontents = SYMBOL_VALUE (symbol); struct Lisp_Buffer_Local_Value *blv = XBUFFER_LOCAL_VALUE (valcontents); - Lisp_Object cdr = blv->cdr; + Lisp_Object cdr = BLOCAL_CDR (blv->cdrs); /* Unload the previously loaded binding. */ Fsetcdr (XCAR (cdr), @@ -1100,10 +1100,9 @@ swap_in_global_binding (symbol) store_symval_forwarding (symbol, blv->realvalue, XCDR (cdr), NULL); /* Indicate that the global binding is set up now. */ - blv->frame = Qnil; - blv->buffer = Qnil; - blv->found_for_frame = 0; - blv->found_for_buffer = 0; + BLOCAL_FRAME (blv->cdrs) = Qnil; + BLOCAL_BUFFER (blv->cdrs) = Qnil; + BLOCAL_CLEAR_FLAGS (blv->cdrs); } /* Set up the buffer-local symbol SYMBOL for validity in the current buffer. @@ -1119,12 +1118,12 @@ swap_in_symval_forwarding (symbol, valcontents) { register Lisp_Object tem1; - tem1 = XBUFFER_LOCAL_VALUE (valcontents)->buffer; + tem1 = BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); if (NILP (tem1) || current_buffer != XBUFFER (tem1) || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame - && ! EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame))) + && ! EQ (selected_frame, BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)))) { struct Lisp_Symbol *sym = XSYMBOL (symbol); if (sym->indirect_variable) @@ -1134,29 +1133,28 @@ swap_in_symval_forwarding (symbol, valcontents) } /* Unload the previously loaded binding. */ - tem1 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); + tem1 = XCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)); Fsetcdr (tem1, do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue)); /* Choose the new binding. */ tem1 = assq_no_quit (symbol, BUF_LOCAL_VAR_ALIST (current_buffer)); - XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 0; - XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; + BLOCAL_CLEAR_FLAGS (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); if (NILP (tem1)) { if (XBUFFER_LOCAL_VALUE (valcontents)->check_frame) tem1 = assq_no_quit (symbol, XFRAME (selected_frame)->param_alist); if (! NILP (tem1)) - XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 1; + BLOCAL_SET_FOUND_FOR_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); else - tem1 = XBUFFER_LOCAL_VALUE (valcontents)->cdr; + tem1 = BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); } else - XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 1; + BLOCAL_SET_FOUND_FOR_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); /* Load the new binding. */ - XSETCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr, tem1); - XSETBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer, current_buffer); - XBUFFER_LOCAL_VALUE (valcontents)->frame = selected_frame; + XSETCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs), tem1); + XSETBUFFER (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs), current_buffer); + BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs) = selected_frame; store_symval_forwarding (symbol, XBUFFER_LOCAL_VALUE (valcontents)->realvalue, Fcdr (tem1), NULL); @@ -1282,17 +1280,17 @@ set_internal (symbol, newval, buf, bindflag) /* What binding is loaded right now? */ current_alist_element - = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); + = XCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)); /* If the current buffer is not the buffer whose binding is loaded, or if there may be frame-local bindings and the frame isn't the right one, or if it's a Lisp_Buffer_Local_Value and the default binding is loaded, the loaded binding may be the wrong one. */ - if (!BUFFERP (XBUFFER_LOCAL_VALUE (valcontents)->buffer) - || buf != XBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer) + if (!BUFFERP (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)) + || buf != XBUFFER (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)) || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame - && !EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame)) + && !EQ (selected_frame, BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs))) /* Also unload a global binding (if the var is local_if_set). */ || (EQ (XCAR (current_alist_element), current_alist_element))) @@ -1306,8 +1304,7 @@ set_internal (symbol, newval, buf, bindflag) /* Find the new binding. */ tem1 = Fassq (symbol, BUF_LOCAL_VAR_ALIST (buf)); - XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 1; - XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 0; + BLOCAL_SET_FOUND_FOR_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); if (NILP (tem1)) { @@ -1322,16 +1319,16 @@ set_internal (symbol, newval, buf, bindflag) if (bindflag || !XBUFFER_LOCAL_VALUE (valcontents)->local_if_set || let_shadows_buffer_binding_p (XSYMBOL (symbol))) { - XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; + BLOCAL_CLEAR_FLAGS (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); if (XBUFFER_LOCAL_VALUE (valcontents)->check_frame) tem1 = Fassq (symbol, XFRAME (selected_frame)->param_alist); if (! NILP (tem1)) - XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 1; + BLOCAL_SET_FOUND_FOR_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); else - tem1 = XBUFFER_LOCAL_VALUE (valcontents)->cdr; + tem1 = BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); } /* If it's a Lisp_Buffer_Local_Value, being set not bound, and we're not within a let that was made for this buffer, @@ -1347,16 +1344,16 @@ set_internal (symbol, newval, buf, bindflag) } /* Record which binding is now loaded. */ - XSETCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr, tem1); + XSETCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs), tem1); /* Set `buffer' and `frame' slots for the binding now loaded. */ - XSETBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer, buf); - XBUFFER_LOCAL_VALUE (valcontents)->frame = selected_frame; + XSETBUFFER (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs), buf); + BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs) = selected_frame; } innercontents = XBUFFER_LOCAL_VALUE (valcontents)->realvalue; /* Store the new value in the cons-cell. */ - XSETCDR (XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr), newval); + XSETCDR (XCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)), newval); } /* If storing void (making the symbol void), forward only through @@ -1401,12 +1398,12 @@ default_value (symbol) ordinary setq stores just that slot. So use that. */ Lisp_Object current_alist_element, alist_element_car; current_alist_element - = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); + = XCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)); alist_element_car = XCAR (current_alist_element); if (EQ (alist_element_car, current_alist_element)) return do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue); else - return XCDR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); + return XCDR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)); } /* For other variables, get the current value. */ return do_symval_forwarding (valcontents); @@ -1481,11 +1478,11 @@ for this variable. */) return Fset (symbol, value); /* Store new value into the DEFAULT-VALUE slot. */ - XSETCDR (XBUFFER_LOCAL_VALUE (valcontents)->cdr, value); + XSETCDR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs), value); /* If the default binding is now loaded, set the REALVALUE slot too. */ current_alist_element - = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); + = XCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)); alist_element_buffer = Fcar (current_alist_element); if (EQ (alist_element_buffer, current_alist_element)) store_symval_forwarding (symbol, @@ -1573,6 +1570,9 @@ The function `default-value' gets the default value and `set-default' sets it. } else { + Lisp_Object len, val_vec; + XSETFASTINT (len, 4); + val_vec = Fmake_vector (len, Qnil); if (EQ (valcontents, Qunbound)) sym->value = Qnil; tem = Fcons (Qnil, Fsymbol_value (variable)); @@ -1580,12 +1580,12 @@ The function `default-value' gets the default value and `set-default' sets it. newval = allocate_misc (); XMISCTYPE (newval) = Lisp_Misc_Buffer_Local_Value; XBUFFER_LOCAL_VALUE (newval)->realvalue = sym->value; - XBUFFER_LOCAL_VALUE (newval)->buffer = Fcurrent_buffer (); - XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; - XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0; - XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; + BLOCAL_CLEAR_FLAGS (val_vec); + BLOCAL_BUFFER (val_vec) = Fcurrent_buffer (); + BLOCAL_FRAME (val_vec) = Qnil; + BLOCAL_CDR (val_vec) = tem; XBUFFER_LOCAL_VALUE (newval)->check_frame = 0; - XBUFFER_LOCAL_VALUE (newval)->cdr = tem; + XBUFFER_LOCAL_VALUE (newval)->cdrs = val_vec; sym->value = newval; } XBUFFER_LOCAL_VALUE (newval)->local_if_set = 1; @@ -1641,19 +1641,21 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */) /* Make sure symbol is set up to hold per-buffer values. */ if (!BUFFER_LOCAL_VALUEP (valcontents)) { - Lisp_Object newval; + Lisp_Object newval, len, val_vec; + XSETFASTINT (len, 4); + val_vec = Fmake_vector (len, Qnil); tem = Fcons (Qnil, do_symval_forwarding (valcontents)); XSETCAR (tem, tem); newval = allocate_misc (); XMISCTYPE (newval) = Lisp_Misc_Buffer_Local_Value; XBUFFER_LOCAL_VALUE (newval)->realvalue = sym->value; - XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil; - XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; + BLOCAL_CDR (val_vec); + BLOCAL_BUFFER (val_vec) = Qnil; + BLOCAL_FRAME (val_vec) = Qnil; + BLOCAL_CDR (val_vec) = tem; XBUFFER_LOCAL_VALUE (newval)->local_if_set = 0; - XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0; - XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; XBUFFER_LOCAL_VALUE (newval)->check_frame = 0; - XBUFFER_LOCAL_VALUE (newval)->cdr = tem; + XBUFFER_LOCAL_VALUE (newval)->cdrs = val_vec; sym->value = newval; } /* Make sure this buffer has its own value of symbol. */ @@ -1667,7 +1669,7 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */) find_symbol_value (variable); BUF_LOCAL_VAR_ALIST (current_buffer) - = Fcons (Fcons (variable, XCDR (XBUFFER_LOCAL_VALUE (sym->value)->cdr)), + = Fcons (Fcons (variable, XCDR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (sym->value)->cdrs))), BUF_LOCAL_VAR_ALIST (current_buffer)); /* Make sure symbol does not think it is set up for this buffer; @@ -1677,10 +1679,10 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */) valcontents = sym->value; - pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer; + pvalbuf = &BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); if (current_buffer == XBUFFER (*pvalbuf)) *pvalbuf = Qnil; - XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; + BLOCAL_CLEAR_FLAGS (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); } } @@ -1740,12 +1742,12 @@ From now on the default value will apply in this buffer. Return VARIABLE. */) { Lisp_Object *pvalbuf, buf; valcontents = sym->value; - pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer; + pvalbuf = &BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); XSETBUFFER (buf, current_buffer); if (EQ (buf, *pvalbuf)) { *pvalbuf = Qnil; - XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; + BLOCAL_CLEAR_FLAGS (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); find_symbol_value (variable); } } @@ -1780,7 +1782,7 @@ frame-local bindings). */) (variable) register Lisp_Object variable; { - register Lisp_Object tem, valcontents, newval; + register Lisp_Object tem, valcontents, newval, val_vec, len; struct Lisp_Symbol *sym; CHECK_SYMBOL (variable); @@ -1803,15 +1805,17 @@ frame-local bindings). */) tem = Fcons (Qnil, Fsymbol_value (variable)); XSETCAR (tem, tem); newval = allocate_misc (); + XSETFASTINT (len, 4); + val_vec = Fmake_vector (len, Qnil); XMISCTYPE (newval) = Lisp_Misc_Buffer_Local_Value; XBUFFER_LOCAL_VALUE (newval)->realvalue = sym->value; - XBUFFER_LOCAL_VALUE (newval)->buffer = Qnil; - XBUFFER_LOCAL_VALUE (newval)->frame = Qnil; + BLOCAL_CLEAR_FLAGS (val_vec); + BLOCAL_BUFFER (val_vec) = Qnil; + BLOCAL_FRAME (val_vec) = Qnil; + BLOCAL_CDR (val_vec) = tem; XBUFFER_LOCAL_VALUE (newval)->local_if_set = 0; - XBUFFER_LOCAL_VALUE (newval)->found_for_buffer = 0; - XBUFFER_LOCAL_VALUE (newval)->found_for_frame = 0; XBUFFER_LOCAL_VALUE (newval)->check_frame = 1; - XBUFFER_LOCAL_VALUE (newval)->cdr = tem; + XBUFFER_LOCAL_VALUE (newval)->cdrs = val_vec; sym->value = newval; return variable; } @@ -1936,8 +1940,8 @@ If the current binding is global (the default), the value is nil. */) if (!NILP (Flocal_variable_p (variable, Qnil))) return Fcurrent_buffer (); else if (BUFFER_LOCAL_VALUEP (valcontents) - && XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame) - return XBUFFER_LOCAL_VALUE (valcontents)->frame; + && BLOCAL_FOUND_FOR_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)) + return BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); } return Qnil; diff --git a/src/eval.c b/src/eval.c index d725a497457..189b0a524c9 100644 --- a/src/eval.c +++ b/src/eval.c @@ -3282,8 +3282,8 @@ specbind (symbol, value) if (!NILP (Flocal_variable_p (symbol, Qnil))) where = self_buffer; else if (BUFFER_LOCAL_VALUEP (valcontents) - && XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame) - where = XBUFFER_LOCAL_VALUE (valcontents)->frame; + && BLOCAL_FOUND_FOR_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)) + where = BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs); else where = Qnil; diff --git a/src/frame.c b/src/frame.c index c162fd7b1b4..acbb33c6e9e 100644 --- a/src/frame.c +++ b/src/frame.c @@ -2302,8 +2302,8 @@ store_frame_param (f, prop, val) valcontents = SYMBOL_VALUE (prop); if ((BUFFER_LOCAL_VALUEP (valcontents)) && XBUFFER_LOCAL_VALUE (valcontents)->check_frame - && XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame - && XFRAME (XBUFFER_LOCAL_VALUE (valcontents)->frame) == f) + && BLOCAL_FOUND_FOR_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs) + && XFRAME (BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (valcontents)->cdrs)) == f) swap_in_global_binding (prop); } diff --git a/src/lisp.h b/src/lisp.h index 0d27c55efce..657a1949003 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1335,17 +1335,17 @@ struct Lisp_Buffer_Local_Value unsigned int check_frame : 1; /* 1 means that the binding now loaded was found as a local binding for the buffer in the `buffer' slot. */ - unsigned int found_for_buffer : 1; + /* unsigned int found_for_buffer : 1; */ /* 1 means that the binding now loaded was found as a local binding for the frame in the `frame' slot. */ - unsigned int found_for_frame : 1; + /* unsigned int found_for_frame : 1; */ Lisp_Object realvalue; /* The buffer and frame for which the loaded binding was found. */ /* Having both is only needed if we want to allow variables that are both buffer local and frame local (in which case, we currently give precedence to the buffer-local binding). I don't think such a combination is desirable. --Stef */ - Lisp_Object buffer, frame; + /* Lisp_Object buffer, frame; */ /* A cons cell, (LOADED-BINDING . DEFAULT-VALUE). @@ -1359,9 +1359,20 @@ struct Lisp_Buffer_Local_Value bindings for the variable. When the default binding is loaded, LOADED-BINDING is actually this very cons cell; thus, its car points to itself. */ - Lisp_Object cdr; + /* Lisp_Object cdr; */ + + Lisp_Object cdrs; }; +#define BLOCAL_CLEAR_FLAGS(VEC) XSETFASTINT (AREF ((VEC), 0), 0) +#define BLOCAL_FOUND_FOR_BUFFER(VEC) ((XFASTINT (AREF ((VEC), 0))) == 1) +#define BLOCAL_SET_FOUND_FOR_BUFFER(VEC) XSETFASTINT (AREF ((VEC), 0), 1) +#define BLOCAL_FOUND_FOR_FRAME(VEC) ((XFASTINT (AREF ((VEC), 0))) == 2) +#define BLOCAL_SET_FOUND_FOR_FRAME(VEC) XSETFASTINT (AREF ((VEC), 0), 2) +#define BLOCAL_BUFFER(VEC) (AREF ((VEC), 1)) +#define BLOCAL_FRAME(VEC) (AREF ((VEC), 2)) +#define BLOCAL_CDR(VEC) (AREF ((VEC), 3)) + /* START and END are markers in the overlay's buffer, and PLIST is the overlay's property list. */ struct Lisp_Overlay diff --git a/src/print.c b/src/print.c index d8815ec4014..f325ee1edd8 100644 --- a/src/print.c +++ b/src/print.c @@ -2307,26 +2307,26 @@ print_object (obj, printcharfun, escapeflag) strout ("[realvalue] ", -1, -1, printcharfun, 0); print_object (XBUFFER_LOCAL_VALUE (obj)->realvalue, printcharfun, escapeflag); - if (XBUFFER_LOCAL_VALUE (obj)->found_for_buffer) + if (BLOCAL_FOUND_FOR_BUFFER (XBUFFER_LOCAL_VALUE (obj)->cdrs)) strout ("[local in buffer] ", -1, -1, printcharfun, 0); else strout ("[buffer] ", -1, -1, printcharfun, 0); - print_object (XBUFFER_LOCAL_VALUE (obj)->buffer, + print_object (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (obj)->cdrs), printcharfun, escapeflag); if (XBUFFER_LOCAL_VALUE (obj)->check_frame) { - if (XBUFFER_LOCAL_VALUE (obj)->found_for_frame) + if (BLOCAL_FOUND_FOR_FRAME (XBUFFER_LOCAL_VALUE (obj)->cdrs)) strout ("[local in frame] ", -1, -1, printcharfun, 0); else strout ("[frame] ", -1, -1, printcharfun, 0); - print_object (XBUFFER_LOCAL_VALUE (obj)->frame, + print_object (BLOCAL_FRAME (XBUFFER_LOCAL_VALUE (obj)->cdrs), printcharfun, escapeflag); } strout ("[alist-elt] ", -1, -1, printcharfun, 0); - print_object (XCAR (XBUFFER_LOCAL_VALUE (obj)->cdr), + print_object (XCAR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (obj)->cdrs)), printcharfun, escapeflag); strout ("[default-value] ", -1, -1, printcharfun, 0); - print_object (XCDR (XBUFFER_LOCAL_VALUE (obj)->cdr), + print_object (XCDR (BLOCAL_CDR (XBUFFER_LOCAL_VALUE (obj)->cdrs)), printcharfun, escapeflag); PRINTCHAR ('>'); break;