Changeset 5937


Ignore:
Timestamp:
02/24/04 16:35:26 (17 years ago)
Author:
piso
Message:

Work in progress.

Location:
trunk/j/src/org/armedbear/lisp
Files:
3 edited

Legend:

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

    r5926 r5937  
    33 *
    44 * Copyright (C) 2003-2004 Peter Graves
    5  * $Id: BitVector.java,v 1.31 2004-02-24 12:56:09 piso Exp $
     5 * $Id: BitVector.java,v 1.32 2004-02-24 16:33:14 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    133133    }
    134134
    135     public final void ensureCapacity(int minCapacity)
    136     {
    137         if (capacity < minCapacity) {
    138             int size = minCapacity >>> 6;
    139             if ((minCapacity & LONG_MASK) != 0)
    140                 ++size;
    141             long[] newBits = new long[size];
    142             System.arraycopy(bits, 0, newBits, 0, bits.length);
    143             bits = newBits;
    144             capacity = minCapacity;
    145         }
    146     }
    147 
    148135    public int length()
    149136    {
     
    377364    }
    378365
     366    private final void ensureCapacity(int minCapacity)
     367    {
     368        if (capacity < minCapacity) {
     369            int size = minCapacity >>> 6;
     370            if ((minCapacity & LONG_MASK) != 0)
     371                ++size;
     372            long[] newBits = new long[size];
     373            System.arraycopy(bits, 0, newBits, 0, bits.length);
     374            bits = newBits;
     375            capacity = minCapacity;
     376        }
     377    }
     378
    379379    public String toString()
    380380    {
  • trunk/j/src/org/armedbear/lisp/ComplexString.java

    r5934 r5937  
    33 *
    44 * Copyright (C) 2002-2004 Peter Graves
    5  * $Id: ComplexString.java,v 1.5 2004-02-24 15:37:48 piso Exp $
     5 * $Id: ComplexString.java,v 1.6 2004-02-24 16:35:26 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    287287    {
    288288        return capacity;
    289     }
    290 
    291     public final void ensureCapacity(int minCapacity) throws ConditionThrowable
    292     {
    293         if (chars != null) {
    294             if (capacity < minCapacity) {
    295                 char[] newArray = new char[minCapacity];
    296                 System.arraycopy(chars, 0, newArray, 0, capacity);
    297                 chars = newArray;
    298                 capacity = minCapacity;
    299             }
    300         } else {
    301             Debug.assertTrue(array != null);
    302             if (array.length() - displacement < minCapacity) {
    303                 // Copy array.
    304                 char[] chars = new char[minCapacity];
    305                 System.arraycopy(array.chars(), displacement, chars, 0,
    306                                  array.length() - displacement);
    307                 capacity = minCapacity;
    308                 array = null;
    309                 displacement = 0;
    310                 isDisplaced = false;
    311             }
    312         }
    313289    }
    314290
     
    417393    }
    418394
     395    public final void ensureCapacity(int minCapacity) throws ConditionThrowable
     396    {
     397        if (chars != null) {
     398            if (capacity < minCapacity) {
     399                char[] newArray = new char[minCapacity];
     400                System.arraycopy(chars, 0, newArray, 0, capacity);
     401                chars = newArray;
     402                capacity = minCapacity;
     403            }
     404        } else {
     405            Debug.assertTrue(array != null);
     406            if (array.getTotalSize() - displacement < minCapacity) {
     407                // Copy array.
     408                chars = new char[minCapacity];
     409                final int limit = array.getTotalSize() - displacement;
     410                if (array instanceof AbstractString) {
     411                    AbstractString string = (AbstractString) array;
     412                    for (int i = 0; i < limit; i++) {
     413                        chars[i] = string.getChar(displacement + i);
     414                    }
     415                } else {
     416                    for (int i = 0; i < limit; i++) {
     417                        LispCharacter character =
     418                            (LispCharacter) array.getRowMajor(displacement + i);
     419                        chars[i] = character.value;
     420                    }
     421                }
     422                capacity = minCapacity;
     423                array = null;
     424                displacement = 0;
     425                isDisplaced = false;
     426            }
     427        }
     428    }
     429
    419430    private int cachedHashCode;
    420431
  • trunk/j/src/org/armedbear/lisp/ComplexVector.java

    r5923 r5937  
    33 *
    44 * Copyright (C) 2002-2004 Peter Graves
    5  * $Id: ComplexVector.java,v 1.2 2004-02-24 12:29:08 piso Exp $
     5 * $Id: ComplexVector.java,v 1.3 2004-02-24 16:35:08 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    2424// A vector that is displaced to another array, has a fill pointer, and/or is
    2525// expressly adjustable. It can hold elements of any type.
    26 public class ComplexVector extends AbstractVector
     26public final class ComplexVector extends AbstractVector
    2727{
    2828    private int capacity;
     
    123123    {
    124124        return capacity;
    125     }
    126 
    127     public final void ensureCapacity(int minCapacity)
    128     {
    129         if (elements.length < minCapacity) {
    130             LispObject[] newArray = new LispObject[minCapacity];
    131             System.arraycopy(elements, 0, newArray, 0, elements.length);
    132             elements = newArray;
    133             capacity = minCapacity;
    134         }
    135125    }
    136126
     
    320310    }
    321311
     312    private final void ensureCapacity(int minCapacity) throws ConditionThrowable
     313    {
     314        if (elements != null) {
     315            if (capacity < minCapacity) {
     316                LispObject[] newArray = new LispObject[minCapacity];
     317                System.arraycopy(elements, 0, newArray, 0, capacity);
     318                elements = newArray;
     319                capacity = minCapacity;
     320            }
     321        } else {
     322            Debug.assertTrue(array != null);
     323            if (array.getTotalSize() - displacement < minCapacity) {
     324                // Copy array.
     325                elements = new LispObject[minCapacity];
     326                final int limit = array.getTotalSize() - displacement;
     327                for (int i = 0; i < limit; i++)
     328                    elements[i] = array.getRowMajor(displacement + i);
     329                capacity = minCapacity;
     330                array = null;
     331                displacement = 0;
     332                isDisplaced = false;
     333            }
     334        }
     335    }
     336
    322337    public String toString()
    323338    {
Note: See TracChangeset for help on using the changeset viewer.