public static class Clone extends JS.Cloneable {
protected JS.Cloneable clonee = null;
- JS _unclone() { return clonee; }
+ JS _unclone() { return clonee.unclone(); }
+ public JS.Cloneable getClonee() { return clonee; }
public Clone(JS.Cloneable clonee) { this.clonee = clonee; }
public boolean equals(Object o) {
if (!(o instanceof JS)) return false;
// Static Interpreter Control Methods ///////////////////////////////////////////////////////////////
/** log a message with the current JavaScript sourceName/line */
- public static void log(Object o, Object message) { log(message); }
- public static void log(Object message) { Log.echo(Interpreter.getSourceName() + ":" + Interpreter.getLine(), message); }
- public static void log(JSExn e) { Log.echo(e,"JS Exception: " + e.getObject() + "\n" + e.backtrace()); Log.echo(e,e); }
+ public static void log(Object message) { info(message); }
+ public static void debug(Object message) { Log.debug(Interpreter.getSourceName() + ":" + Interpreter.getLine(), message); }
+ public static void info(Object message) { Log.info(Interpreter.getSourceName() + ":" + Interpreter.getLine(), message); }
+ public static void warn(Object message) { Log.warn(Interpreter.getSourceName() + ":" + Interpreter.getLine(), message); }
+ public static void error(Object message) { Log.error(Interpreter.getSourceName() + ":" + Interpreter.getLine(), message); }
public static class NotPauseableException extends Exception { NotPauseableException() { } }