comparison src/bytecode.c @ 39573:b17103d5e3c8

(Fbyte_code) <varref>: Use SYMBOL_VALUE. (Fbyte_code) <varset>: Simplify the test if symbol's value can be set directly.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 05 Oct 2001 09:43:06 +0000
parents d7378777b985
children 4baf64844f9c
comparison
equal deleted inserted replaced
39572:715a67381594 39573:b17103d5e3c8
518 Lisp_Object v1, v2; 518 Lisp_Object v1, v2;
519 519
520 v1 = vectorp[op]; 520 v1 = vectorp[op];
521 if (SYMBOLP (v1)) 521 if (SYMBOLP (v1))
522 { 522 {
523 v2 = XSYMBOL (v1)->value; 523 v2 = SYMBOL_VALUE (v1);
524 if (MISCP (v2) || EQ (v2, Qunbound)) 524 if (MISCP (v2) || EQ (v2, Qunbound))
525 { 525 {
526 BEFORE_POTENTIAL_GC (); 526 BEFORE_POTENTIAL_GC ();
527 v2 = Fsymbol_value (v1); 527 v2 = Fsymbol_value (v1);
528 AFTER_POTENTIAL_GC (); 528 AFTER_POTENTIAL_GC ();
624 val = TOP; 624 val = TOP;
625 625
626 /* Inline the most common case. */ 626 /* Inline the most common case. */
627 if (SYMBOLP (sym) 627 if (SYMBOLP (sym)
628 && !EQ (val, Qunbound) 628 && !EQ (val, Qunbound)
629 && !MISCP (XSYMBOL (sym)->value) 629 && !XSYMBOL (sym)->indirect_variable
630 /* I think this should either be checked in the byte 630 && !XSYMBOL (sym)->constant
631 compiler, or there should be a flag indicating that 631 && !MISCP (XSYMBOL (sym)->value))
632 a symbol might be constant in Lisp_Symbol, instead
633 of checking this here over and over again. --gerd. */
634 && !EQ (sym, Qnil)
635 && !EQ (sym, Qt)
636 && !(XSYMBOL (sym)->name->data[0] == ':'
637 && EQ (XSYMBOL (sym)->obarray, initial_obarray)
638 && !EQ (val, sym)))
639 XSYMBOL (sym)->value = val; 632 XSYMBOL (sym)->value = val;
640 else 633 else
641 { 634 {
642 BEFORE_POTENTIAL_GC (); 635 BEFORE_POTENTIAL_GC ();
643 set_internal (sym, val, current_buffer, 0); 636 set_internal (sym, val, current_buffer, 0);