[llvm-dev] Feasibility of cling/llvm interpreter for JIT replacement (jacob navia via llvm-dev)

Stéphane Letz via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 10 09:21:53 PDT 2019


> 
> Message: 7
> Date: Wed, 10 Apr 2019 10:21:19 +0200
> From: jacob navia via llvm-dev <llvm-dev at lists.llvm.org>
> To: LLVM Dev <llvm-dev at lists.llvm.org>, Schwartz Jean-Georges
> 	<jg at 4js.com>
> Subject: [llvm-dev] Feasibility of cling/llvm interpreter for JIT
> 	replacement
> Message-ID: <6dc7cf4d-0369-151b-369a-f33148879b25 at jacob.remcomp.fr>
> Content-Type: text/plain; charset="utf-8"; Format="flowed"
> 
> Dear Sir/Madam
> 
> 
> Our company, 4Js software, has developed an SQL data base software that 
> runs under different operating systems: Windows, Linux, Mac OS X. This 
> software compiles each SQL statement into a C program that is compiled 
> "on the fly" and executed by our JIT, Just In Time compiler.
> 
> We wanted to port it to Apple's iOS, and spent a lot of time 
> retargetting the JIT for supporting the ARM 64 CPU, but to our surprise, 
> when everything was ready, we learned that Apple iOS forbids software to 
> generate dynamically an executable.
> 
> After several months of reflections we think we can get around this 
> problem  by using a C interpreter. Instead of compiling it to machine 
> code, we would pass the generated C program to  a C interpreter that 
> would interpret the C program.
> 
> After looking at several interpreters, we think that the llvm based 
> CLING interpreter could do the job. To test these ideas, we have 
> recompiled the llvm/Clang system in a small linux/ARM64 based machine. 
> Our preliminary tests seem to work and cling is able to load the 
> generated program.
> 
> There are several possible problems that we see.
> 
> 
> The first and most obvious one is the incredible size of the CLING 
> interpreter (200MB stripped). Our whole data base is 80MB stripped. We 
> are targetting an Apple iPad, boosted with 1TO SSD/6GB RAM. What would 
> be the minimum requirements for CLING in terms of RAM size?
> 
> The second question is that we have still concerns over the overall 
> approach. Do you see any problems with this architecture? Can it work on 
> principle?
> 
> The third question concerns the feasibility of our JIT generating byte 
> codes for the LLVM interpreter, boosting performance and reducing RAM 
> footprint. Would that be a better solution than using the CLING 
> interpreter? Is that possible within Apple's iOS?
> 
> And yet another question is the need to modify the CLING interpreter so 
> that it receives its input from a character buffer instead of a file, 
> and other small tweaks. Is that possible?
> 
> Are there any copyright issues? Are we allowed to embed the llvm 
> software into our system? Of course we would publish any modifications 
> done to the source code.
> 
> We thank you in advance for any answers to the questions above.
> 
> 
> Yours sincerely
> 
> 
> Jacob Navia
> 
> iOS Project Manager
> 
> 4Js Software. https://4js.com
> 28 Quai Gallieni, 92150 Suresnes
> 
> FRANCE

Would going the WebAssembly path + JavaScriptCore on iOS makes sense?

Stéphane Letz


More information about the llvm-dev mailing list