Commit Graph

92 Commits

Author SHA1 Message Date
James Roseborough
435368ccd9 Fix metatable processing on luaGetTable 2007-10-09 04:09:00 +00:00
Ian Farmer
ec11c472c8 Various changes to bring pm.lua test closer to passing:
* New and complete character class support
 * string.gsub implemented
 * rawset implemented
 * lua_call added (based on lua_pcall)
 * lua_pop added
 * newCall removed; luaGetTable and luaSetTable in LFunction updated to
   use lua_call instead.
 * StandardTest changed to avoid an ArrayIndexOutOfBoundsException

Unfortunately I discovered a problem where execute() will loop around too
many times and call exec() with a call frame that has already completed.
This might be due to the lack of the "tailcalls" field in our CallInfo class
that the C version maintains?
2007-09-24 04:35:53 +00:00
Ian Farmer
f801e648bb New math.cos and math.sqrt functions from Lua standard library, with new
math library test case. Also, character encoding of LuaCompat was changed
from something that Eclipse was not handling well to UTF-8.
2007-09-23 03:54:06 +00:00
Ian Farmer
fc8c790b0d Fixes for string.rep, string.byte, string.lower, and string.upper. Also
factor out negative index handling to separate function, posrelat (to
match C Lua). When converting numbers to strings, see if the double value
can be represented exactly as a long, and if so format the string as
an integer. With these changes the standard test case "strings.lua" runs
to line 104 (over half way through!), where it uses string.format.
2007-09-19 04:44:31 +00:00
Ian Farmer
bd6dd58a2d String related improvements:
(1) Fix string.char and string.byte (argument indexing was off by one)
(2) Implement string.find
(3) Change calls to charAt, which does array bounds checking, in the
    pattern matcher with calls to luaByte, which does not.
(4) Replace use of recursion with while/continue in pattern matcher.
2007-09-18 05:17:09 +00:00
Ian Farmer
108fabc58f Add missing return statement in autoload test case. Still doesn't work. 2007-09-18 04:16:46 +00:00
Ian Farmer
aa44eedf4b Allow metatable operations on values of all types, and use the metatable
on strings as the string package, so that string functions can be called
with self (:) syntax. Autoload test case now inexplicably fails more,
but it was already broken.
2007-09-08 20:54:40 +00:00
Ian Farmer
35131f9f66 Fix "factorial" function in test case that was not actually factorial function. 2007-09-05 03:02:57 +00:00
Ian Farmer
75fb975410 Fix a few VM issues which were causing subtle failures in the test cases.
Includes a new VM method, newCall, which must be called before pushing
a call onto the stack to make sure that base is set correctly.
A couple of weird issues remain with autoload.lua.
2007-09-04 01:52:33 +00:00
James Roseborough
b8376fe0ef Fix tail call argument handling. 2007-08-03 05:42:50 +00:00
James Roseborough
5fb097d107 Fix varargs handling 2007-08-02 03:00:46 +00:00
Ian Farmer
737c5e2855 Various changes:
(1) New lua compatibility bindings, including select() and math functions
(2) fix some VM bugs
(3) fix some table bugs, and attempt to restore metatable functionality.
2007-08-01 04:15:27 +00:00
Ian Farmer
ee5007e718 Add implicit LString to number coercions. 2007-07-22 06:20:14 +00:00
Ian Farmer
e1d6ddf99c New autoload and math test cases. Currently autoload does not work because
the GETGLOBAL instruction does not handle the case where a metatable method
is invoked.
2007-07-21 04:44:22 +00:00
Ian Farmer
b4ac032fd7 Fix the NOT instruction. Includes test case. 2007-07-21 04:08:28 +00:00
Ian Farmer
8c3fe262f9 Adding test suite with tests from the set of standard Lua test cases. These
test cases were downloaded from:
  http://www.inf.puc-rio.br/~roberto/lua/lua5.1-tests.tar.gz
2007-07-17 03:20:53 +00:00
Ian Farmer
635f127cd0 Add new built-in function type() that returns the name of the type of
the given value as a string. Includes test case.
2007-07-16 02:37:08 +00:00
Ian Farmer
c65dec54fb Fix a bug in how comparison instructions are handled: the 'a' intruction field
was ignored.  Includes new test case.
2007-07-15 20:33:20 +00:00
Ian Farmer
2a28925f74 Fix a bug in how OP_SETLIST is handled. Includes new test case. 2007-07-12 04:06:41 +00:00
Ian Farmer
f7d6a49acb Add a new test case for upvalues, and enhance upvalue handling so that
they pass.
2007-07-09 04:10:25 +00:00
Ian Farmer
45964d7e22 Add simple test for correct upvalue handling. 2007-07-09 01:43:34 +00:00
Ian Farmer
62022d5881 While loading chunks, check if double values can be represented as integers,
and load them as LIntegers instead of LDoubles if so. Also change test2 so that
it does not fail because of the rounding problem. With these changes, 4 out of
7 test cases in LuaJTest now pass.
2007-07-09 01:31:31 +00:00
Ian Farmer
241edfbf37 Added a JUnit test case. Unfortunately, it will almost certainly not work on
Windows in its present form, and only one of the test cases passes.
In addition two changes to print() were made: output can be redirected to
an arbitrary OutputStream and tabs are no longer printed at the end of
each line.
2007-07-04 04:25:06 +00:00
Ian Farmer
d987d89092 Fix two bugs in LuaJava compatibility addon:
(1) LDouble to Double/double coercions were missing
(2) LuaJava.LMethod.luaStackCall adjusted the top of stack in a way that
produces the wrong results when the call occurs as the argument to another
function (such as print)

Also added two lines to the bottom of test7.lua to test luajava.bindClass.
2007-07-04 03:23:09 +00:00
James Roseborough
c8e1934916 Refactor call stack and its use throughout. CallFrame now does all bytecode processing, and the callframe is reinitialized anytime something might have changed, like a function call. 2007-06-27 06:43:33 +00:00
James Roseborough
93fc4699a9 Type coercion for luajava package, make luajava an "addon" 2007-06-24 15:04:19 +00:00
James Roseborough
1d7793f8e6 Initial draft of luajava package support. 2007-06-19 05:17:07 +00:00
James Roseborough
99077764ac Fix basic class processing via metatables. Make print output more closely match that produces by C interpreter 2007-06-19 04:25:34 +00:00
James Roseborough
54927db2fc Implement most of metatables 2007-06-17 02:58:40 +00:00
James Roseborough
5d3c86e552 Partial implementation of metatables. 2007-06-16 15:31:27 +00:00
James Roseborough
a9c72414d1 Fix for loop that uses iterator 2007-06-16 02:47:47 +00:00
James Roseborough
4fb619fe87 fix builtins to keep them from obliterating stack values. 2007-06-15 15:20:21 +00:00
James Roseborough
be20581731 Improve call stack handling to prepare for propert tail call handling. 2007-06-15 06:41:40 +00:00
James Roseborough
19bd995ba6 Enhance binary compare operators, especially equals, to more closely match what standard lua does. 2007-06-14 04:58:09 +00:00
James Roseborough
14108aee87 Fix upvalues that allow closures to work properly. 2007-06-14 04:09:57 +00:00
James Roseborough
4b7bbc1d8e Vix VARARGS passing by adjusting stack on varargs call to bury varargs + length of varargs under base of stack 2007-06-12 14:30:49 +00:00
James Roseborough
b6f123d5e5 Improve vararg handling logic. 2007-06-12 06:22:55 +00:00
James Roseborough
da6f63bb3d Fix calling convention by managing top of stack and adjusting on way in and out of function calls. 2007-06-11 05:51:19 +00:00
James Roseborough
05cfdaa33b Improve calling convention handling when the number of arguments doesn't match the expected number, and the number of return values doesn't match those needed. 2007-06-11 04:30:03 +00:00
James Roseborough
de763e0a1e Support for iterator-style for loops, and "pairs" builting function 2007-06-10 22:53:09 +00:00
James Roseborough
e1e6625aa1 Add binary compares, some unary ops, fix binary arithmetic, add plain for loop. 2007-06-10 19:49:47 +00:00
James Roseborough
70dfc20f57 Initial draft of interpreter. Lua compiled "chunks" can be unmarshalled. Approximately half of bytecodes implemented in some form or another. 2007-06-08 05:11:37 +00:00