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; |
