diff --git a/src/core/org/luaj/vm2/Buffer.java b/src/core/org/luaj/vm2/Buffer.java index c3423d38..a828542f 100644 --- a/src/core/org/luaj/vm2/Buffer.java +++ b/src/core/org/luaj/vm2/Buffer.java @@ -42,7 +42,7 @@ public final class Buffer { } public final String toString() { - return new LuaString(bytes, 0, length).toString(); + return LuaString.valueOf(bytes, 0, length).toString(); } public final void append( byte b ) { @@ -75,7 +75,7 @@ public final class Buffer { } public final LuaString tostring() { - return new LuaString( realloc( bytes, length ) ); + return LuaString.valueOf( realloc( bytes, length ) ); } public final void ensureCapacity( int minSize ) { diff --git a/src/core/org/luaj/vm2/LoadState.java b/src/core/org/luaj/vm2/LoadState.java index cd765155..feadce69 100644 --- a/src/core/org/luaj/vm2/LoadState.java +++ b/src/core/org/luaj/vm2/LoadState.java @@ -157,7 +157,7 @@ public class LoadState { return null; byte[] bytes = new byte[size]; is.readFully( bytes, 0, size ); - return new LuaString( bytes, 0, bytes.length - 1 ); + return LuaString.valueOf( bytes, 0, bytes.length - 1 ); } public static LuaValue longBitsToLuaNumber( long bits ) { diff --git a/src/core/org/luaj/vm2/LuaString.java b/src/core/org/luaj/vm2/LuaString.java index 044b529e..6982f78a 100644 --- a/src/core/org/luaj/vm2/LuaString.java +++ b/src/core/org/luaj/vm2/LuaString.java @@ -26,6 +26,7 @@ import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; +import java.util.Hashtable; import org.luaj.vm2.lib.StringLib; @@ -37,58 +38,50 @@ public class LuaString extends LuaValue { public final int m_offset; public final int m_length; - private static final int STRINGCACHE_POW2 = 10; - private static final WeakReference[] stringcache - = new WeakReference[1<=256) error(a, "invalid value"); bytes[i] = (byte) c; } - return valueOf( bytes ); + return LuaString.valueOf( bytes ); } /** @@ -144,7 +144,7 @@ public class StringLib extends OneArgFunction { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { DumpState.dump( ((LuaClosure)f).p, baos, true ); - return valueOf(baos.toByteArray()); + return LuaString.valueOf(baos.toByteArray()); } catch (IOException e) { return error( e.getMessage() ); } @@ -625,7 +625,7 @@ public class StringLib extends OneArgFunction { for ( int offset = 0; offset < bytes.length; offset += len ) { s.copyInto( 0, bytes, offset, len ); } - return valueOf( bytes ); + return LuaString.valueOf( bytes ); } /** @@ -639,7 +639,7 @@ public class StringLib extends OneArgFunction { byte[] b = new byte[n]; for ( int i=0, j=n-1; i