History log of /external/llvm/lib/ExecutionEngine/JIT/JIT.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
30b9e322e159df8eaabb5b194cec6e11ba99c261 28-Mar-2012 Danil Malyshev <dmalyshev@accesssoftek.com> Move getPointerToNamedFunction() from JIT/MCJIT to JITMemoryManager.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153607 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
3e29671cca14f8fce1ea6b602175880cb3df7199 22-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Revert a series of commits to MCJIT to get the build working in CMake
(and hopefully on Windows). The bots have been down most of the day
because of this, and it's not clear to me what all will be required to
fix it.

The commits started with r153205, then r153207, r153208, and r153221.
The first commit seems to be the real culprit, but I couldn't revert
a smaller number of patches.

When resubmitting, r153207 and r153208 should be folded into r153205,
they were simple build fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153241 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
7803ec3d458ec73372760b838469292cdf38fe67 21-Mar-2012 Danil Malyshev <dmalyshev@accesssoftek.com> Based on this discussion: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120305/138477.html
1. Declare a virtual function getPointerToNamedFunction() in JITMemoryManager
2. Move the implementation of getPointerToNamedFunction() form JIT/MCJIT to DefaultJITMemoryManager.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153205 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
45a93d6eb4c55876e94f91b471657f23fe2149aa 05-Jan-2012 Danil Malyshev <dmalyshev@accesssoftek.com> A small re-factored JIT/MCJIT::getPointerToNamedFunction(), so it could be called with the base class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
9ea47179e647e806a2c67639bfead9d254514e59 12-Dec-2011 Dylan Noblesmith <nobled@dreamwidth.org> ExecutionEngine: refactor interface

The OptLevel is now redundant with the TargetMachine*.
And selectTarget() isn't really JIT-specific and could probably
get refactored into one of the lower level libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146355 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
34ad6db8b958fdc0d38e122edf753b5326e69b03 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Move CodeModel from a TargetMachine global option to MCCodeGenInfo.
- Introduce JITDefault code model. This tells targets to set different default
code model for JIT. This eliminates the ugly hack in TargetMachine where
code model is changed after construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135580 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
439661395fd2a2a832dba01c65bc88718528313c 19-Jul-2011 Evan Cheng <evan.cheng@apple.com> Introduce MCCodeGenInfo, which keeps information that can affect codegen
(including compilation, assembly). Move relocation model Reloc::Model from
TargetMachine to MCCodeGenInfo so it's accessible even without TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
c5b28580a94e247300e5d3ccf532e153f2ae6f12 13-May-2011 Dylan Noblesmith <nobled@dreamwidth.org> ExecutionEngine: push TargetMachine creation into clients (v2)

In particular, into EngineBuilder. This should only impact
the private API between the EE and EB classes, not external
clients, since JITCtor and MCJITCtor are both protected members.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131317 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
2ea29ba2a8ddd7ba4b946eb754f1a39304d9fc09 13-May-2011 Dylan Noblesmith <nobled@dreamwidth.org> ExecutionEngine: fix JIT/MCJIT selectTarget() duplication (v2)

This prepares for making JITCtor/MCJITCtor take a
TargetMachine* directly from clients like EngineBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131316 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
701529b2488477d1887c2975677a574d1e90389f 07-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert ExecutionEngine patches, they either failed to build or broke unit tests.

Please ensure the build is clean and tests are passing when recommitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
c06b511eba8a0f7c6dd01c067836168cc33d7801 07-May-2011 Dylan Noblesmith <nobled@dreamwidth.org> ExecutionEngine: push TargetMachine creation into clients

In particular, into EngineBuilder. This should only impact
the private API between the EE and EB classes, not external
clients, since JITCtor and MCJITCtor are both protected members.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
71cbac6a834a6ab48598b57cf9e97d7b3da421ef 07-May-2011 Dylan Noblesmith <nobled@dreamwidth.org> ExecutionEngine: fix JIT/MCJIT selectTarget() duplication

This prepares for making JITCtor/MCJITCtor take a
TargetMachine* directly from clients like EngineBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131025 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
124d0332dbf79ae44a61968c7c2d379552cc715d 16-Mar-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Whitespace and 80 column.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
3472766f9eb7d66f234c390ce1b3a8b76f0ee9ce 12-Jul-2010 Duncan Sands <baldrick@free.fr> Convert some tab stops into spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108130 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
68feb22ad8e7e3b5cd97312ef105505b3c554d40 12-Jul-2010 Chris Lattner <sabre@nondot.org> first part of JIT support for address of labels, part of PR7264,
patch by Yuri!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
40966a7c6847c102fbf466da3e8726c59c3dbb1e 11-Feb-2010 Jeffrey Yasskin <jyasskin@google.com> Make it possible to create multiple JIT instances at the same time, by removing
the global TheJIT and TheJITResolver variables. Lazy compilation is supported
by a global map from a stub address to the JITResolver that knows how to
compile it.

Patch by Olivier Meurant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95837 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
4688261c20735f5ead2f08695acdeb727db31894 05-Feb-2010 Jeffrey Yasskin <jyasskin@google.com> Move --march, --mcpu, and --mattr from JIT/TargetSelect.cpp to lli.cpp.
llc.cpp also defined these flags, meaning that when I linked all of LLVM's
libraries into a single shared library, llc crashed on startup with duplicate
flag definitions. This patch passes them through the EngineBuilder into
JIT::selectTarget().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95390 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
f0356fe140af1a30587b9a86bcfb1b2c51b8ce20 27-Jan-2010 Jeffrey Yasskin <jyasskin@google.com> Kill ModuleProvider and ghost linkage by inverting the relationship between
Modules and ModuleProviders. Because the "ModuleProvider" simply materializes
GlobalValues now, and doesn't provide modules, it's renamed to
"GVMaterializer". Code that used to need a ModuleProvider to materialize
Functions can now materialize the Functions directly. Functions no longer use a
magic linkage to record that they're materializable; they simply ask the
GVMaterializer.

Because the C ABI must never change, we can't remove LLVMModuleProviderRef or
the functions that refer to it. Instead, because Module now exposes the same
functionality ModuleProvider used to, we store a Module* in any
LLVMModuleProviderRef and translate in the wrapper methods. The bindings to
other languages still use the ModuleProvider concept. It would probably be
worth some time to update them to follow the C++ more closely, but I don't
intend to do it.

Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94686 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
aad0d52c5bc088e6182f83becee29846bb00d592 17-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Don't codegen available_externally functions. Fixes http://llvm.org/PR5735.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
88b5aca20a6dd0a8b15ff620bdee59aae567d245 17-Nov-2009 Eric Christopher <echristo@apple.com> Add ability to set code model within the execution engine builders
and creation interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89151 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
6f348e458660063a40052b208bab96895c822877 09-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Remove dlsym stubs, with Nate Begeman's permission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86606 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
0507d8373a074c77f524b435cdf076accd65394a 29-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix MSVC build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85505 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
f32a6a3091e0b01d17926f4b1cf78972854b8cb5 29-Oct-2009 Chris Lattner <sabre@nondot.org> add interpreter support for indirect goto / blockaddress. The interpreter
now correctly runs clang's test/CodeGen/indirect-goto.c. The JIT will abort
on it until someone feels compelled to implement this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
7a9034c4db248fe8b8cb82762881b51b221988d3 27-Oct-2009 Jeffrey Yasskin <jyasskin@google.com> Automatically do the equivalent of freeMachineCodeForFunction(F) when F is
being destroyed. This allows users to run global optimizations like globaldce
even after some functions have been jitted.

This patch also removes the Function* parameter to
JITEventListener::NotifyFreeingMachineCode() since it can cause that to be
called when the Function is partially destroyed. This change will be even more
helpful later when I think we'll want to allow machine code to actually outlive
its Function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85182 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
e5f879825f5e6746144addd93a852cdd5896e9c1 13-Oct-2009 Jeffrey Yasskin <jyasskin@google.com> Keep track of stubs that are created. This fixes PR5162 and probably PR4822 and
4406. Patch by Nick Lewycky!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
2763217fbd2f1c54a7a25fd3ae9e997ea6ece0cb 21-Sep-2009 Reid Kleckner <reid@kleckner.net> Implement the JIT side of the GDB JIT debugging interface. To enable this
feature, either build the JIT in debug mode to enable it by default or pass
-jit-emit-debug to lli.

Right now, the only debug information that this communicates to GDB is call
frame information, since it's already being generated to support exceptions in
the JIT. Eventually, when DWARF generation isn't tied so tightly to AsmPrinter,
it will be easy to push that information to GDB through this interface.

Here's a step-by-step breakdown of how the feature works:

- The JIT generates the machine code and DWARF call frame info
(.eh_frame/.debug_frame) for a function into memory.
- The JIT copies that info into an in-memory ELF file with a symbol for the
function.
- The JIT creates a code entry pointing to the ELF buffer and adds it to a
linked list hanging off of a global descriptor at a special symbol that GDB
knows about.
- The JIT calls a function marked noinline that GDB knows about and has put an
internal breakpoint in.
- GDB catches the breakpoint and reads the global descriptor to look for new
code.
- When sees there is new code, it reads the ELF from the inferior's memory and
adds it to itself as an object file.
- The JIT continues, and the next time we stop the program, we are able to
produce a proper backtrace.

Consider running the following program through the JIT:

#include <stdio.h>
void baz(short z) {
long w = z + 1;
printf("%d, %x\n", w, *((int*)NULL)); // SEGFAULT here
}
void bar(short y) {
int z = y + 1;
baz(z);
}
void foo(char x) {
short y = x + 1;
bar(y);
}
int main(int argc, char** argv) {
char x = 1;
foo(x);
}

Here is a backtrace before this patch:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x2aaaabdfbd10 (LWP 25476)]
0x00002aaaabe7d1a8 in ?? ()
(gdb) bt
#0 0x00002aaaabe7d1a8 in ?? ()
#1 0x0000000000000003 in ?? ()
#2 0x0000000000000004 in ?? ()
#3 0x00032aaaabe7cfd0 in ?? ()
#4 0x00002aaaabe7d12c in ?? ()
#5 0x00022aaa00000003 in ?? ()
#6 0x00002aaaabe7d0aa in ?? ()
#7 0x01000002abe7cff0 in ?? ()
#8 0x00002aaaabe7d02c in ?? ()
#9 0x0100000000000001 in ?? ()
#10 0x00000000014388e0 in ?? ()
#11 0x00007fff00000001 in ?? ()
#12 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
F=0x14024e0, ArgValues=@0x7fffffffe050)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
#13 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
(this=0x1405b70, Fn=0x14024e0, argv=@0x13f06f8, envp=0x7fffffffe3b0)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
#14 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe398,
envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208

And a backtrace after this patch:
Program received signal SIGSEGV, Segmentation fault.
0x00002aaaabe7d1a8 in baz ()
(gdb) bt
#0 0x00002aaaabe7d1a8 in baz ()
#1 0x00002aaaabe7d12c in bar ()
#2 0x00002aaaabe7d0aa in foo ()
#3 0x00002aaaabe7d02c in main ()
#4 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70,
F=0x14024e0, ArgValues=...)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395
#5 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain
(this=0x1405b70, Fn=0x14024e0, argv=..., envp=0x7fffffffe3c0)
at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377
#6 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe3a8,
envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
4b1511b027ce0b648b3379f2891816c25b46f515 18-Jul-2009 Reid Kleckner <reid@kleckner.net> Add EngineBuilder to ExecutionEngine in favor of the five optional argument EE::create().

Also a test commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76276 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
deb052a3dd0227579f86d74b3c1d70384ea5c16b 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
489393d7b92107cc3de17d8dbe7dd11ab7395fdc 08-Jul-2009 Jeffrey Yasskin <jyasskin@google.com> Add an option to allocate JITed global data separately from code. By
default, this option is not enabled to support clients who rely on
this behavior.

Fixes http://llvm.org/PR4483

A patch to allocate additional memory for globals after we run out is
forthcoming.

Patch by Reid Kleckner!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
df5a7daff9c7664bff8b713e8ed5155319bc6041 25-Jun-2009 Jeffrey Yasskin <jyasskin@google.com> Add a JITEventListener interface that gets called back when a new function is
emitted or the machine code for a function is freed. Chris mentioned that we
may also want a notification when a stub is emitted, but that'll be a future
change. I intend to use this to tell oprofile where functions are emitted and
what lines correspond to what addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74157 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
434dd4fd94f5f248492c675e4285e7d67342d4c4 01-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix new CodeEmitter stuff to follow LLVM codying style. Patch by Aaron Gray

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
a3f99f90338d89354384ca25f53ca4450a1a9d18 30-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> First patch in the direction of splitting MachineCodeEmitter in two subclasses:
JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
b3a847db0b991d3210706a2580428fdc2b6bf037 18-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow the JIT ExecutionEngine to report details about the generated machine code.
Introduce a new class (MachineCodeInfo) that the JIT can fill in with details. Right now, just the address and the size of the machine code are reported.

Patch by Evan Phoenix!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72040 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
98a366d547772010e94609e4584489b3e5ce0043 30-Apr-2009 Bill Wendling <isanbard@gmail.com> Instead of passing in an unsigned value for the optimization level, use an enum,
which better identifies what the optimization is doing. And is more flexible for
future uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
5e5cb7985de2508ecd707568afbcbb39e8a688fc 29-Apr-2009 Bill Wendling <isanbard@gmail.com> The second part of the change from -fast to -O#. This changes the JIT to accept
an optimization level instead of a simple boolean telling it to generate code
"fast" or the other type of "fast".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70347 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
d6b7a242d345fd79a337afd384bb586c5619cfe7 18-Feb-2009 Nate Begeman <natebegeman@mac.com> Add support to the JIT for true non-lazy operation. When a call to a function
that has not been JIT'd yet, the callee is put on a list of pending functions
to JIT. The call is directed through a stub, which is updated with the address
of the function after it has been JIT'd. A new interface for allocating and
updating empty stubs is provided.

Add support for removing the ModuleProvider the JIT was created with, which
would otherwise invalidate the JIT's PassManager, which is initialized with the
ModuleProvider's Module.

Add support under a new ExecutionEngine flag for emitting the infomration
necessary to update Function and GlobalVariable stubs after JITing them, by
recording the address of the stub and the name of the GlobalValue. This allows
code to be copied from one address space to another, where libraries may live
at different virtual addresses, and have the stubs updated with their new
correct target addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64906 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
21afcda54479602c2936946731a3f1ee8e5d2322 06-Feb-2009 Dan Gohman <gohman@apple.com> Split the locking out of JIT::runJITOnFunction so that callers
that already hold the lock can call an entry point that doesn't
re-acquire the lock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63965 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
60789e419e04c260e36af9a1add5ad316313e490 23-Jan-2009 Nate Begeman <natebegeman@mac.com> Add support for deleting a module provider from a JIT in such a way that it does not cause the owned module to be fully materialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
69f9378675b23135043d93aa58300fed3ec41cbf 05-Jan-2009 Dan Gohman <gohman@apple.com> Handle weak_extern in the JIT. This fixes
SingleSource/UnitTests/2007-04-25-weak.c in JIT mode. The test
now passes on systems which are able to produce a correct
reference output to compare with.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
46fa139e26be6ebc00be2fb45820c2560dd22a32 25-Oct-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Support for allocation of TLS variables in the JIT. Allocation of a global
variable is moved to the execution engine. The JIT calls the TargetJITInfo
to allocate thread local storage. Currently, only linux/x86 knows how to
allocate thread local global variables.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58142 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
502f20b17ede40de84503010b7699b328a4f2867 08-Aug-2008 Evan Cheng <evan.cheng@apple.com> Add new parameter Fast to createJIT to enable the fast codegen path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
8f613f30a78aa9d93d08a209b6c159c2000d8d6c 05-Aug-2008 Dan Gohman <gohman@apple.com> Trim #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
ce3c413e077211c505465cb53d005342a5b1f96c 03-Jul-2008 Dan Gohman <gohman@apple.com> Correct a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
f049e07eb8930214941c72f8e4409df394de1567 21-May-2008 Nate Begeman <natebegeman@mac.com> Fix a couple issues with the JIT and multiple modules:

1. The "JITState" object creates a PassManager with the ModuleProvider that the
jit is created with. If the ModuleProvider is removed and deleted, the
PassManager is invalid.

2. The Global maps in the JIT were not invalidated with a ModuleProvider was
removed. This could lead to a case where the Module would be freed, and a
new Module with Globals at the same addresses could return invalid results.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
950a4c40b823cd4f09dc71be635229246dfd6cac 25-Mar-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
4ee451de366474b9c228b4e5fa573795a715216d 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
34c9433004cabd4760987dce4804a91c84908219 06-Dec-2007 Chris Lattner <sabre@nondot.org> add a new ExecutionEngine::createJIT which can be used if you only want
to create a JIT. This lets you specify JIT-specific configuration items
like the JITMemoryManager to use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
9f2f142d255bc96f109dd5c6524a485937b1f3a1 06-Dec-2007 Chris Lattner <sabre@nondot.org> simplify creation of the interpreter, make ExecutionEngine ctor protected,
delete one ExecutionEngine ctor, minor cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
f7e968a2a2bcaa0d253e668c0aee7c859aa8b36b 21-Apr-2007 Chris Lattner <sabre@nondot.org> fit in 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36288 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
2c639add5f54ba0d0d59771e16d0582f6c59b8be 21-Apr-2007 Chris Lattner <sabre@nondot.org> rename JIT::state -> JIT::jitstate to avoid shadowing ExecutionEngine::state


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
d4c0e62413ac4c81467ce59025c81210ea431752 03-Mar-2007 Reid Spencer <rspencer@reidspencer.com> Deal with error handling better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34887 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
e748401b180d7041738e14d3896ac61ca4bdfcba 24-Feb-2007 Chris Lattner <sabre@nondot.org> Fix PR1216 by cleaning up the ownership of JITResolver.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34552 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
726c1ef2bdd72975f41e3188371bb7d6f40401be 23-Mar-2006 Chris Lattner <sabre@nondot.org> remove the intrinsiclowering hook


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26970 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
2fe4bb06c6c40d16b7a5ae9cdf6bb6fe94d51be0 22-Mar-2006 Chris Lattner <sabre@nondot.org> Eliminate the dependency of ExecutionEngine on the JIT/Interpreter libraries.

Now you can build a tool with just the JIT or just the interpreter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
ee448630bdf7eb6037fe2c50518d32010c433ca3 12-Jul-2005 Reid Spencer <rspencer@reidspencer.com> For PR540:
This patch completes the changes for making lli thread-safe. Here's the list
of changes:
* The Support/ThreadSupport* files were removed and replaced with the
MutexGuard.h file since all ThreadSupport* declared was a Mutex Guard.
The implementation of MutexGuard.h is now based on sys::Mutex which hides
its implementation and makes it unnecessary to have the -NoSupport.h and
-PThreads.h versions of ThreadSupport.

* All places in ExecutionEngine that previously referred to "Mutex" now
refer to sys::Mutex

* All places in ExecutionEngine that previously referred to "MutexLocker"
now refer to MutexGuard (this is frivolous but I believe the technically
correct name for such a class is "Guard" not a "Locker").

These changes passed all of llvm-test. All we need now are some test cases
that actually use multiple threads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22404 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
f976c856fcc5055f3fc7d9f070d72c2d027c1d9d 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Remove trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
890b4bd3c0b64235a43159fd44fba9a5a4ae8190 20-Nov-2004 Chris Lattner <sabre@nondot.org> Add accessor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
895eddfad43f848d5accce1789aa80be0db459d3 08-Nov-2004 Misha Brukman <brukman+llvm@gmail.com> Implement ExecutionEngine::freeMachineCodeForFunction()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
7301178aac1baf1cc334e7c7a66bfe50a65fbf49 28-Dec-2003 Chris Lattner <sabre@nondot.org> Pass around IntrinsicLowering instances as appropriate.
Reimplement the Interpreters implementation of va_* to be more direct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
ff0f1bb32a439cf82cb09ee29544c894a2bfe877 26-Dec-2003 Chris Lattner <sabre@nondot.org> No longer run atExit functions from run()
rename run to runFunction
Genericize the runFunction code a little bit, though it still stinks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
c07ed1387503d25c0b93fcf617f69329d73fc589 20-Dec-2003 Chris Lattner <sabre@nondot.org> Implement PR135, lazy emission of global variables


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
4d326fa9bea5b80147edf14d1521fc41ce315275 20-Dec-2003 Chris Lattner <sabre@nondot.org> Cleanup the JIT as per PR176. This renames the VM class to JIT, and merges the
VM.cpp and JIT.cpp files into JIT.cpp. This also splits some nasty code out
into TargetSelect.cpp so that people hopefully won't notice it. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10544 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
1e60a9165dc4d6ce5650dacc026f2942696af920 20-Dec-2003 Chris Lattner <sabre@nondot.org> Rip JIT specific stuff out of TargetMachine, as per PR176


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
993bdcec009bb833c501b1e61707cd7030068698 12-Dec-2003 Chris Lattner <sabre@nondot.org> Implement the ExecutionEngine::getPointerToFunctionOrStub by forwarding the
request on to the TargetMachine if it supports the getJITStubForFunction method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10431 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
d0fde30ce850b78371fd1386338350591f9ff494 11-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Put all LLVM code into the llvm namespace, as per bug 109.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
856ba76200ec2302f2fe500bc507f426c7d566c8 21-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM copyright header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9321 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
55c0f02cbf4f3716c5fdba7e227c5c8b99bc89ff 17-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Tidy up doxygen comment for getPointerToFunction().
Add prototypes for recompileAndRelinkFunction() and runJITOnFunction().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
005e5e9a482674b648ff8595c65239efab9b6276 14-Oct-2003 Misha Brukman <brukman+llvm@gmail.com> Enabling incremental bytecode loading in the JIT:
* The VM is now constructed with a ModuleProvider


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9125 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
9722294d30fff2a432d8e171eb904f33956353e2 05-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> ExecutionEngine.h, GenericValue.h --> include/llvm/ExecutionEngine/
Build ExecutionEngine as library.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
70975eef572b9e132bbaade16ba9edb76f15f287 05-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> Make CreateArgv part of lli rather than part of ExecutionEngine.
Switch Interpreter and JIT's "run" methods to take a Function and a vector of
GenericValues.
Move (almost all of) the stuff that constructs a canonical call to main()
into lli (new methods "callAsMain", "makeStringVector").
Nuke getCurrentExecutablePath(), enableTracing(), getCurrentFunction(),
isStopped(), and many dead decls from interpreter.
Add linux strdup() support to interpreter.
Make interpreter's atexit handler runner and JIT's runAtExitHandlers() look
more alike, in preparation for refactoring.
atexit() is spelled "atexit", not "at_exit".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
82d8277ad5862b54341808812bb4016e52347060 03-Sep-2003 Brian Gaeke <gaeke@uiuc.edu> ExecutionEngine.cpp: Move execution engine creation stuff into a new
static method here.
Remove some extra blank lines.
ExecutionEngine.h: Add its prototype.
lli.cpp: Call it.

Make creation method for each type of EE into a static method of its
own subclass.

Interpreter/Interpreter.cpp: ExecutionEngine::createInterpreter -->
Interpreter::create
Interpreter/Interpreter.h: Likewise.
JIT/JIT.cpp: ExecutionEngine::createJIT --> VM::create
JIT/VM.h: Likewise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8343 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
69582b35b6aa4e48cbbad7f6f1193c967da96b25 21-Aug-2003 John Criswell <criswell@uiuc.edu> The JIT now passes the environment pointer to the main() function when it
starts a program. This allows the GNU env program to compile and JIT under
LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
c227c1fc7fe9dcfbb1ee0245d5b9b190e2835631 13-Aug-2003 Brian Gaeke <gaeke@uiuc.edu> Deconstify parameter to getPointerToFunction().
Use a FunctionPassManager instead of a PassManager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
906f5fa5c8bb790201c79a33ea6d906f9f57f827 02-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> * Removed SparcEmitter.cpp; rolled into lib/Target/Sparc/SparcV9CodeEmitter.cpp
* No more createX86Emitter() vs. createSparcEmitter() -- there can be only one
* As a result, the memory management semantics must be handled according to
platform -- the parameters to mmap() are particularly sensitive to the host
architecture.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6527 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
bba1b6df9a7ac36e3a479dfe953a9618c87db7bb 02-Jun-2003 Chris Lattner <sabre@nondot.org> Move target specific code to target files. The new MachineCodeEmitter
class is actually target independent!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6517 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
abb027cf412944db4d27579ba3ae00717d23c25e 27-May-2003 Misha Brukman <brukman+llvm@gmail.com> Allow for specification of which JIT to run on the commandline.
`lli -march=x86' or `lli -march=sparc' will forcefully select the JIT even on a
different platform. Running lli without the -march option will select the JIT
for the platform that it's currently running on.

Pro: can test Sparc JIT (debug printing mode) on X86 -- faster to compile/link
LLVM source base to test changes.
Con: Linking lli on x86 now pulls in all the Sparc libs -> longer link time
(but X86 can bear it, right?)

In the future, perhaps this should be a ./configure option to enable/disable
target JITting...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6360 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
22080f9f168b0129d0ed3a2a29a145e17723c3ba 14-May-2003 Chris Lattner <sabre@nondot.org> Add support for atexit handlers to the JIT, fixing 2003-05-14-AtExit.c


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6193 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
6125fddb52c3d821a4e4c000cbd210428b0009f6 09-May-2003 Chris Lattner <sabre@nondot.org> Add support for function stubs, which allow calling functions which need to
have an address available, but have not yet been code generated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
c309a7627ce8849b63f6f297ca319d582f4ae066 08-May-2003 Chris Lattner <sabre@nondot.org> Improve efficiency of JIT by having it use direct function calls instead of
signals to regain control from the executing code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6051 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
0d448c03f30d7f4f7fa27fea1478aaf35e954f56 13-Jan-2003 Chris Lattner <sabre@nondot.org> Add support for named functions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h
836f675c49bbb482daf6e0e01a66dd0beee11a49 24-Dec-2002 Chris Lattner <sabre@nondot.org> Initial checkin


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5127 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JIT.h