From 42b94709f0c7c8964b381b0e25ffd2ee7c0b0082 Mon Sep 17 00:00:00 2001 From: Shu Lei Date: Tue, 11 Dec 2007 01:51:28 +0000 Subject: [PATCH] 1. added a shutdown method for LuaState and DebugLuaState to clean up before shutting down 2. added the capability to set LUA_PATH 3. minor debugging improvement 4. bump up the version to 0.12 because the addition outputRedirect debug message is not compatible with the previous versions --- build.xml | 2 +- src/core/org/luaj/vm/LuaState.java | 5 +++ src/debug/org/luaj/debug/DebugLuaState.java | 14 ++++++- .../org/luaj/debug/DebugMessageType.java | 22 +++++----- .../org/luaj/debug/j2se/J2sePlatform.java | 11 ++++- .../org/luaj/debug/j2se/StandardLuaJVM.java | 41 +++++++++++++++---- .../response/DebugResponseCallgraph.java | 2 +- .../response/DebugResponseVariables.java | 2 +- .../java/org/luaj/debug/j2se/LuaJVMTest.java | 23 ++++++++++- 9 files changed, 94 insertions(+), 28 deletions(-) diff --git a/build.xml b/build.xml index 2ad04a57..11dd3b89 100644 --- a/build.xml +++ b/build.xml @@ -1,5 +1,5 @@ - + diff --git a/src/core/org/luaj/vm/LuaState.java b/src/core/org/luaj/vm/LuaState.java index 54b2b329..18c96372 100644 --- a/src/core/org/luaj/vm/LuaState.java +++ b/src/core/org/luaj/vm/LuaState.java @@ -167,6 +167,11 @@ public class LuaState extends Lua { */ public void init() {} + /** + * Perform any shutdown/clean up tasks if needed + */ + public void shutdown() {} + /** * Install the standard set of libraries used by most implementations: * BaseLib, CoroutineLib, MathLib, PackageLib, TableLib, StringLib diff --git a/src/debug/org/luaj/debug/DebugLuaState.java b/src/debug/org/luaj/debug/DebugLuaState.java index 223510bc..2573be7e 100644 --- a/src/debug/org/luaj/debug/DebugLuaState.java +++ b/src/debug/org/luaj/debug/DebugLuaState.java @@ -77,7 +77,11 @@ public class DebugLuaState extends LuaState implements DebugRequestListener { */ public DebugLuaState() {} - public void init() { + /* + * (non-Javadoc) + * @see org.luaj.vm.LuaState#init() + */ + public void init() { Platform platform = Platform.getInstance(); // set if the vm should be suspended at start @@ -98,6 +102,14 @@ public class DebugLuaState extends LuaState implements DebugRequestListener { } } + /* + * (non-Javadoc) + * @see org.luaj.vm.LuaState#shutdown() + */ + public void shutdown() { + stop(); + } + protected void setDebugSupport(DebugNetSupport debugSupport) throws IOException { if (debugSupport == null) { diff --git a/src/debug/org/luaj/debug/DebugMessageType.java b/src/debug/org/luaj/debug/DebugMessageType.java index b3d2fea6..9d1f0512 100644 --- a/src/debug/org/luaj/debug/DebugMessageType.java +++ b/src/debug/org/luaj/debug/DebugMessageType.java @@ -52,17 +52,16 @@ public class DebugMessageType extends EnumType { public static final DebugMessageType suspendedOnWatchpoint = new DebugMessageType("suspendedOnWatchpoint", 20); public static final DebugMessageType suspendedOnStepping = new DebugMessageType("suspendedOnStepping", 21); public static final DebugMessageType suspendedOnError = new DebugMessageType("suspendedOnError", 22); - public static final DebugMessageType resumedOnSteppingEnd = new DebugMessageType("resumedOnSteppingEnd", 23); - public static final DebugMessageType resumedOnError = new DebugMessageType("resumedOnError", 24); - public static final DebugMessageType error = new DebugMessageType("error", 25); - public static final DebugMessageType terminated = new DebugMessageType("terminated", 26); - public static final DebugMessageType clientRequestCallgraphReply = new DebugMessageType("clientRequestCallgraphReply", 27); - public static final DebugMessageType clientRequestStackReply = new DebugMessageType("clientRequestStackReply", 28); - public static final DebugMessageType clientRequestGlobalReply = new DebugMessageType("clientRequestGlobalReply", 29); - public static final DebugMessageType disconnected = new DebugMessageType("disconnected", 30); - public static final DebugMessageType sessionId = new DebugMessageType("sessionId", 31); - public static final DebugMessageType debugServiceDown = new DebugMessageType("debugServiceDown", 32); - public static final DebugMessageType outputRedirect = new DebugMessageType("outputRedirect", 333); + public static final DebugMessageType resumedOnSteppingEnd = new DebugMessageType("resumedOnSteppingEnd", 23); + public static final DebugMessageType error = new DebugMessageType("error", 24); + public static final DebugMessageType terminated = new DebugMessageType("terminated", 25); + public static final DebugMessageType clientRequestCallgraphReply = new DebugMessageType("clientRequestCallgraphReply", 26); + public static final DebugMessageType clientRequestStackReply = new DebugMessageType("clientRequestStackReply", 27); + public static final DebugMessageType clientRequestGlobalReply = new DebugMessageType("clientRequestGlobalReply", 28); + public static final DebugMessageType disconnected = new DebugMessageType("disconnected", 29); + public static final DebugMessageType sessionId = new DebugMessageType("sessionId", 30); + public static final DebugMessageType debugServiceDown = new DebugMessageType("debugServiceDown", 31); + public static final DebugMessageType outputRedirect = new DebugMessageType("outputRedirect", 32); protected static DebugMessageType[] ENUMS = new DebugMessageType[] { start, @@ -89,7 +88,6 @@ public class DebugMessageType extends EnumType { suspendedOnStepping, suspendedOnError, resumedOnSteppingEnd, - resumedOnError, error, terminated, clientRequestCallgraphReply, diff --git a/src/debug/org/luaj/debug/j2se/J2sePlatform.java b/src/debug/org/luaj/debug/j2se/J2sePlatform.java index f2ece929..38297d69 100644 --- a/src/debug/org/luaj/debug/j2se/J2sePlatform.java +++ b/src/debug/org/luaj/debug/j2se/J2sePlatform.java @@ -1,5 +1,7 @@ package org.luaj.debug.j2se; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -14,8 +16,13 @@ public class J2sePlatform extends Platform { return new InputStreamReader(inputStream); } - public InputStream openFile(String fileName) { - return getClass().getResourceAsStream("/" + fileName); + public InputStream openFile(String filePath) { + try { + FileInputStream fis = new FileInputStream(new File(filePath)); + return fis; + } catch (IOException e) { + return null; + } } /** diff --git a/src/debug/org/luaj/debug/j2se/StandardLuaJVM.java b/src/debug/org/luaj/debug/j2se/StandardLuaJVM.java index 0f70ee6a..c45a1505 100644 --- a/src/debug/org/luaj/debug/j2se/StandardLuaJVM.java +++ b/src/debug/org/luaj/debug/j2se/StandardLuaJVM.java @@ -28,6 +28,7 @@ import java.io.InputStream; import org.luaj.compiler.LuaC; import org.luaj.debug.DebugLuaState; +import org.luaj.lib.PackageLib; import org.luaj.lib.j2se.LuajavaLib; import org.luaj.vm.LClosure; import org.luaj.vm.LPrototype; @@ -52,6 +53,7 @@ public class StandardLuaJVM { protected boolean bSuspendOnStart = false; protected String script; protected String[] scriptArgs; + protected String luaPath; protected LuaState state; protected boolean isReady = false; protected boolean isTerminated = false; @@ -67,7 +69,7 @@ public class StandardLuaJVM { protected void printUsage() { System.out.println("Usage:"); - System.out.println("\t java StandardLuaJVM [-Dport=[,suspendedOnStart=]]