Changeset 4783


Ignore:
Timestamp:
11/16/03 15:33:44 (18 years ago)
Author:
piso
Message:

macroexpand_1(): use LispThread?.setValues().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Lisp.java

    r4758 r4783  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Lisp.java,v 1.179 2003-11-15 00:14:40 piso Exp $
     5 * $Id: Lisp.java,v 1.180 2003-11-16 15:33:44 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    257257        throws ConditionThrowable
    258258    {
    259         LispObject[] results = new LispObject[2];
    260259        if (form instanceof Cons) {
    261260            LispObject car = form.car();
     
    274273                        if (!sampling)
    275274                            expander.incrementCallCount();
    276                     results[0] = expander.execute(form, env);
    277                     results[1] = T;
    278                     thread.setValues(results);
    279                     return results[0];
     275                    return thread.setValues(expander.execute(form, env), T);
    280276                }
    281277            }
     
    289285            if (obj == null)
    290286                obj = symbol.getSymbolValue();
    291             if (obj instanceof SymbolMacro) {
    292                 results[0] = ((SymbolMacro)obj).getExpansion();
    293                 results[1] = T;
    294                 thread.setValues(results);
    295                 return results[0];
    296             }
     287            if (obj instanceof SymbolMacro)
     288                return thread.setValues(((SymbolMacro)obj).getExpansion(), T);
    297289        }
    298290        // Not a macro.
    299         results[0] = form;
    300         results[1] = NIL;
    301         thread.setValues(results);
    302         return results[0];
     291        return thread.setValues(form, NIL);
    303292    }
    304293
     
    737726    }
    738727
    739     public static final LispObject values(LispObject first, LispObject second)
    740     {
    741         LispObject[] values = new LispObject[2];
    742         values[0] = first;
    743         values[1] = second;
    744         LispThread.currentThread().setValues(values);
    745         return first;
    746     }
    747 
    748     public static final LispObject values(LispObject[] args)
    749     {
    750         if (args.length == 1) {
    751             LispThread.currentThread().clearValues();
    752             return args[0];
    753         }
    754         LispThread.currentThread().setValues(args);
    755         return args.length > 0 ? args[0] : NIL;
    756     }
    757 
    758728    public static final LispObject readObjectFromString(String s)
    759729    {
Note: See TracChangeset for help on using the changeset viewer.