Changeset 14464


Ignore:
Timestamp:
04/24/13 12:50:34 (10 years ago)
Author:
rschlatte
Message:

open-code allocateInstance() in %std-allocate-instance

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/FuncallableStandardClass.java

    r14452 r14464  
    7373  }
    7474
    75   public LispObject allocateInstance()
    76   {
    77     Layout layout = getClassLayout();
    78     if (layout == null)
    79       {
    80         Symbol.ERROR.execute(Symbol.SIMPLE_ERROR,
    81                              Keyword.FORMAT_CONTROL,
    82                              new SimpleString("No layout for class ~S."),
    83                              Keyword.FORMAT_ARGUMENTS,
    84                              list(this));
    85       }
    86     return new FuncallableStandardObject(this, layout.getLength());
    87   }
    88 
    8975  @Override
    9076  public String printObject()
  • trunk/abcl/src/org/armedbear/lisp/StandardClass.java

    r14463 r14464  
    372372      return T;
    373373    return super.typep(type);
    374   }
    375 
    376   public LispObject allocateInstance()
    377   {
    378     Layout layout = getClassLayout();
    379     if (layout == null)
    380       {
    381         Symbol.ERROR.execute(Symbol.SIMPLE_ERROR,
    382                              Keyword.FORMAT_CONTROL,
    383                              new SimpleString("No layout for class ~S."),
    384                              Keyword.FORMAT_ARGUMENTS,
    385                              list(this));
    386       }
    387     return new StandardObject(this, layout.getLength());
    388374  }
    389375
  • trunk/abcl/src/org/armedbear/lisp/StandardGenericFunctionClass.java

    r14006 r14464  
    7474    setFinalized(true);
    7575  }
    76 
    77   @Override
    78   public LispObject allocateInstance()
    79   {
    80     return new StandardGenericFunction();
    81   }
    8276}
  • trunk/abcl/src/org/armedbear/lisp/StandardObject.java

    r14137 r14464  
    657657    public LispObject execute(LispObject arg)
    658658    {
    659       if (arg == StandardClass.STANDARD_CLASS)
     659      if (arg == StandardClass.STANDARD_CLASS) {
    660660        return new StandardClass();
    661       if (arg instanceof StandardClass)
    662         return ((StandardClass)arg).allocateInstance();
    663       if (arg.typep(StandardClass.STANDARD_CLASS) != NIL) {
     661      } else if (arg instanceof StandardGenericFunctionClass) {
     662        return new StandardGenericFunction();
     663      } else if (arg instanceof FuncallableStandardClass) {
     664        FuncallableStandardClass cls = (FuncallableStandardClass)arg;
     665        Layout layout = cls.getClassLayout();
     666        if (layout == null) {
     667          error(new ProgramError("No layout for funcallable class "
     668                                 + cls.princToString()));
     669        }
     670        return new FuncallableStandardObject(cls, layout.getLength());
     671      } else if (arg instanceof StandardClass) {
     672        StandardClass cls = (StandardClass)arg;
     673        Layout layout = cls.getClassLayout();
     674        if (layout == null) {
     675          error(new ProgramError("No layout for class " + cls.princToString()));
     676        }
     677        return new StandardObject(cls, layout.getLength());
     678      } else if (arg.typep(StandardClass.STANDARD_CLASS) != NIL) {
    664679        LispObject l = Symbol.CLASS_LAYOUT.execute(arg);
    665         if (! (l instanceof Layout))
    666           return error(new ProgramError("Invalid standard class layout for: " + arg.princToString()));
    667        
     680        if (! (l instanceof Layout)) {
     681          error(new ProgramError("Invalid standard class layout for class " + arg.princToString()));
     682        }
    668683        return new StandardObject((Layout)l);
    669       }
    670       return type_error(arg, Symbol.STANDARD_CLASS);
     684      } else {
     685        return type_error(arg, Symbol.STANDARD_CLASS);
     686      }
    671687    }
    672688  };
Note: See TracChangeset for help on using the changeset viewer.