diff --git a/src/main/java/me/topchetoeu/jscript/runtime/SimpleRepl.java b/src/main/java/me/topchetoeu/jscript/runtime/SimpleRepl.java index 2075db9..0a6da34 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/SimpleRepl.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/SimpleRepl.java @@ -383,6 +383,15 @@ public class SimpleRepl { } System.out.println(); + return Value.UNDEFINED; + })); + glob.defineOwnMember(null, "measure", new NativeFunction("measure", args -> { + var start = System.nanoTime(); + + ((FunctionValue)args.get(0)).invoke(args.env, Value.UNDEFINED); + + System.out.println(String.format("Finished in %sns", System.nanoTime() - start)); + return Value.UNDEFINED; })); } diff --git a/src/main/java/me/topchetoeu/jscript/runtime/values/Value.java b/src/main/java/me/topchetoeu/jscript/runtime/values/Value.java index 1497fb2..7ad0c4c 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/values/Value.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/values/Value.java @@ -522,6 +522,7 @@ public abstract class Value { else if (this instanceof VoidValue) return ((VoidValue)this).name; else if (this instanceof StringValue) return JSON.stringify(JSONElement.string(((StringValue)this).value)); else if (this instanceof SymbolValue) return this.toString(); + else if (this instanceof NumberValue num && num.isLong()) return num.getLong() + "i"; else return this.toString(env); } diff --git a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java index 0e10367..9d90a75 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java @@ -4,7 +4,7 @@ public final class IntValue extends NumberValue { public final long value; @Override public boolean isInt() { - return (value & 0xFFFFFFFF00000000l) == 0; + return (int)value == value; } @Override public boolean isLong() { return true;