LuaJIT

(25’)

François Perrad [email protected]

[email protected]

LuaJIT : Overview 

      

LuaJIT is a Just-In-Time Compiler for the Lua 5.1 language Lead dev : Mike Pall started on 2005 Code size ~ 42 KLoC of C Binary ~ 300 Kb License : MIT (like Lua) public Git repository use Lua mailing list [email protected]

History of releases

[email protected]

Sponsors for new features 

x64 port  



PPC port 





PowerPC/e500v2  anon. corporate PowerPC/e300  anon. corporate

ARM port 



Athena Capital Research : 5 k€ Google Inc. : 8 k

QUALCOMM Inc.  ARMv5 architecture with soft FP  dual number VM

Bytecode load/save 

anon. Corporate [email protected]

Compatibility with standard Lua 

Language Lua 5.1 



without backward compatibility with 5.0

C API 5.1  

API : source compatible ABI : binaire compatible (linker/dynamic loader) 



ie. LuaSocket build with Lua works with LuaJIT

Not with bytecode of Lua 5.1 

which is an detail of implementation, not a part of Lua 5.1 specifications (ref. man.)

[email protected]

Design of standard Lua Standard Libraries C API

Lua source

Lexer

Parser LL(1)

Bytecode Generator

bytecode file

[email protected]

Virtual Machine

Garbage Collector

Design of LuaJIT Standard Libraries C API

Lua source

Lexer

Parser LL(1)

Bytecode Generator

Virtual Machine Just-In-Time Compiler

GC

[email protected]

DynASM 





a Dynamic Assembler for code generation engines developed for LuaJIT, but might be useful for other projects Search with Google Scholar :     

Trace Compiler JIT Compiler Dynamic Language Optimizations SSA Form Linear Scan Register Allocation [email protected]

Factorial $ cat fact.lua local function factorial (n) local a = 1 for i = 1, n do a = a * i end return a end for a = 1, 1000 do --> trigger the JIT print(factorial(7)) end [email protected]

Standard Lua bytecode

$ luac –l fact.lua function (9 instructions, 36 bytes at 0x8 1 param, 6 slots, 0 upvalues, 6 locals, 1 constant, 0 fu 1 [3] LOADK 1 -1 ; 1 2 [4] LOADK 2 -1 ; 1 3 [4] MOVE 3 0 4 [4] LOADK 4 -1 ; 1 5 [4] FORPREP 2 1 ; to 7 6 [5] MUL 1 1 5 7 [4] FORLOOP 2 -2 ; to 6 8 [7] RETURN 1 2 9 [8] RETURN 0 1

[email protected]

LuaJIT bytecode $ luajit –b –l fact.lua -- BYTECODE -- fact.lua:2-8 0001 KSHORT 1 1 0002 KSHORT 2 1 0003 MOV 3 0 0004 KSHORT 4 1 0005 FORI 2 => 0008 0006 => MULVV 1 1 5 0007 FORL 2 => 0006 0008 => RET1 1 2 [email protected]

LuaJIT assembler $ luajit –jdump fact.lua ---- TRACE 1 mcode 115 … … ->LOOP: b771ffe0 xorps xmm6, xmm6 b771ffe3 cvtsi2sd xmm6, edi b771ffe7 mulsd xmm7, xmm6 b771ffeb add edi, +0x01 b771ffee cmp edi, eax b771fff0 jle 0xb771ffe0 ->LOOP b771fff2 jmp 0xb7718014 ->3 ---- TRACE 1 stop -> loop [email protected]

Performances 

One of the fastest



No longer on shootout  



The Computer Language Benchmark Game now, only the standard Lua

See this blog : The speed, size and dependability of programming languages

[email protected]

FFI library 

Foreign Function Interface



allows calling functions in DLLs or shared libraries



parses plain C declarations

[email protected]

Hello World with FFI local ffi = require "ffi" ffi.cdef [[ int printf(const char *fmt, ...); ]] ffi.C.printf("Hello %s!", "world")

[email protected]

Another Sample local ffi = require "ffi" ffi.cdef [[ unsigned long compressBound(unsigned long sourceLen); int compress2(uint8_t *dest, unsigned long *destLen, const uint8_t *source, unsigned long sourceLen, int level); ]] local zlib = ffi.load "z" local function compress (txt) local n = zlib.compressBound(#txt) local buf = ffi.new("uint8_t[?]", n) local buflen = ffi.new("unsigned long[1]") local res = zlib.compress2(buf, buflen, txt, #txt, 9) assert(res == 0) return ffi.string(buf, buflen[0]) end

[email protected]

Bibliography / Webography  

www.lua.org www.luajit.org

[email protected]

LuaJIT (25')

The Computer Language Benchmark Game. now, only the standard Lua. See this blog : The speed, size and dependability of programming languages ...

584KB Sizes 4 Downloads 180 Views

Recommend Documents

2014 05 25 Newsletter May 25 2014.pdf
25 May 2014 - West Wicklow Day Care has worked strenuously to pro- vide limited nursing, wellbeing and social servies out of St.Joseph's Hall. where the infrastructure is inadequate. Work on the new centre has com- menced and completion is scheduled

2015 10 25 Newsletter October 25 2015.pdf
Page 1 of 2. Parish Team. Clergy. Fr. Enda Cunningham PP. St Mary's Parochial House. Saggart. Tel: 4589209. Mob: 087-1380695. Fr. Aidan Kieran CC. 1 The Glebe. Peamount Road. Newcastle. Tel: 4589230. Mob: 087-6397744. Fr. Aloysius Zuribo C.C.. 2 Carr

Issue 25 - WordPress.com
theme: Political Extremism and Psycho- pathology. Recent world .... of psychiatry is an old theme: that the. DSM is ...... bridge University Press: 1-24. Kuhn, T.Missing:

25.pdf
Page 1 of 12. Transaction Finalization Strategies: A Reclassification. Raymond C. Rody, Loyola Marymount University. Robert Winsor, Loyola Marymount University. Gladis Kaufman, University of Wisconsin - Waukesha Center. A theoretical framework and re

25. Stupidope.pdf
A dope vacation doesn't always involve a five star hotel and tourist attractions. ... Sweet! STUPIDOPE. Page 2 of 2. 25. Stupidope.pdf. 25. Stupidope.pdf. Open.

2017 06 25 Newsletter June 25 2017.pdf
Page 1 of 2. Parish Team. Clergy. Fr. John Gilligan Moderator. St Mary's Parochial House. Saggart. Tel: 4589209. Mobile: 087-4103239. Fr. Aidan Kieran CC. 1 The Glebe. Peamount Road. Newcastle. Tel: 4589230. Mob: 087-6397744. Fr. Aloysius Zuribo C.C.

25.pdf
IN A SMALL HIGH-TECHNOLOGY FIRM .... the levels of application engineer, design engineer, senior design engineer, and product ... Displaying 25.pdf.

25.pdf
business have some form of client-student type projects either through marketing. research classes or ... Data Analysis 43 57. c. ... Displaying 25.pdf. Page 1 of 6.

August 25
their use in foreign language courses and in a course on language learning from an academic perspective. They have also been ... Maximizing Study Abroad project, she has continually worked towards helping others both understand .... managing re-entry

25.pdf
Chandigarh NR 71 7 15 30 123 13 0 2 1 ... OA HH. Chennai SR 89 22 19 12 142 14 0 2 0 ... OA HH. Guwahati NFR 59 17 8 29 113 12 0 6 0 ... OA ... Gorakhpur NER 29 8 4 18 59 0 0 0 0 ... ... ... Jammu-Srinagar NR 27 7 4 14 52 5 0 2 0 ... OA ... Kolkata E