prep for 3.7 release

pull/81/head
Dibyendu Majumdar 9 years ago
parent 2c8c2c3839
commit b9a17c4131

@ -10,6 +10,16 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
option(LLVM_JIT "Controls whether LLVM JIT compilation will be enabled" ON)
option(GCC_JIT "Controls whether GCC JIT compilation will be enabled" OFF)
if (LLVM_JIT AND GCC_JIT)
message(FATAL_ERROR
"Both LLVM_JIT and GCC_JIT cannot be set to ON at the same time")
endif()
if (NOT LLVM_JIT AND NOT GCC_JIT)
message(FATAL_ERROR
"One of LLVM_JIT and GCC_JIT must be set to ON")
endif()
if (LLVM_JIT)
find_package(LLVM REQUIRED CONFIG)
@ -30,7 +40,6 @@ if (GCC_JIT)
add_definitions(-DUSE_GCCJIT)
endif()
if (MSVC)
set(CMAKE_C_FLAGS_DEBUG "/Od /D_DEBUG /MDd /Zi /RTC1 /EHsc")
set(CMAKE_C_FLAGS_RELEASE "/DNDEBUG /O2 /MD /EHsc")
@ -118,7 +127,8 @@ file(GLOB RAVI_HEADERS "${PROJECT_SOURCE_DIR}/include/*.h")
if (MSVC OR APPLE)
source_group("Ravi Headers" FILES ${RAVI_HEADERS})
source_group("Ravi Source Files" FILES ${LUA_CORE_SRCS} ${LUA_LIB_SRCS})
source_group("Ravi Source Files" FILES ${LUA_CORE_SRCS} ${LUA_LIB_SRCS}
${LLVM_JIT_SRCS} ${GCC_JIT_SRCS})
if (APPLE)
set(EXTRA_LIBRARIES m readline)
endif()

@ -44,11 +44,7 @@ Limitations of JIT compilation
* The Debug API relies upon a field called ``savedpc`` which tracks the current instruction being executed by Lua interpreter. As this is not updated by the JIT code the Debug API can only provide a subset of normal functionality. The Debug API is not yet fully tested.
* The Lua VM supports infinite tail recursion. The JIT compiler treats OP_TAILCALL as normal OP_CALL so that recursion is limited to about 110 levels.
* The Lua C API has not yet been tested against the Ravi extensions - especially static typing and array types. Do not use the C API for now - as you could break the type system of Ravi.
* Bit-wise operators are not yet JIT compiled.
Future Performance Enhancements
-------------------------------
The main area of enhancement is to provide specialised versions of Lua FORNUM loops so that the generated code is more efficient and is moreover recognised by LLVM as a loop.
* Bit-wise operators are not always JIT compiled.
JIT Status of Lua/Ravi Bytecodes
---------------------------------

@ -108,7 +108,7 @@ Example of code that works - you can copy this to the command line input::
When values from a function call are assigned to a typed variable, an implicit type coersion takes place. In above example an error would occur if the function returned values that could not converted to integers.
In the following example, the parameter ``j`` is defined as a ``number``, hence it is an eror to pass a value that cannot be converted to a ``number``::
In the following example, the parameter ``j`` is defined as a ``number``, hence it is an error to pass a value that cannot be converted to a ``number``::
function tryme(j: number)
for i=1,1000000000 do

@ -737,8 +737,10 @@ bool RaviCodeGenerator::canCompile(Proto *p) {
case OP_RAVI_BNOT_I:
case OP_RAVI_SHL_II:
case OP_RAVI_SHR_II:
#ifndef _WIN32
case OP_SHR:
case OP_SHL:
#endif
break;
default:
return false;

Loading…
Cancel
Save