Changeset 11672


Ignore:
Timestamp:
02/19/09 22:13:31 (12 years ago)
Author:
ehuelsmann
Message:

Remove code duplication: use loadCompiledFunction(InputStream?, int) instead of inlining code

to the same extent.

File:
1 edited

Legend:

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

    r11597 r11672  
    10111011                                long size = entry.getSize();
    10121012                                InputStream in = zipFile.getInputStream(entry);
    1013                                 byte[] bytes = new byte[(int)size];
    1014                                 int bytesRemaining = (int) size;
    1015                                 int bytesRead = 0;
    1016                                 while (bytesRemaining > 0)
    1017                                   {
    1018                                     int n;
    1019                                     if (bytesRemaining >= 4096)
    1020                                       n = in.read(bytes, bytesRead, 4096);
    1021                                     else
    1022                                       n = in.read(bytes, bytesRead, bytesRemaining);
    1023                                     if (n < 0)
    1024                                       break;
    1025                                     bytesRead += n;
    1026                                     bytesRemaining -= n;
    1027                                   }
    1028                                 in.close();
    1029                                 if (bytesRemaining > 0)
    1030                                   Debug.trace("bytesRemaining = " + bytesRemaining);
    1031                                 JavaClassLoader loader = new JavaClassLoader();
    1032                                 Class c =
    1033                                   loader.loadClassFromByteArray(null, bytes, 0, bytes.length);
    1034                                 if (c != null)
    1035                                   {
    1036                                     Class[] parameterTypes = new Class[0];
    1037                                     Constructor constructor =
    1038                                       c.getConstructor(parameterTypes);
    1039                                     Object[] initargs = new Object[0];
    1040                                     LispObject obj =
    1041                                       (LispObject) constructor.newInstance(initargs);
    1042                                     if (obj instanceof Function)
    1043                                       ((Function)obj).setClassBytes(bytes);
    1044                                     return obj != null ? obj : NIL;
    1045                                   }
     1013                                LispObject obj = loadCompiledFunction(in, (int) size);
     1014                                return obj != null ? obj : NIL;
    10461015                              }
    10471016                          }
Note: See TracChangeset for help on using the changeset viewer.