Fix math.frexp() and add more tests (thanks Florob, Link Mauve, xnyhps) default tip

Add math.frexp() and tests (many thanks to Florob and Link Mauve!)

Implement basic string.format() supporting %d/%s

baselib: Implement basic message-only error()

Implement string.find (mostly) and string.sub

Replace error reporting code with calls to LVM.traceback()

Add LVM.traceback() function

OP_SETLIST: Implement support for B==0 (to top of stack)

OP_RETURN: Pad out results with nils if we get less results than expected

OP_TAILCALL: Fall through to OP_CALL for native functions

OP_VARARG: Fix off-by-one

OP_GETUPVALUE: Clone original LValue

Create local function to use as chunk prototype

Better verification of function validity in LVM.call()

Indentation fix

Change LVM.call() to take an LValue rather than the raw native/LFunction object. Also add LVM.loadstring(chunk, env) and use that for loading luac.out.

Implement OP_TAILCALL - the last opcode!

Add a whole bunch of tests I've been using for recent additions

Adjust pc down by 1 when calculating error lines, pc is always the /next/ instruction

Remove some debugging in the gmatch function

Implement OP_VARARG

OP_RETURN: Shrink stack on return

OP_CALL: Don't push varargs into called function's stack

Fix OP_CONCAT: missing break; and should supply empty separator to join()

assert(): Throw "assertion failed" message when none supplied

"Implement" OP_CLOSE

Fix OP_FORLOOP to set the loop counter variable properly

Implement LValue.len() and OP_LEN (no metamethod yet)

Switch to [] for representing tables (for now)

Don't use this.LValue() inside the VM - it's for JS types only

Fix OP_CALL to handle the case of B==1 (no parameters) and fix an off-by-one error that wouldn't fill the stack with nils properly

Implement OP_MOD, OP_POW, OP_UNM, OP_NOT (no metamethods yet)

New (passing) test, arithmetic.lua

Implement OP_MUL (no metamethod yet)

Fix FORPREP to not blat R(A+3) - not sure what that line thought it was doing

Add unimplemented OP_* codes as reference

Fix exception in stack printing for some tests when debug mode is enabled

Prettier stack printing in debugMode

Fix traceback in error handling...

Add string lib, with gmatch function only for now

Implement OP_SETLIST

Implement OP_TFORLOOP

Implement OP_CONCAT (no metamethod yet)

Remove some debugging in math.ldexp() accidentally committed

Implement OP_DIV (no metamethod yet)

Don't try and print current position in the Lua script with no valid frame

Rename default_environment to _G, use registerLib() for baselib and add math lib with 2 ldexp, floor

Add LVM().registerLib(env, name, lib) to register a table of native functions to an environment.

Fix OP_SUB to use RK() too...

Update basic_logic test

Print out location at which errors occur, yay!

Pass sourceName to child chunks (in binary files it's only set in the top-level chunk)

Disable debugMode, accidentally committed

Implement OP_LE (no metamethod yet)

Fix OP_LT to respect A, and move OP_EQ to live next to it in the switch() for readability

Fix OP_LT to use RK()

(0) -100 -56 tip

mercurial