Michael Munday
5c697cc772
Fix ffi calls returning structs.
2017-01-11 12:13:59 -05:00
Michael Munday
f660d36138
Fix ffi calls with complex parameters.
2017-01-11 12:13:52 -05:00
Michael Munday
938f964b6a
Fix single-precision floating point parameters passed on stack.
...
The opposite way round to the registers for some reason.
2017-01-10 16:56:43 -05:00
Michael Munday
86a24eac4a
Various fixes for FFI calls.
...
Fixes the following scenarios:
* Returning floating point value.
* More than 4 GPR arguments.
2017-01-10 16:11:30 -05:00
Michael Munday
e933353feb
Use execute rather than loop for mvc and avoid jumps in fast path.
...
Not sure if this works, the tests don't exercise the stack code.
2017-01-10 14:12:06 -05:00
Michael Munday
660ddd1db2
Replace some instruction sequences with their SI equivalents.
2017-01-10 12:52:45 -05:00
Michael Munday
55af819e97
Remove TODO.
2017-01-10 12:04:17 -05:00
Michael Munday
102d848577
Minor instruction changes.
2017-01-10 11:58:24 -05:00
Michael Munday
d44390a2d3
Use tm{,y} instructions where possible.
2017-01-10 11:44:27 -05:00
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