leonardo2718 / lua-vermelha Goto Github PK
View Code? Open in Web Editor NEWA Lua implementation with an Eclipse OMR based JIT compiler
A Lua implementation with an Eclipse OMR based JIT compiler
New test cases need to be created that exercise JITed code involving meta-tables. These tests should all opcodes that can potentially deal with meta-tables.
Following the lead of Eclipse OMR, I'd like to update the licensing of Lua Vermelha from EPL v1.0 to EPL v2.0.
@charliegracie, @lmaisons, @leejingbo, please give a +1 or a ๐ if you are okay with this update.
Currently, if a nil "function" is passed to lvjit.compile()
, a segmentation fault occurs. This should be handled more gracefully.
Implement ILGen for the CONCAT opcode as well as adequate testing for it.
Implement ILGen for the LOADKX opcode as well as adequate testing.
Implement ILGen for the VARARG
opcode as well as adequate testing for it.
The Eclipse OMR project recently updated it's licensing from EPL 1.0 to EPL 2.0. Lua Vermelha's documentation should reflect this.
The command make
gives the following error:
make[1]: Leaving directory '/home/dev/checkout/lua-vermelha/lua'
cd /home/dev/checkout/lua-vermelha/vermelha && make /home/dev/checkout/lua-vermelha/vermelha/libvermelha.a CXX="g++" CXX_FLAGS_EXTRA="-fpermissive -DLUA_C_LINKAGE -O3 -g"
make[1]: Entering directory '/home/dev/checkout/lua-vermelha/vermelha'
g++ -std=c++0x -fno-rtti -W -Wall -Wextra -fPIC -fpermissive -DLUA_C_LINKAGE -O3 -g -I../ -I../omr/jitbuilder/release/include -I../omr/jitbuilder/x/amd64 -I../omr/jitbuilder/x -I../omr/jitbuilder -I../omr/compiler/x/amd64 -I../omr/compiler/x -I../omr/compiler -I../omr -c LuaTypeDictionary.cpp -o /home/dev/checkout/lua-vermelha/vermelha/objs/LuaTypeDictionary.o
Assembler messages:
Fatal error: can't create /home/dev/checkout/lua-vermelha/vermelha/objs/LuaTypeDictionary.o: No such file or directory
Makefile:90: recipe for target '/home/dev/checkout/lua-vermelha/vermelha/objs/LuaTypeDictionary.o' failed
make[1]: *** [/home/dev/checkout/lua-vermelha/vermelha/objs/LuaTypeDictionary.o] Error 1
make[1]: Leaving directory '/home/dev/checkout/lua-vermelha/vermelha'
Makefile:74: recipe for target '/home/dev/checkout/lua-vermelha/vermelha/libvermelha.a' failed
make: *** [/home/dev/checkout/lua-vermelha/vermelha/libvermelha.a] Error 2
The problem could be solved by
mkdir vermelha/objs
Implement IlGen to handle the SETLIST opcode.
Implement IlGen to handle the SELF opcode.
A service such as Travis CI should be used to ensure that all changes submitted pass some level of testing. This will help ensure that all changes meet a certain level of quality.
A slight drawback of continuous integration is that running the tests takes time. This of course increases the waiting time for a PR to be merged. The test cases executed should be carefully chosen to avoid spending too much time testing unlikely sources of bugs.
Currently, test cases are simple Lua scripts that exercise the code paths being tested. This is a less than ideal approach as there is no convenient way of reporting errors. Using a proper testing framework would help organize and cleanup the test cases.
There needs to be some test cases for math and bitwise opcodes that involve implicit conversion from string types to integer and floating point types.
For completeness, Lua Vermelha should be tested against the Lua test suite. Adding this suite as a submodule would make it easier to automate running these test (e.g. in continuous integration).
Implement ILGen for the GETUPVAL
and SETUPVAL
opcodes as well as adequate testing for them.
There are many cases where it can be useful to interact with the JIT compiler from Lua code. Some useful interactions can be:
A Lua module seems like a clean way to encapsulate this interface. Implementing this will likely require redesigning the API between the VM and the JIT.
IL generation for the SUB
, MUL
, DIV
, and IDIV
, opcodes needs to be re-implemented to follow the style of ADD
. Once this is done, the vm_sub()
, vm_mul()
, vm_div()
, and vm_idiv()
helper functions can be deleted.
I cloned the repo and made some Chinese translation of the document.
Could I make pull requests for this ?
Implement IlGen to handle the CLOSURE opcode.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.