Michael Munday
a8562b7f34
Allow displacements to be used directly without register values.
...
Allows sllg r1, r1, 3(r0,r0) to be written as sllg r1, r1, 3.
2017-01-10 10:50:41 -05:00
Michael Munday
dae61f59d6
Delete some unused function stubs.
2017-01-09 15:57:37 -05:00
Michael Munday
4c738134df
Improve ins_NEXT performance.
...
Prioritise critical path and reduce number of instructions. About
10% improvement on md5 benchmark.
2017-01-09 14:16:44 -05:00
Michael Munday
99b3668995
Add stub dis_s390x.lua file to allow make install to work.
2017-01-09 11:20:13 -05:00
Michael Munday
bb98985db3
Add partial FFI support.
...
Interestingly, enough to pass all the FFI tests. So s390x now
passes all the tests in LuaJIT-test-cleanup.
2017-01-06 16:19:56 -05:00
Michael Munday
5dec8c2211
Fix vm_tsetr (needed by table.remove).
...
The A argument was being loaded as 2-bytes instead of 1.
2017-01-06 13:54:28 -05:00
Michael Munday
ed2d43d73c
Fix VARG.
2017-01-06 11:47:56 -05:00
Michael Munday
2e05e7ca67
Implement math.floor/math.ceil.
2017-01-06 11:16:33 -05:00
Michael Munday
a3501b062d
Various fixes for coroutines.
...
Now passing the tests.
2017-01-05 23:39:25 -05:00
Michael Munday
d90293f55e
Implement coroutines.
...
TODO: delete LREG, caused problems while implementing this (x64
doesn't have LREG).
2017-01-05 23:39:25 -05:00
Michael Munday
60fb35cb68
Implement rawget.
2017-01-05 23:39:25 -05:00
Michael Munday
1b16e7ce3c
Fix math.pow.
...
The second floating point argument is placed into f2, not f1.
Use the macros FARG{1,2} instead of using the registers directly.
2017-01-05 10:52:27 -05:00
Michael Munday
dfb95646f8
Implement call_tail.
2017-01-04 16:05:55 -05:00
Michael Munday
faef0fb092
Fix for __newindex metamethod.
2017-01-04 15:54:21 -05:00
Michael Munday
80191dcab7
Implement cont_cat.
...
Required to pass cat tests.
2017-01-04 15:34:30 -05:00
Michael Munday
e598c067c3
Fixes for negative string.sub arguments and __index metamethod calls.
2017-01-04 14:50:19 -05:00
Michael Munday
705784a4f9
Implement math.min and math.max.
...
Replicates the standard Lua behaviour in the presence of NaNs.
2017-01-04 11:48:07 -05:00
Michael Munday
86e5e57f4c
Add emptystr implementation and stub out co-routine functions.
2017-01-03 16:44:36 -05:00
Michael Munday
e739ffedce
Implement string.byte and string.char.
2017-01-03 16:36:34 -05:00
Michael Munday
65af21e2ed
Implement more math functions.
...
Everything apart from min/max should now be working.
2017-01-03 16:12:22 -05:00
Michael Munday
8e747c5406
Implement metamethod support.
...
Allows metamethod tables to be get and set.
2017-01-03 12:17:34 -05:00
niravthakkar
d02e076507
Minor fix, for arguments in shift operations
2017-01-03 15:55:25 +05:30
Michael Munday
39c37a1a1a
Remove debug code from tostring.
2016-12-30 16:33:35 -05:00
Michael Munday
4f1c4dc514
Implement pairs (including ISNEXT and ITERN).
...
Allows use of the pairs iterator, for example:
t = { alpha = 1, beta = 2 }
for k,v in pairs(t)
print(k, v)
end
-- prints:
-- alpha 1
-- beta 2
2016-12-30 14:51:30 -05:00
Michael Munday
6fbe356507
Implement USETN, USETP and USETS.
...
Allows constant numbers, primitives (nil, true, false) and strings
to be assigned to upvalues in closures.
2016-12-30 13:33:31 -05:00
Michael Munday
a5d9604419
Implement USETV.
...
Allows upvalues to be set in closures, for example:
function f(x)
local y = x
local j = function(z)
y = y + z
end
for i=1,3 do
j(i)
print(y)
end
end
f(2) -- prints: 3 5 8
2016-12-30 13:00:38 -05:00
Michael Munday
21073df0dc
Add FORL implementation (just fallthrough).
2016-12-30 12:27:08 -05:00
Michael Munday
5e7121c625
Implement ipairs.
...
Allows the use of the ipairs iterator, for example:
t = { "i", "robot" }
for i,v in ipairs(t) do
print(i, v)
end
-- prints:
-- 1 i
-- 2 robot
2016-12-30 11:40:39 -05:00
Michael Munday
21f2fdfab2
Partially implement ipairs.
...
Still need to handle ipairs_aux.
2016-12-29 17:37:11 -05:00
Michael Munday
e6eb12b268
Implement bit operations.
...
See http://bitop.luajit.org/api.html for more information.
Bytecode listing is now supported, for example:
$ ./luajit -bl -e 'a=1'
-- BYTECODE -- "a=1":0-1
0001 KSHORT 0 1
0002 GSET 0 0 ; "a"
0003 RET0 0 1
2016-12-29 15:07:51 -05:00
Michael Munday
e8ca7b8799
Implement CAT.
...
Allows the use of the '..' operator, for example:
x = "hello"
y = " "
z = "world!"
print(x..y..z) -- prints 'hello world!'
2016-12-29 11:23:45 -05:00
Michael Munday
29223bb979
Implement POW.
...
Allows use of the '^' operator, for example:
x = 2
y = 3
print(x ^ y) -- prints 8
2016-12-29 11:10:18 -05:00
Michael Munday
230a4aa424
Implement KNIL and CALLMT.
2016-12-28 17:55:10 -05:00
Michael Munday
2584c6d5a8
Implement ISNUM, ISTYPE, TGETR and TSETR.
2016-12-28 17:01:09 -05:00
Michael Munday
5dc644ad89
Implement LOOP.
...
Allows for while and repeat loops, for example:
x = 0
while x < 5 do
print(x)
x = x + 1
end
-- prints:
-- 0
-- 1
-- 2
-- 3
-- 4
2016-12-28 14:13:08 -05:00
Michael Munday
6673652fd9
Implement TSETM and VARG.
...
Allows varargs to be used, for example:
function sel(n, ...)
local arg = {...}
return arg[n]
end
print(sel(2, 3, 4, 5)) -- prints 4
2016-12-28 13:21:06 -05:00
Michael Munday
aba9cfb2a8
Implement UGET.
...
Allows simple closures, for example:
function f(x)
return function() return x end
end
y = f(1)
print(y()) -- prints 1
2016-12-28 10:58:45 -05:00
Michael Munday
354b5c748b
Implement a UCLO, ff_assert and a couple of other bits.
...
Needed to get -bl working, still more to do though.
2016-12-22 15:40:25 -05:00
Michael Munday
077ccc8658
Implement LEN.
...
Enables length of tables and strings to be taken, for example:
t = "hello"
print(#t) -- prints 5
t = {1,2}
print(#t) -- prints 2
2016-12-22 14:59:37 -05:00
Michael Munday
c0c155e45e
Implement/fix TGETS and TSETS.
...
Allows string keys in tables, for example:
t = {}
t["hello"] = 1
print(t["hello"]) -- prints 1
2016-12-22 14:40:31 -05:00
Michael Munday
cab03375f1
Implement TGETV and TSETV.
...
Allows table entries to be get and set using variables, for example:
t = {4,5}
i = 1
print(t[i]) -- prints 4
t[i] = 3
print(t[i]) -- prints 3
2016-12-22 14:20:47 -05:00
Michael Munday
20f05a4e20
Implement more tset and tget metamethods.
...
This allows table entries to be get and set even if they don't
already exist, for example:
t = {}
print(t[1]) -- prints nil
t[1] = 3
print(t[1]) -- prints 3
2016-12-22 13:50:59 -05:00
Michael Munday
01dbd6dfa2
Implement TDUP, TGETB and TSETB.
...
Allows some simple table operations, for example:
t = {1, 2}
print(t[1]) -- prints 1
t[1] = 3
print(t[1]) -- prints 3
2016-12-22 13:16:02 -05:00
Michael Munday
6fc4c0c1a8
Fix BC_MCALL
...
RC and RD are the same register on x64, so sometimes it uses them
interchangeably. Probably we should make them the same register
on s390x, but that would involve changing the instruction decode
code which I would rather leave until we have a test suite passing.
2016-12-22 12:41:00 -05:00
Michael Munday
1825037538
Implement table creation and printing.
2016-12-21 18:02:43 -05:00
Michael Munday
e19544ae9a
Implement unary minus.
2016-12-21 14:03:58 -05:00
Michael Munday
9da6ff7ea3
Implement more equality checks.
2016-12-21 13:21:12 -05:00
Michael Munday
8518df8e56
Implement some boolean operations.
2016-12-21 12:49:53 -05:00
Michael Munday
ae38a6913e
Add support for numeric equality checks.
2016-12-21 11:02:53 -05:00
Michael Munday
b5aa0d077c
Fix bug in division.
2016-12-20 17:26:33 -05:00