Mercurial > emacs
comparison src/bytecode.c @ 27782:f53ecb062478
(Fbyte_code) <Bvarset>: Inline most common case.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Sun, 20 Feb 2000 15:55:38 +0000 |
parents | 9400865ec7cf |
children | 09ce77df2610 |
comparison
equal
deleted
inserted
replaced
27781:f84c7b8308c5 | 27782:f53ecb062478 |
---|---|
542 AFTER_POTENTIAL_GC (); | 542 AFTER_POTENTIAL_GC (); |
543 } | 543 } |
544 break; | 544 break; |
545 } | 545 } |
546 | 546 |
547 case Bvarset: | |
548 case Bvarset+1: | |
549 case Bvarset+2: | |
550 case Bvarset+3: | |
551 case Bvarset+4: | |
552 case Bvarset+5: | |
553 op -= Bvarset; | |
554 goto varset; | |
555 | |
547 case Bvarset+7: | 556 case Bvarset+7: |
548 op = FETCH2; | 557 op = FETCH2; |
549 goto varset; | 558 goto varset; |
550 | 559 |
551 case Bvarset: case Bvarset+1: case Bvarset+2: case Bvarset+3: | |
552 case Bvarset+4: case Bvarset+5: | |
553 op -= Bvarset; | |
554 goto varset; | |
555 | |
556 case Bvarset+6: | 560 case Bvarset+6: |
557 op = FETCH; | 561 op = FETCH; |
558 varset: | 562 varset: |
559 set_internal (vectorp[op], POP, current_buffer, 0); | 563 { |
560 /* Fset (vectorp[op], POP); */ | 564 Lisp_Object sym, val; |
565 extern int keyword_symbols_constant_flag; | |
566 | |
567 sym = vectorp[op]; | |
568 val = POP; | |
569 | |
570 /* Inline the most common case. */ | |
571 if (SYMBOLP (sym) | |
572 && !EQ (val, Qunbound) | |
573 && !MISCP (XSYMBOL (sym)->value) | |
574 /* I think this should either be checked in the byte | |
575 compiler, or there should be a flag indicating that | |
576 a symbol might be constant in Lisp_Symbol, instead | |
577 of checking this here over and over again. --gerd. */ | |
578 && !EQ (sym, Qnil) | |
579 && !EQ (sym, Qt) | |
580 && !(XSYMBOL (sym)->name->data[0] == ':' | |
581 && EQ (XSYMBOL (sym)->obarray, initial_obarray) | |
582 && keyword_symbols_constant_flag | |
583 && !EQ (val, sym))) | |
584 XSYMBOL (sym)->value = val; | |
585 else | |
586 set_internal (sym, val, current_buffer, 0); | |
587 } | |
561 break; | 588 break; |
562 | 589 |
563 case Bdup: | 590 case Bdup: |
564 { | 591 { |
565 Lisp_Object v1; | 592 Lisp_Object v1; |