Changeset 11329
- Timestamp:
- 09/30/08 20:57:17 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/j/src/org/armedbear/lisp/Closure.java
r11328 r11329 420 420 } 421 421 422 private final void bindParameters(int arityValue, 423 Environment ext, 424 LispThread thread) 422 private final LispObject bindParametersAndExecute(int arityValue, 423 Environment ext, 424 LispThread thread, 425 SpecialBinding lastSpecialBinding) 425 426 throws ConditionThrowable 426 427 { … … 436 437 if (auxVars != null) 437 438 bindAuxVars(ext, thread); 439 try 440 { 441 return progn(body, ext, thread); 442 } 443 finally 444 { 445 thread.lastSpecialBinding = lastSpecialBinding; 446 } 438 447 } 439 448 … … 463 472 Environment ext = new Environment(environment); 464 473 bindRequiredParameters(ext, thread, arg); 465 bindParameters(minArgs, ext, thread); 466 try 467 { 468 return progn(body, ext, thread); 469 } 470 finally 471 { 472 thread.lastSpecialBinding = lastSpecialBinding; 473 } 474 return bindParametersAndExecute(minArgs, ext, thread, 475 lastSpecialBinding); 474 476 } 475 477 else … … 488 490 Environment ext = new Environment(environment); 489 491 bindRequiredParameters(ext, thread, first, second); 490 bindParameters(minArgs, ext, thread); 491 try 492 { 493 return progn(body, ext, thread); 494 } 495 finally 496 { 497 thread.lastSpecialBinding = lastSpecialBinding; 498 } 492 return bindParametersAndExecute(minArgs, ext, thread, 493 lastSpecialBinding); 499 494 } 500 495 else … … 514 509 Environment ext = new Environment(environment); 515 510 bindRequiredParameters(ext, thread, first, second, third); 516 bindParameters(minArgs, ext, thread); 517 try 518 { 519 return progn(body, ext, thread); 520 } 521 finally 522 { 523 thread.lastSpecialBinding = lastSpecialBinding; 524 } 511 return bindParametersAndExecute(minArgs, ext, thread, 512 lastSpecialBinding); 525 513 } 526 514 else … … 540 528 Environment ext = new Environment(environment); 541 529 bindRequiredParameters(ext, thread, first, second, third, fourth); 542 bindParameters(minArgs, ext, thread); 543 try 544 { 545 return progn(body, ext, thread); 546 } 547 finally 548 { 549 thread.lastSpecialBinding = lastSpecialBinding; 550 } 530 return bindParametersAndExecute(minArgs, ext, thread, 531 lastSpecialBinding); 551 532 } 552 533 else … … 568 549 bindRequiredParameters(ext, thread, first, second, third, fourth, 569 550 fifth); 570 bindParameters(minArgs, ext, thread); 571 try 572 { 573 return progn(body, ext, thread); 574 } 575 finally 576 { 577 thread.lastSpecialBinding = lastSpecialBinding; 578 } 551 return bindParametersAndExecute(minArgs, ext, thread, 552 lastSpecialBinding); 579 553 } 580 554 else … … 596 570 bindRequiredParameters(ext, thread, first, second, third, fourth, 597 571 fifth, sixth); 598 bindParameters(minArgs, ext, thread); 599 try 600 { 601 return progn(body, ext, thread); 602 } 603 finally 604 { 605 thread.lastSpecialBinding = lastSpecialBinding; 606 } 572 return bindParametersAndExecute(minArgs, ext, thread, 573 lastSpecialBinding); 607 574 } 608 575 else … … 626 593 bindRequiredParameters(ext, thread, first, second, third, fourth, 627 594 fifth, sixth, seventh); 628 bindParameters(minArgs, ext, thread); 629 try 630 { 631 return progn(body, ext, thread); 632 } 633 finally 634 { 635 thread.lastSpecialBinding = lastSpecialBinding; 636 } 595 return bindParametersAndExecute(minArgs, ext, thread, 596 lastSpecialBinding); 637 597 } 638 598 else … … 661 621 bindRequiredParameters(ext, thread, first, second, third, fourth, 662 622 fifth, sixth, seventh, eighth); 663 bindParameters(minArgs, ext, thread); 664 try 665 { 666 return progn(body, ext, thread); 667 } 668 finally 669 { 670 thread.lastSpecialBinding = lastSpecialBinding; 671 } 623 return bindParametersAndExecute(minArgs, ext, thread, 624 lastSpecialBinding); 672 625 } 673 626 else
Note: See TracChangeset
for help on using the changeset viewer.