On Mar 29, 2009, at 5:31 PM, Evan Cheng wrote:> > On Mar 29, 2009, at 9:48 AM, Kasra wrote: > >> >> Hi guys, >> >> I was looking arround Firefox 3.1 js JIT (TraceMonkey), it made me >> wonder if there is anyone working on a trace-tree technique for >> optimising the runtime over head of LLVM JIT?? >> >>LLVM directly supports this sort of thing, what is it that you need? >Just compile one trace tree to one LLVM function.>-ChrisHow does it provide tracing? My goal it to make the JIT faster at runtime. By tracing I meant, optional optimisation based on the execution of the software. For example if a node within the execution tree is rarely used when it is invoked JIT will do little optimisations and for parts that is used frequently multiple optimisations occurs. -- Kasra
On Apr 1, 2009, at 2:23 PM, Kasra wrote:>> LLVM directly supports this sort of thing, what is it that you need? >> Just compile one trace tree to one LLVM function. > >> -Chris > > How does it provide tracing? > My goal it to make the JIT faster at runtime. By tracing I meant, > optional > optimisation based on the execution of the software. > > For example if a node within the execution tree is rarely used when > it is > invoked JIT will do little optimisations and for parts that is used > frequently multiple optimisations occurs.Only compile to LLVM IR the pieces of the code that are hot. Cold pieces just run through the interpreter. Falling off the trace tree returns to the interpreter. Chaining of traces can be done by having traces end with indirect tail calls. -Chris