History log of /external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

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

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
01a21b33798424736cd0065c1a1d00792be5c3a0 11-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e4496548155ba6606f107fbdc10ea17e58fd3401 07-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove exception handling support from the old JIT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181354 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
dced3cdb0408f0802db332453a1e9c69c5fea70c 11-Jan-2013 Eli Bendersky <eliben@google.com> Fix bug in exception table allocation (PR13678)

Patch by Michael Muller.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172214 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
8ac1995456d6938b68f232995f49c86369dd121d 12-Oct-2012 Sean Silva <silvas@purdue.edu> Remove buggy classof().

This classof() is effectively saying that a MachineCodeEmitter "is-a"
JITEmitter, but JITEmitter is in fact a descendant of
MachineCodeEmitter, so this is not semantically correct. Consequently,
none of the assertions that rely on these classof() actualy check
anything.

Remove the RTTI (which didn't actually check anything) and use
static_cast<> instead.

Post-Mortem Bug Analysis
========================

Cause of the bug
----------------

r55022 appears to be the source of the classof() and assertions removed
by this commit. It aimed at removing some dynamic_cast<> that were
solely in the assertions. A typical diff hunk from that commit looked
like:

- assert(dynamic_cast<JITEmitter*>(MCE) && "Unexpected MCE?");
- JITEmitter *JE = static_cast<JITEmitter*>(getCodeEmitter());
+ assert(isa<JITEmitter>(MCE) && "Unexpected MCE?");
+ JITEmitter *JE = cast<JITEmitter>(getCodeEmitter());

Hence, the source of the bug then seems to be an attempt to replace
dynamic_cast<> with LLVM-style RTTI without properly setting up the
class hierarchy for LLVM-style RTTI. The bug therefore appears to be
simply a "thinko".

What initially indicated the presence of the bug
------------------------------------------------

After implementing automatic upcasting for isa<>, classof() functions of
the form

static bool classof(const Foo *) { return true; }

were removed, since they only serve the purpose of optimizing
statically-OK upcasts. A subsequent recompilation triggered a build
failure on the isa<> tests within the removed asserts, since the
automatic upcasting (correctly) failed to substitute this classof().

Key to pinning down the root cause of the bug
---------------------------------------------

After being alerted to the presence of the bug, some thought about the
semantics which were being asserted by the buggy classof() revealed that
it was incorrect.

How the bug could have been prevented
-------------------------------------

This bug could have been prevented by better documentation for how to
set up LLVM-style RTTI. This should be solved by the recently added
documentation HowToSetUpLLVMStyleRTTI. However, this bug suggests that
the documentation should clearly explain the contract that classof()
must fulfill. The HowToSetUpLLVMStyleRTTI already explains this
contract, but it is a little tucked away. A future patch will expand
that explanation and make it more prominent.

There does not appear to be a simple way to have the compiler prevent
this bug, since fundamentally it boiled down to a spurious classof()
where the programmer made an erroneous statement about the conversion.
This suggests that perhaps the interface to LLVM-style RTTI of classof()
is not the best. There is already some evidence for this, since in a
number of places Clang has classof() forward to classofKind(Kind K)
which evaluates the cast in terms of just the Kind. This could probably
be generalized to simply a `static const Kind MyKind;` field in leaf
classes and `static const Kind firstMyKind, lastMyKind;` for non-leaf
classes, and have the rest of the work be done inside Casting.h,
assuming that the Kind enum is laid out in a preorder traversal of the
inheritance tree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165764 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
3574eca1b02600bac4e625297f4ecf745f4c4f32 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
96601ca332ab388754ca4673be8973396fea2ddd 22-Aug-2012 Craig Topper <craig.topper@gmail.com> Add a getName function to MachineFunction. Use it in places that previously did getFunction()->getName(). Remove includes of Function.h that are no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162347 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
0bcbd1df7a204e1e512f1a27066d725309de1b13 28-Jun-2012 Bill Wendling <isanbard@gmail.com> Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.

The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e04690e092fdc4d27a8642775892293f4ae6ede3 16-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Disable the right instance of TheJIT, this one is only used in asserts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a9783663398baf1289683fc7326430b89963f38e 16-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Guard private fields that are unused in Release builds with #ifndef NDEBUG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158608 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
858143816d43e58b17bfd11cb1b57afbd7f0f893 07-Feb-2012 Craig Topper <craig.topper@gmail.com> Convert assert(0) to llvm_unreachable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6c2cf8b1fbcf70fd9db6fe44032c1ceaa2299760 03-Feb-2012 Akira Hatanaka <ahatanaka@mips.com> Add a new MachineJumpTableInfo entry type, EK_GPRel64BlockAddress, which is
needed to emit a 64-bit gp-relative relocation entry. Make changes necessary
for emitting jump tables which have entries with directive .gpdword. This patch
does not implement the parts needed for direct object emission or JIT.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
611caf5f91c4abe934480259043fcbb30ea07e3a 05-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove the old ELF writer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147615 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
8a8d479214745c82ef00f08d4e4f1c173b5f9ce2 02-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Move global variables in TargetMachine into new TargetOptions class. As an API
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.

One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1f6a329f79b3568d379142f921f59c4143ddaa14 12-Aug-2011 Duncan Sands <baldrick@free.fr> Silence a bunch (but not all) "variable written but not read" warnings
when building with assertions disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e 18-Jul-2011 Chris Lattner <sabre@nondot.org> land David Blaikie's patch to de-constify Type, with a few tweaks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5b24017ca8204fc256e57605b2742b38ab77da8e 13-Apr-2011 Jay Foad <jay.foad@gmail.com> Like the coding standards say, do not use "using namespace std".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
515c67ee77f8d9c417efc0fe04615d269bfb70e4 05-Mar-2011 Eric Christopher <echristo@apple.com> Support unregistering exception frames of functions when they are removed.

Patch by Johannes Schaub!

Fixes PR8548


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1f6efa3996dd1929fbc129203ce5009b620e6969 29-Nov-2010 Michael J. Spencer <bigcheesegs@gmail.com> Merge System into Support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c6a39aa5cd4434a57747190dd3342ec814ef7391 23-Aug-2010 Chris Lattner <sabre@nondot.org> remove some dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
134d8eec8789184c7a7290ee101ca3d6f62f384a 22-Jul-2010 Chris Lattner <sabre@nondot.org> remove the JIT "NeedsExactSize" feature and supporting logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
57b6e9eb6ccb757b74beeb377c7c16d08468d3e8 02-May-2010 Duncan Sands <baldrick@free.fr> Remove the -enable-sjlj-eh option, which doesn't do anything.
Remove the -enable-eh option which is only used by the JIT,
and replace it with -jit-enable-eh.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102865 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
69c128f19d04ce7337591d2edbb6701d470c18a4 18-Apr-2010 Bill Wendling <isanbard@gmail.com> Formatting changes. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101685 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
47639fc5be0b8f4873d076a9ed24b9a3c0682b15 16-Apr-2010 Bill Wendling <isanbard@gmail.com> The JIT calls TidyLandingPads to tidy up the landing pads. However, because the
JIT doesn't use the MC back-end asm printer to emit labels that it uses, the
section for the MCSymbol is never set. And thus the MCSymbol for the EH label
isn't marked as "defined". Because of that, TidyLandingPads removes the needed
landing pads from the JIT output. This breaks EH for every JIT program.

This is a work-around for this limitation. We pass in the label locations
map. If the label has a non-zero value, then it was "emitted" by the JIT and
TidyLandingPads shouldn't remove that label.

A nicer solution would be to mark the MCSymbol as "used" by the JIT and not rely
upon the section being set to determine if it's defined or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101453 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
46510a73e977273ec67747eb34cbdb43f815e451 15-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to CodeGen's use of LLVM IR constructs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
4eb373988e3211b0a481dee60ecdc3d12821b7b9 15-Apr-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Don't use DILocation when processing a DebugLoc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101294 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
75361b69f3f327842b9dad69fa7f28ae3b688412 08-Apr-2010 Chris Lattner <sabre@nondot.org> rename llvm::llvm_report_error -> llvm::report_fatal_error



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100709 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
9041ae274b537f7ae7f7a260b233a38d36d20432 04-Apr-2010 Nicolas Geoffray <nicolas.geoffray@lip6.fr> CurFn is only used for relocations. Use EmissionDetails.MF->getFunction() instead.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100328 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
de4845c163a5847c82d7ce10ed0c320098bce6e0 02-Apr-2010 Chris Lattner <sabre@nondot.org> Switch the code generator (except the JIT) onto the new DebugLoc
representation. This eliminates the 'DILocation' MDNodes for
file/line/col tuples from -O0 -g codegen.

This remove the old DebugLoc class, making it a typedef for DebugLoc,
I'll rename NewDebugLoc next.

I didn't update the JIT to use the new apis, so it will continue to
work, but be as slow as before. Someone should eventually do this
or, better yet, rip out the JIT debug info stuff and build the JIT
on top of MC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100209 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1611273351d75b5cbe2a67485bb9831d5916fe26 14-Mar-2010 Chris Lattner <sabre@nondot.org> change EH related stuff (other than EH_LABEL) to use MCSymbol
instead of label ID's. This cleans up and regularizes a bunch
of code and makes way for future progress.

Unfortunately, this pointed out to me that JITDwarfEmitter.cpp
is largely copy and paste from DwarfException/MachineModuleInfo
and other places. This is very sad and disturbing. :(

One major change here is that TidyLandingPads moved from being
called in DwarfException::BeginFunction to being called in
DwarfException::EndFunction. There should not be any
functionality change from doing this, but I'm not an EH expert.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98459 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
95da605e15a6f108b551ecc6772823ea53de3007 11-Mar-2010 Richard Osborne <richard@xmos.com> Add a new jump table encoding to indicate jump tables entries
are inside the function by the target at the point of use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
39c75f2e907c577a4f922daccf1f7d04acc9438e 04-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix PR6360. It's easy for a stub's address to escape to user code, so we can't
just count references to it from JIT output to decide when to destroy it. This
patch waits to destroy the JIT's memory of a stub until the Function it refers
to is destroyed. External function stubs and GVIndirectSyms aren't destroyed
until the JIT itself is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97737 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e57898ce5596a65579b6259e7d2e65c42a7e364e 04-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix PR5291, in which a SmallPtrSet iterator was held across an insertion into
the set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
8e98d1299dcd9a725e9244457568ff43b153b1a9 04-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Make sure JITResolvers don't leave any stubs behind. When a JITResolver was
destroyed, it could leave stubs in the StubToResolverMap, which would confuse
the lookup for subsequent lazy compilations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97698 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
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/JITEmitter.cpp
85fe07866a3b240d9facef3b2f2ea81a0a8db018 26-Jan-2010 Chris Lattner <sabre@nondot.org> Add support for target-specific 32-bit custom-lowered
jump table entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94505 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
13af11acbf23664d61f73ddac54bc05a9733c051 26-Jan-2010 Chris Lattner <sabre@nondot.org> make jit jump table emission be based on the EntryKind instead of magic variables.
JITInfo::getPICJumpTableEntry can probably be removed now, but I don't plan to do
this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94501 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
071c62fad0b25ad4131e7f984173a796c1e63f61 26-Jan-2010 Chris Lattner <sabre@nondot.org> Rearrange handling of jump tables. Highlights:
1. MachineJumpTableInfo is now created lazily for a function the first time
it actually makes a jump table instead of for every function.
2. The encoding of jump table entries is now described by the
MachineJumpTableInfo::JTEntryKind enum. This enum is determined by the
TLI::getJumpTableEncoding() hook, instead of by lots of code scattered
throughout the compiler that "knows" that jump table entries are always
32-bits in pic mode (for example).
3. The size and alignment of jump table entries is now calculated based on
their kind, instead of at machinefunction creation time.

Future work includes using the EntryKind in more places in the compiler,
eliminating other logic that "knows" the layout of jump tables in various
situations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94470 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c99fd879c0f4bbc56c29d508fec7935e6cbd7ed0 19-Jan-2010 Devang Patel <dpatel@apple.com> Avoid including DebugInfo.h in AsmPrinter.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6b61f5816e22ac7f7e009aaf3e11ccce7cfeb085 16-Jan-2010 Devang Patel <dpatel@apple.com> Replace DebugLocTuple with DILocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c9ec9931d834cb3b9774429fae96fb8db2736993 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92561 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c5818fb83750259f23f70e91ee9fb9b11d67160d 23-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Partially revert r91626. Materializing extra functions to determine whether
they're available_externally broke VMKit, which was relying on the fact that
functions would only be materialized when they were first called. We'll have
to wait for http://llvm.org/PR5737 to really fix this.

I also added a test for one of the F->isDeclaration() calls which wasn't
covered by anything else in the test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
32d7e6ebde29faeea75ecb718b4281414b0eea0b 15-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Change indirect-globals to use a dedicated allocIndirectGV. This lets us
remove start/finishGVStub and the BufferState helper class from the
MachineCodeEmitter interface. It has the side-effect of not setting the
indirect global writable and then executable on ARM, but that shouldn't be
necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91464 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
108c838093704650378b194fe9afc5ebb9e91455 24-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> * Move stub allocation inside the JITEmitter, instead of exposing a
way for each TargetJITInfo subclass to allocate its own stubs. This
means stubs aren't as exactly-sized anymore, but it lets us get rid of
TargetJITInfo::emitFunctionStubAtAddr(), which lets ARM and PPC
support the eager JIT, fixing http://llvm.org/PR4816.

* Rename the JITEmitter's stub creation functions to describe the kind
of stub they create. So far, all of them create lazy-compilation
stubs, but they sometimes get used when far-call stubs are needed.
Fixing http://llvm.org/PR5201 will involve fixing this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89715 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
0261d795f83a45dd53d82e511ae672d6d1f4e298 23-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Allow more than one stub to be being generated at the same time.

It's probably better in the long run to replace the
indirect-GlobalVariable system. That'll be done after a subsequent
patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89708 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e03a39b09620d4efc5ee4a76859a99ff0e095ae0 20-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Try to fix JITTest.FarCallToKnownFunction on ARM and PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d1ba06bf131a9d217426529d2e28af1f2eeed47a 16-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Make X86-64 in the Large model always emit 64-bit calls.
The large code model is documented at
http://www.x86-64.org/documentation/abi.pdf and says that calls should
assume their target doesn't live within the 32-bit pc-relative offset
that fits in the call instruction.

To do this, we turn off the global-address->target-global-address
conversion in X86TargetLowering::LowerCall(). The first attempt at
this broke the lazy JIT because it can separate the movabs(imm->reg)
from the actual call instruction. The lazy JIT receives the address of
the movabs as a relocation and needs to record the return address from
the call; and then when that call happens, it needs to patch the
movabs with the newly-compiled target. We could thread the call
instruction into the relocation and record the movabs<->call mapping
explicitly, but that seems to require at least as much new
complication in the code generator as this change.

To fix this, we make lazy functions _always_ go through a call
stub. You'd think we'd only have to force lazy calls through a stub on
difficult platforms, but that turns out to break indirect calls
through a function pointer. The right fix for that is to distinguish
between calls and address-of operations on uncompiled functions, but
that's complex enough to leave for someone else to do.

Another attempt at this defined a new CALL64i pseudo-instruction,
which expanded to a 2-instruction sequence in the assembly output and
was special-cased in the X86CodeEmitter's emitInstruction()
function. That broke indirect calls in the same way as above.

This patch also removes a hack forcing Darwin to the small code model.
Without far-call-stubs, the small code model requires things of the
JITMemoryManager that the DefaultJITMemoryManager can't provide.

Thanks to echristo for lots of testing!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88984 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
116664a697f9c2cdccc0df46c53f65c9f6bb22fe 12-Nov-2009 Eric Christopher <echristo@apple.com> Use stubs when we have them, otherwise use code we already have,
otherwise create a stub.

Add a test to make sure we don't create extraneous stubs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
2d274412ed9aab277e070690c574714ec544cf94 07-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Make the need-stub variables accurate and consistent. In the case of
MachineRelocations, "stub" always refers to a far-call stub or a
load-a-faraway-global stub, so this patch adds "Far" to the term. (Other stubs
are used for lazy compilation and dlsym address replacement.) The variable was
also inconsistent between the positive and negative sense, and the positive
sense ("NeedStub") was more demanding than is accurate (since a nearby-enough
function can be called directly even if the platform often requires a stub).
Since the negative sense causes double-negatives, I switched to
"MayNeedFarStub" globally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e637c195fda4002da0f9ae822e9c5c54e676a61f 07-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Give the JITResolver a direct pointer to its JITEmitter, and use that instead
of going through the global TheJIT variable. This makes it easier to use
features of JITEmitter that aren't in JITCodeEmitter for fixing PR5201.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86305 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
dc85724f703bddf6988b6b3f20203beab775f32b 27-Oct-2009 Jeffrey Yasskin <jyasskin@google.com> Change the JIT to compile eagerly by default as agreed in
http://llvm.org/PR5184, and beef up the comments to describe what both options
do and the risks of lazy compilation in the presence of threads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85295 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
23e5fcfec4640955fec41dc8348f467adf1a3e56 24-Oct-2009 Jeffrey Yasskin <jyasskin@google.com> Fix http://llvm.org/PR4822: allow module deletion after a function has been
compiled.

When functions are compiled, they accumulate references in the JITResolver's
stub maps. This patch removes those references when the functions are
destroyed. It's illegal to destroy a Function when any thread may still try to
call its machine code.

This patch also updates r83987 to use ValueMap instead of explicit CallbackVHs
and fixes a couple "do stuff inside assert()" bugs from r84522.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1e8613212286a8066001c8a3f516da89d250e05d 20-Oct-2009 Jeffrey Yasskin <jyasskin@google.com> Move the Function*->allocated blocks map from the JITMemoryManager to the
JITEmitter.

I'm gradually making Functions auto-remove themselves from the JIT when they're
destroyed. In this case, the Function needs to be removed from the JITEmitter,
but the map recording which Functions need to be removed lived behind the
JITMemoryManager interface, which made things difficult.

This patch replaces the deallocateMemForFunction(Function*) method with a pair
of methods deallocateFunctionBody(void *) and deallocateExceptionTable(void *)
corresponding to the two startFoo/endFoo pairs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84651 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ebbcef945d33af5252486c1655ec6afdba4f97a7 19-Oct-2009 Jeffrey Yasskin <jyasskin@google.com> Clean up the JITResolver stub/callsite<->function maps.

The JITResolver maps Functions to their canonical stubs and all callsites for
lazily-compiled functions to their target Functions. To make Function
destruction work, I'm going to need to remove all callsites on destruction, so
this patch also adds the reverse mapping for that.

There was an incorrect assumption in here that the only stub for a function
would be the one caused by needing to lazily compile it, while x86-64 far calls
and dlsym-stubs could also cause such stubs, but I didn't look for a test case
that the assumption broke.

This also adds DenseMapInfo<AssertingVH> so I can use DenseMaps instead of
std::maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84522 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1619dc3b9ee2573c481591764c2d26d5ff16b483 14-Oct-2009 Devang Patel <dpatel@apple.com> s/DebugLoc.CompileUnit/DebugLoc.Scope/g
s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84054 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
02c04237d01ffe7170be746ceed5f10487e0ca0c 06-Oct-2009 Devang Patel <dpatel@apple.com> Update processDebugLoc() to handle requests to process debug info, before and after emitting instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ea5ed00ea34fd3c687dd0fac9fd483d0174438e3 06-Oct-2009 Jeffrey Yasskin <jyasskin@google.com> Fix http://llvm.org/PR5116 by rolling back r60822. This passes `make unittests
check-lit` on both x86-64 Linux and x86-32 Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83353 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
3d47db50b3a5bf15ba8ee2a3e4eefe4321d9642b 25-Aug-2009 Xerxes Ranby <xerxes@zafena.se> Fix PR4772 ARM JIT.GlobalInFuction unittest by explicitly initialize MMI
to 0 during JITEmitter constructor.

Modified:
lib/ExecutionEngine/JIT/JITEmitter.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bbbfa99d3d18fe9f20265305e833666645ada528 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove a few DOUTs here and there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a9ad04191cb56c42944b17980b8b2bb2afe11ab2 13-Aug-2009 Dan Gohman <gohman@apple.com> This void is implicit in C++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78848 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1b747ad8a0694b86e8d98a8b9a05ddfe74ec0cd3 11-Aug-2009 Jim Grosbach <grosbach@apple.com> SjLj based exception handling unwinding support. This patch is nasty, brutish
and short. Well, it's kinda short. Definitely nasty and brutish.

The front-end generates the register/unregister calls into the SjLj runtime,
call-site indices and landing pad dispatch. The back end fills in the LSDA
with the call-site information provided by the front end. Catch blocks are
not yet implemented.

Built on Darwin and verified no llvm-core "make check" regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78625 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ce63ffb52f249b62cdf2d250c128007b13f27e71 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> More migration to raw_ostream, the water has dried up around the iostream hole.
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77019 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
10b4fc552f984dc978298d50c09c97c0764962fc 23-Jul-2009 Reid Kleckner <reid@kleckner.net> Re-committing r76828 with the JIT memory manager changes now that the build
bots like the BumpPtrAllocator changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76902 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
4bf370698a456bcc96d26184785eb4f5fab396f2 23-Jul-2009 Reid Kleckner <reid@kleckner.net> Reverting r76825 and r76828, since they caused clang runtime errors and some build failure involving memset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76838 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
81ce3ed08c4df0c246b378c8972062d2f49f1ce9 23-Jul-2009 Reid Kleckner <reid@kleckner.net> Make the JIT code emitter properly retry and ask for more memory when it runs
out of memory, and also make the default memory manager allocate more memory
when it runs out.

Also, switch function stubs and global data over to using the BumpPtrAllocator.

This makes it so the JIT no longer mmaps (or the equivalent on Windows) 16 MB
of memory, and instead allocates in 512K slabs. I suspect this size could go
lower, especially on embedded platforms, now that more slabs can be allocated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
fbee579ed46016166d88b4defb81a2e7e253062d 21-Jul-2009 Daniel Dunbar <daniel@zuster.org> Simplify / normalize some uses of Value::getName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76553 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
32360a7e21a4454aa7014992213823fb4319905a 16-Jul-2009 Jeffrey Yasskin <jyasskin@google.com> Add line numbers to OProfile. To do this, I added a processDebugLoc()
call to the MachineCodeEmitter interface and made copying the start
line of a function not conditional on whether we're emitting Dwarf
debug information. I'll propagate the processDebugLoc() calls to the
non-X86 targets in a followup patch.

In the long run, it'll probably be better to gather this information
through the DwarfWriter, but the DwarfWriter currently depends on the
AsmPrinter and TargetAsmInfo, and fixing that would be out of the way
for this patch.

There's a bug in OProfile 0.9.4 that makes it ignore line numbers for
addresses above 4G, and a patch fixing it at
http://thread.gmane.org/gmane.linux.oprofile/7634

Sample output:

$ sudo opcontrol --reset; sudo opcontrol --start-daemon; sudo opcontrol --start; `pwd`/Debug/bin/lli fib.bc; sudo opcontrol --stop
Signalling daemon... done
Profiler running.
fib(40) == 165580141
Stopping profiling.

$ opreport -g -d -l `pwd`/Debug/bin/lli|head -60
Overflow stats not available
CPU: Core 2, speed 1998 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
vma samples % linenr info image name symbol name
00007f67a30370b0 25489 61.2554 fib.c:24 10946.jo fib_left
00007f67a30370b0 1634 6.4106 fib.c:24
00007f67a30370b1 83 0.3256 fib.c:24
00007f67a30370b9 1997 7.8348 fib.c:24
00007f67a30370c6 2080 8.1604 fib.c:27
00007f67a30370c8 988 3.8762 fib.c:27
00007f67a30370cd 1315 5.1591 fib.c:27
00007f67a30370cf 251 0.9847 fib.c:27
00007f67a30370d3 1191 4.6726 fib.c:27
00007f67a30370d6 975 3.8252 fib.c:27
00007f67a30370db 1010 3.9625 fib.c:27
00007f67a30370dd 242 0.9494 fib.c:27
00007f67a30370e1 2782 10.9145 fib.c:28
00007f67a30370e5 3768 14.7828 fib.c:28
00007f67a30370eb 615 2.4128 (no location information)
00007f67a30370f3 6558 25.7287 (no location information)
00007f67a3037100 15603 37.4973 fib.c:29 10946.jo fib_right
00007f67a3037100 1646 10.5493 fib.c:29
00007f67a3037101 45 0.2884 fib.c:29
00007f67a3037109 2372 15.2022 fib.c:29
00007f67a3037116 2234 14.3178 fib.c:32
00007f67a3037118 612 3.9223 fib.c:32
00007f67a303711d 622 3.9864 fib.c:32
00007f67a303711f 385 2.4675 fib.c:32
00007f67a3037123 404 2.5892 fib.c:32
00007f67a3037126 634 4.0633 fib.c:32
00007f67a303712b 870 5.5759 fib.c:32
00007f67a303712d 62 0.3974 fib.c:32
00007f67a3037131 1848 11.8439 fib.c:33
00007f67a3037135 2840 18.2016 fib.c:33
00007f67a303713a 1 0.0064 fib.c:33
00007f67a303713b 1023 6.5564 (no location information)
00007f67a3037143 5 0.0320 (no location information)
000000000080c1e4 15 0.0360 MachineOperand.h:150 lli llvm::MachineOperand::isReg() const
000000000080c1e4 6 40.0000 MachineOperand.h:150
000000000080c1ec 2 13.3333 MachineOperand.h:150
...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
7d696d80409aad20bb5da0fc4eccab941dd371d4 11-Jul-2009 Torok Edwin <edwintorok@gmail.com> Convert more assert(0)+abort() -> LLVM_UNREACHABLE,
and abort()/exit() -> llvm_report_error().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
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/JITEmitter.cpp
ae3a0be92e33bc716722aa600983fc1535acb122 05-Jun-2009 Dan Gohman <gohman@apple.com> Split the Add, Sub, and Mul instruction opcodes into separate
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.

For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.

This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72897 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
186c670e15828327960d05a652ec43ae768c9b8e 04-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use uint8_t and int32_t in {JIT,Machine}CodeEmiters


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bae049cd9ed7a7ac683df04f457c301df082c6cb 03-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Revert 72650


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
af90a1cd2647909623758078540abb1a81495e32 31-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use uint8_t and int32_t in {JIT,Machine}CodeEmiters


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72650 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
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/JITEmitter.cpp
777d2306b36816a53bc1ae1244c0dc7d998ae691 09-May-2009 Duncan Sands <baldrick@free.fr> Rename PaddedSize to AllocSize, in the hope that this
will make it more obvious what it represents, and stop
it being confused with the StoreSize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
19fee415f63ddb78fca703085fe56510be3e058c 01-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Set FnEnd in JITEmitter::finishFunction to point strictly to the end of function's machine code.
Don't include memory allocated for global variables during relocations resolution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70517 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e2bcf13be5e7b9b9ea103c5546dab51f5cac9cb0 27-Apr-2009 Nick Lewycky <nicholas@mxc.ca> Under unusual circumstances (jitting a function that causes the creation of
another stub, but then never calling the jitted function) can cause the JIT to
leave a stub in place. Judging by the comments this is a known deficiency, so
we're just not going to use AssertingVH for the StubToFunctionTy map.

Also shorten some lines longer than 80 columns.

This fixes the "make check" failure with ocaml on x86-64 linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
848b3142addffe24abc775c5a11d5fff8ff73132 19-Apr-2009 Nick Lewycky <nicholas@mxc.ca> Use an AssertingVH to detect the case where the Function was deleted but
freeMachineCodeForFunction was never called.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1606e8e4cd937e6de6681f686c266cf61722d972 13-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix some significant problems with constant pools that resulted in unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues.

1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants.
2. MachineConstantPool alignment field is also a log2 value.
3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values.
4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries.
5. Asm printer uses expensive data structure multimap to track constant pool entries by sections.
6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic.


Solutions:
1. ConstantPoolSDNode alignment field is changed to keep non-log2 value.
2. MachineConstantPool alignment field is also changed to keep non-log2 value.
3. Functions that create ConstantPool nodes are passing in non-log2 alignments.
4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT.
5. Asm printer uses cheaper data structure to group constant pool entries.
6. Asm printer compute entry offsets after grouping is done.
7. Change JIT code to compute entry offsets on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66875 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
841c6a4345082e9a1252cc39bcce7f1423a76ded 11-Mar-2009 Nate Begeman <natebegeman@mac.com> Allow cross-process JIT to handle MachineRelocations of the ExternalSymbol
variety. For example, an i64 div might turn into a call to __divdi3 during
legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
b9c6c9bfe410bbea357503872ce662d6838026ce 07-Mar-2009 Nate Begeman <natebegeman@mac.com> Finish cross-process JIT work, and clean up previous work.

1. When the JIT is asked to remove a function, updating it's
mapping to 0, we invalidate any function stubs used only
by that function. Now, also invalidate the JIT's mapping
from the GV the stub pointed to, to the address of the GV.

2. When dlsym stubs for cross-process JIT are enabled, do not
abort just because a named function cannot be found in the
JIT's process.

3. Fix various assumptions about when it is ok to use the lazy
resolver when non-lazy JITing is enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66324 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
be3ae8e479c02b3045eef8eb18c4dacbd3af14c2 05-Mar-2009 Chris Lattner <sabre@nondot.org> switch this message back to only being in -debug mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66143 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
50cd6fda9e98f68a9a6e1adf72c38baf614bd305 05-Mar-2009 Nate Begeman <natebegeman@mac.com> When allocating stubs, keep track of which Functions are referencing the stub.
This invalidates the stubs in the resolver map when they are no longer referenced,
and should the JIT memory manager ever pick up a deallocateStub interface, the
JIT could reclaim the memory for unused stubs as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66141 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
66941988de6a295649b33f4c2b0f36a094b2244d 04-Mar-2009 Nate Begeman <natebegeman@mac.com> Fix a thinko in the JIT where the address of a GV was only recorded in the map
on failure to resolve it.
Do not abort on failure to resolve an external symbol when using dlsym stubs,
since the symbol may not be in the JIT's address space. Just use 0.
Allow dlsym stubs to differentiate between GlobalVars and Functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66050 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
0b82f77e662790ab3c230932f5309c5105812c26 03-Mar-2009 Nate Begeman <natebegeman@mac.com> Fix the calculation for how big the allocated stub needs to be.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65895 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
ceb4d1aecb9deffe59b3dcdc9a783ffde8477be9 12-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getABITypeSize to getTypePaddedSize, as
suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
5788d1a169db3346a612a13113348d2709bdd15b 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
369e02da1b0f7a183c7d15a5d87a1a2c3db5f45a 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix a bug introduced by r59265. If lazy compilation is disabled, return actual function ptr instead of ptr to stub if function is already compiled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60822 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
704bff9e6cf0070924eb11d9e81e5ba6962ae4ef 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> Always emit a function pointer as a pointer to the function stub (if there is one). This makes it possible to compare function pointer values in lazy compilation mode. This fixes PR3043.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e7c3551e6f75ca3fc8a3a30e8ca5f9c19edbe2e3 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Change binary dump format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e4d783d584d22d7fcb4cba2a24e0f45f62ed8153 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Comments and indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59007 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5594f120b8880f7c514b0376c4adac1267a0b2b6 10-Nov-2008 Evan Cheng <evan.cheng@apple.com> Forgot these.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58952 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
fff484f1926cf26af3d6b5082ece88701164cfc3 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove a InvalidateInstructionCache call with incorrect size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58898 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ce4a70bd7608861e104b04265a0c71e5df8ecefe 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ptr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58897 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d7398c9b699cae3a109e9808401f7d0b2fc7e686 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename isString -> isExternalSymbol; getString -> getExternalSymbol since these work on externsym machine relocations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58895 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ca66b08bc6c3cf899459e642a5297df8b9ccdb0d 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> More debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58894 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
366cf29ca537057341ecbad03ab8f9bc52f731e7 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> More debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58868 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
47c01a0099c10c031f8c544baf44b1c3a1de3fad 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> Jump tables may be emitted by target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58835 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
eb5d95a22df7ab88815f35bdc8b6e5d3a6a1119d 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Improve JIT debugging outputs format consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6863fb033a9079e04edc7a568e34098bcf5b9ebe 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Need a \n.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a7916f586d438b0e626e54ce713435437c4b901c 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Undo 58778 but makes the binary dump prettier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58782 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5e136c0f37a36aed0e49b7cb9e8ea61ecbe70456 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove debug output that's not really useful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58778 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c96a8e7df1ffeebc5fb876f5eef380e8547ce14f 05-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename isGVLazyPtr to isGVNonLazyPtr relocation. This represents Mac OS X
indirect gv reference. Please don't call it lazy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
9200605cd5f6db50be20efb7df926dc5a0d19a4d 03-Nov-2008 Evan Cheng <evan.cheng@apple.com> Silence a compiler warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58598 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
8fe95356dd487a79145ec07a9f46cd743b4c9bdd 31-Oct-2008 Jim Grosbach <grosbach@apple.com> Revert errant deletion. The target needs to be able to specify that it doesn't want the generic constant pool to be emitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58475 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ef5784ef9b9cdfbc9819a96440c6873196eade76 30-Oct-2008 Evan Cheng <evan.cheng@apple.com> Let target resolve some relocation results.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bc6d876adf01b368c6bdd5984d9dac32589d356e 28-Oct-2008 Jim Grosbach <grosbach@apple.com> Support for constant islands in the ARM JIT.

Since the ARM constant pool handling supercedes the standard LLVM constant
pool entirely, the JIT emitter does not allocate space for the constants,
nor initialize the memory. The constant pool is considered part of the
instruction stream.

Likewise, when resolving relocations into the constant pool, a hook into
the target back end is used to resolve from the constant ID# to the
address where the constant is stored.

For now, the support in the ARM emitter is limited to 32-bit integer. Future
patches will expand this to the full range of constants necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58338 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
cef7527a85d026aeb17a4dacca73c70c0ab5da40 21-Oct-2008 Nuno Lopes <nunoplopes@sapo.pt> fix a tricky bug in the JIT global variable emitter, that was triggered when JITing a variable independently of a function. This lead to sharing memory memory between functions and GVs thus changing the value of a GV could change the code in execution. more details on the ML.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57900 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
cce6c297c54b4c9c8615c77e97cd64e70812ea60 03-Oct-2008 Jim Grosbach <grosbach@apple.com> On Darwin ARM, memory needs special handling to do JIT. This patch expands
this handling to work properly for modifying stub functions, relocations
back to entry points after JIT compilation, etc..


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d735b8019b0f297d7c14b55adcd887af24d8e602 03-Oct-2008 Dan Gohman <gohman@apple.com> Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
dcb31e179000193c65b3f09b7138ef273dc3ce63 03-Oct-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Acquire the lock only when necessary. More precisely, do not acquire
the lock when calling a method which may materialize the llvm::Function.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bc4707a2554ac04ba006bf70035e7bc7270236a9 18-Sep-2008 Evan Cheng <evan.cheng@apple.com> Preliminary support for systems which require changing JIT memory regions privilege from read / write to read / executable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56303 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
19e861a4ffb896f16a691d5ac869e894df3cd464 09-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Make safer variant of alias resolution routine to be default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56005 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
252ddfbdbc834d1abe80de9c2205afac7918d3ea 02-Sep-2008 Evan Cheng <evan.cheng@apple.com> MMI may be null.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a044dfcb5ae3b789799cefaf5c4c2e1973fbf4c5 20-Aug-2008 Evan Cheng <evan.cheng@apple.com> Get rid of a couple of dynamic_cast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
50dd1d028021bd7fd8bca3f33633ea59577c9d5e 12-Aug-2008 Dale Johannesen <dalej@apple.com> Some fixes for x86-64 JIT. Make it use small code
model, except for external calls; this makes
addressing modes PC-relative. Incomplete.

The assertion at the top of Emitter::runOnMachineFunction
was obviously bogus (always true) so I removed it.
If someone knows what the correct test should be to cover
all the various targets, please fix.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54656 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
dd947ea3c5e020c33c58a31939561265b980a3ad 07-Aug-2008 Dale Johannesen <dalej@apple.com> Rewrite JIT handling of GlobalVariables so they
are allocated in the same buffer as the code,
jump tables, etc.

The default JIT memory manager does not handle buffer
overflow well. I didn't introduce this and I'm not
attempting to fix it here, but it is more likely to
be hit now since we're putting more stuff in the
buffer. This affects one test that I know of so far,
MultiSource/Benchmarks/NPB-serial/is.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54442 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
18e045983757a7d2bae482d2abe444a5bb3ed134 25-Jun-2008 Chris Lattner <sabre@nondot.org> Implement JIT support for global aliases, patch by David Chisnall!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52738 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bc52cada0933f353d30da7b49af9a641bdb2c57d 25-Jun-2008 Chris Lattner <sabre@nondot.org> Switch the PPC backend and target-independent JIT to use the libsystem
InvalidateInstructionCache method instead of calling through
a hook on the JIT. This is a host feature, not a target feature.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52734 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
210539ebc466521e41e69b119649d59cc721b006 17-Jun-2008 Anton Korobeynikov <asl@math.spbu.ru> Provide generic hooks for icache invalidation. Add PPC implementation.
Patch by Gary Benson!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
f44085a86a3f3cb743fb8822108d8360dd094539 18-May-2008 Nate Begeman <natebegeman@mac.com> Fix a backwards check in the JIT symbol table code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51229 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bdb6ca178cfbe2490a058deabce7847a05f55db7 15-May-2008 Evan Cheng <evan.cheng@apple.com> Disable JIT symbol table for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
580631a73a71ff621c71618b16e9644b30a9d3c9 21-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Be pessimistic in computing the buffer size when aligning.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50008 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5913e6c5dbaff88ac00d5e679382abc72323831a 20-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Cosmetic changes, as suggested by Evan. No functionality changes.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49993 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
dc17ab2bf0c4d325b87ac8130004ab11f3f7106d 18-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Enable jitting with a known memory size.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49924 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
51cc3c13eac78da242f0518fc42580e48dd5304f 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function
the stub will resolve.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49814 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
3b374489041ac28153c84194dda45e182d8939fc 13-Apr-2008 Chris Lattner <sabre@nondot.org> Fix some serious logic errors that broke the jit on darwin/x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49606 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
97b8c40d095c4eb5d8e8ff5ac6da567f043bd8ba 12-Apr-2008 Evan Cheng <evan.cheng@apple.com> Add debugging code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49566 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6098e4be947e0761c6997d98d12535fce85045e9 11-Apr-2008 Chris Lattner <sabre@nondot.org> Reenable JIT symbol table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49548 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e52419147abbc696e9d313b6adf18a1be8ff4389 05-Apr-2008 Chris Lattner <sabre@nondot.org> disable this for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
8ac66c122b099bc3eab858bfc18f3cb342efc818 04-Apr-2008 Chris Lattner <sabre@nondot.org> Provide an initial cut at exposing JIT compiled symbols to performance
tools. This is currently only enabled on the mac, but could easily be
supported by other hosts that are interested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49207 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
0fdaa0b8f194f0ef7cec0610c50672b89bd7c17a 07-Mar-2008 Chris Lattner <sabre@nondot.org> fix 80 col violations


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48019 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
afe6c2b001a924cd74bd0aacfed5984d9af004b0 13-Feb-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Enable exception handling int JIT



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47079 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1910e2f3ecec461d1eab8c44b16c977539080a6e 25-Jan-2008 Chris Lattner <sabre@nondot.org> JITEmitter.cpp was trying to sync the icache for function stubs, but
was actually passing a completely incorrect size to sys_icache_invalidate.
Instead of having the JITEmitter do this (which doesn't have the correct
size), just make the target sync its own stubs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46354 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
2a3e08b5961353fa3faeadf81f481ae9f5463427 05-Jan-2008 Evan Cheng <evan.cheng@apple.com> X86 JIT PIC jumptable support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
be8c03fc66b75fa775e1f47d62a1b0d803fced1c 04-Jan-2008 Evan Cheng <evan.cheng@apple.com> X86 PIC JIT support fixes: encoding bugs, add lazy pointer stubs support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45575 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
02aabbf96b1f22144afe2bec8ad480a9b803f6b8 03-Jan-2008 Evan Cheng <evan.cheng@apple.com> Change MachineRelocation::DoesntNeedFnStub to NeedStub. This fields will be used
for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45527 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
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/JITEmitter.cpp
8907b4ba479bbfbe630a4c3abab32c7d49749a48 06-Dec-2007 Chris Lattner <sabre@nondot.org> split the JIT memory management code out from the main JIT logic into its
own JITMemoryManager interface. There is no functionality change with
this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44640 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
514ab348fddcdffa8367685dc608b2f8d5de986d 01-Nov-2007 Duncan Sands <baldrick@free.fr> Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize.
The meaning of getTypeSize was not clear - clarifying it is important
now that we have x86 long double and arbitrary precision integers.
The issue with long double is that it requires 80 bits, and this is
not a multiple of its alignment. This gives a primitive type for
which getTypeSize differed from getABITypeSize. For arbitrary precision
integers it is even worse: there is the minimum number of bits needed to
hold the type (eg: 36 for an i36), the maximum number of bits that will
be overwriten when storing the type (40 bits for i36) and the ABI size
(i.e. the storage size rounded up to a multiple of the alignment; 64 bits
for i36).

This patch removes getTypeSize (not really - it is still there but
deprecated to allow for a gradual transition). Instead there is:

(1) getTypeSizeInBits - a number of bits that suffices to hold all
values of the type. For a primitive type, this is the minimum number
of bits. For an i36 this is 36 bits. For x86 long double it is 80.
This corresponds to gcc's TYPE_PRECISION.

(2) getTypeStoreSizeInBits - the maximum number of bits that is
written when storing the type (or read when reading it). For an
i36 this is 40 bits, for an x86 long double it is 80 bits. This
is the size alias analysis is interested in (getTypeStoreSize
returns the number of bytes). There doesn't seem to be anything
corresponding to this in gcc.

(3) getABITypeSizeInBits - this is getTypeStoreSizeInBits rounded
up to a multiple of the alignment. For an i36 this is 64, for an
x86 long double this is 96 or 128 depending on the OS. This is the
spacing between consecutive elements when you form an array out of
this type (getABITypeSize returns the number of bytes). This is
TYPE_SIZE in gcc.

Since successive elements in a SequentialType (arrays, pointers
and vectors) need to be aligned, the spacing between them will be
given by getABITypeSize. This means that the size of an array
is the length times the getABITypeSize. It also means that GEP
computations need to use getABITypeSize when computing offsets.
Furthermore, if an alloca allocates several elements at once then
these too need to be aligned, so the size of the alloca has to be
the number of elements multiplied by getABITypeSize. Logically
speaking this doesn't have to be the case when allocating just
one element, but it is simpler to also use getABITypeSize in this
case. So alloca's and mallocs should use getABITypeSize. Finally,
since gcc's only notion of size is that given by getABITypeSize, if
you want to output assembler etc the same as gcc then getABITypeSize
is the size you want.

Since a store will overwrite no more than getTypeStoreSize bytes,
and a read will read no more than that many bytes, this is the
notion of size appropriate for alias analysis calculations.

In this patch I have corrected all type size uses except some of
those in ScalarReplAggregates, lib/Codegen, lib/Target (the hard
cases). I will get around to auditing these too at some point,
but I could do with some help.

Finally, I made one change which I think wise but others might
consider pointless and suboptimal: in an unpacked struct the
amount of space allocated for a field is now given by the ABI
size rather than getTypeStoreSize. I did this because every
other place that reserves memory for a type (eg: alloca) now
uses getABITypeSize, and I didn't want to make an exception
for unpacked structs, i.e. I did it to make things more uniform.
This only effects structs containing long doubles and arbitrary
precision integers. If someone wants to pack these types more
tightly they can always use a packed struct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
087b72d1bceea0ffe414c0e3d54196aafc7769f8 19-Jul-2007 Reid Spencer <rspencer@reidspencer.com> Hush a noisy warning from GCC 4.2 about overflow during conversion by using
the type "unsigned" instead of uintptr_t for a 1-bit structure field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e510b3af3a76cd557bb958293f859e4861060fc2 09-Jul-2007 Gabor Greif <ggreif@gmail.com> fix typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38453 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a99be51bf5cdac1438069d4b01766c47704961c8 05-Jul-2007 Gabor Greif <ggreif@gmail.com> Here is the bulk of the sanitizing.
Almost all occurrences of "bytecode" in the sources have been eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37913 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
9da60f92d916be01c23b8a9a0eeed448523a7c9b 30-Jun-2007 Evan Cheng <evan.cheng@apple.com> (For Chris): Fix failure where we rejected compiling stubs when lazy compilation is disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37825 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c6551ffdd5bdb9b199fbfe5f72a8003425a72006 06-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Implement PR1240


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34959 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
5cbf985dcbc89fba3208e7baf8b6f488b06d3ec9 30-Jan-2007 Reid Spencer <rspencer@reidspencer.com> For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid
confusion with external linkage types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33663 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
fd58e6e2ecebe92804869586d65b27085110f336 23-Jan-2007 Anton Korobeynikov <asl@math.spbu.ru> Moved disassembler to libSystem


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c5633c235e94f69c6a77e894bcc84d8ba71106f0 20-Jan-2007 Chris Lattner <sabre@nondot.org> DOUT still evaluates side effects, even though it doesn't print. This means
that disassembleBuffer will be called even if NDEBUG, but the result will
be ignored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a9ebd2b91ffdaa52775c4b9a807e7382976aa38b 19-Jan-2007 Andrew Lenharth <andrewl@lenharth.org> fix build on amd64


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33367 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
8cd4c3e6534a14566bf163301fd45bca34e655c1 19-Jan-2007 Anton Korobeynikov <asl@math.spbu.ru> Adding disassembler interface and external hook to udis86 library.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33358 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
36343735cb23680c8f8675deafbbf825d46fd868 19-Dec-2006 Chris Lattner <sabre@nondot.org> remove static ctors from Statistic objects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32700 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
b92767afd442a8363a8696e54880ee31c5d48c1e 14-Dec-2006 Jim Laskey <jlaskey@mac.com> Simplify the fetching of relocation mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32588 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
acd80ac7bb19f8bdfa55336d567c9ecbe695c8b8 14-Dec-2006 Jim Laskey <jlaskey@mac.com> 1. Tidy up jump table info.
2. Allow the jit to handle PIC relocable jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32581 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
832171cb9724d2d31c8dfb73172e2be8f6dd13ee 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Removing even more <iostream> includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32320 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ac0b6ae358944ae8b2b5a11dc08f52c3ed89f2da 06-Dec-2006 Chris Lattner <sabre@nondot.org> Detemplatize the Statistic class. The only type it is instantiated with
is 'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
9a1e9b91407f4752ff3de392d60a6cf3f1dcc37d 16-Nov-2006 Evan Cheng <evan.cheng@apple.com> Allow target to specify alignment for function stub.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
9cab56d59e2ed6af5fb5137a6e50d4bf915eaccf 09-Nov-2006 Chris Lattner <sabre@nondot.org> if lazy compilation is disabled, print an error message and abort if
lazy compilation is ever attempted


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31602 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
3ed469ccd7b028a030b550d84b7336d146f5d8fa 02-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR786:
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c6336273d973ffc5d3bce828a934c6ec99c4630b 15-Sep-2006 Chris Lattner <sabre@nondot.org> Unbreak the JIT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
b74ed07bfd3af42331b1964c24c39912610a08f4 14-Sep-2006 Anton Korobeynikov <asl@math.spbu.ru> Adding dllimport, dllexport and external weak linkage types.
DLL* linkages got full (I hope) codegeneration support in C & both x86
assembler backends.
External weak linkage added for future use, we don't provide any
codegeneration, etc. support for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30374 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
8a650095fcecaf5270231bd376e49ed46249da95 13-Sep-2006 Chris Lattner <sabre@nondot.org> Fix a ton of jit failures


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30292 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
cd5731d98b15c9de236bd0dd6c9c57d9bcecbceb 12-Sep-2006 Evan Cheng <evan.cheng@apple.com> Reflect MachineConstantPoolEntry changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
019f851ab26511c089e41b61901f743e75f90714 11-Sep-2006 Nate Begeman <natebegeman@mac.com> Behold, more work on relocations. Things are looking pretty good now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
fe854034677f59baca1e38075e71f6efca247a03 16-Aug-2006 Chris Lattner <sabre@nondot.org> initial changes to support JIT'ing from multiple module providers, implicitly
linking the program on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
f141cc46faf6f0525f0baa10b6a6c976301874a5 27-Jul-2006 Evan Cheng <evan.cheng@apple.com> Resolve BB references with relocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29351 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
2e9f3686f80232617484c82c83d8317da3e0e294 27-Jul-2006 Jim Laskey <jlaskey@mac.com> Fixed a typo in Evan's submisson.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29345 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
55b5053b8e22cf165d1f0ce3aa9a04707e368a15 27-Jul-2006 Evan Cheng <evan.cheng@apple.com> Move synchronizeICache from TargetJITInfo into a static function in JITEmitter.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
55fc28076fa48723bd170e51638b3b5974ca0fa1 25-Jul-2006 Evan Cheng <evan.cheng@apple.com> - Refactor the code that resolve basic block references to a TargetJITInfo
method.
- Added synchronizeICache() to TargetJITInfo. It is called after each block
of code is emitted to flush the icache. This ensures correct execution
on targets that have separate dcache and icache.
- Added PPC / Mac OS X specific code to do icache flushing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29276 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c1780d2a0a22b0b7d9fcc227c3b31c28390ceecc 07-Jul-2006 Chris Lattner <sabre@nondot.org> Change AllocateRWX/DeallocateRWX do not throw an exception.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
52b510b4c4f36f58c4aa37a1f835eb95e89e0adb 23-Jun-2006 Evan Cheng <evan.cheng@apple.com> Added jump table address relocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28908 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a827953c32e420740c281b4a38a056d15b180932 16-Jun-2006 Chris Lattner <sabre@nondot.org> Only count instructions as code size, not constant pools and other per-function stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28827 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
870286aa33290c00e55ba479a60251c79f3a7911 01-Jun-2006 Chris Lattner <sabre@nondot.org> Fix -pedantic warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28636 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
f3af4ff0053cc831650ea917c01a4c2680c8974e 16-May-2006 Chris Lattner <sabre@nondot.org> Make this print the right start pointer


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28321 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bbea1245a1b7e2bce79fe34d9331dab2e42fa3a4 12-May-2006 Chris Lattner <sabre@nondot.org> Fix a hypothetical memory leak, identified by Coverity. In practice, this
object is never deleted though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a5f0419b4e7415a579e08f918194b37537cd0e29 12-May-2006 Chris Lattner <sabre@nondot.org> For extra sanity checking, fill free'd memory with garbage so we know that
people aren't reusing machine code buffers at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28228 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
9f3d1ba9ad6bfdd4c0d89d42f8205284156d9940 12-May-2006 Chris Lattner <sabre@nondot.org> Fix some bugs in the freelist manipulation code.

Finally, implement ExecutionEngine::freeMachineCodeForFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28227 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e993cc27ad9fd84e6aaf652c94eb9ca0cb63a898 12-May-2006 Chris Lattner <sabre@nondot.org> Significantly revamp allocation of machine code to use free lists, real
allocation policies and much more. All this complexity, and we have no
functionality change, woo! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e7fd553b3be8b95dc0946cd3267bc2db859cd3d8 09-May-2006 Chris Lattner <sabre@nondot.org> Move some methods out of line so that MutexGuard.h isn't needed in a public header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28179 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d2d5c76753b132c34c71248db2f136b38531bc6d 03-May-2006 Chris Lattner <sabre@nondot.org> minor cleanups, no functionality change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28087 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
b4432f3d4754e16c918428d34a9d8ec18ab79204 03-May-2006 Chris Lattner <sabre@nondot.org> Suck block address tracking out of targets into the JIT Emitter. This
simplifies the MachineCodeEmitter interface just a little bit and makes
BasicBlocks work like constant pools and jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a69571c7991813c93cba64e88eced6899ce93d81 03-May-2006 Owen Anderson <resistor@mac.com> Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.

This fixes PR 759.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28074 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
0eb4d6b52e1b5db9a4c86e5a954356ae3507a287 03-May-2006 Chris Lattner <sabre@nondot.org> Align function bodies correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28073 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e6fdcbfc47e32c0f8a2ed9df350ac0c871c575f7 03-May-2006 Chris Lattner <sabre@nondot.org> Simplify some code. Don't add memory blocks to the Blocks list twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28071 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
af1563fb62ed76f4818ac172ab1c6cf15fa35a82 03-May-2006 Chris Lattner <sabre@nondot.org> Change the BasicBlockAddrs map to be a vector, indexed by MBB number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
32ca55f3bc64c1a4424ac2e4710cf4cbcaceea43 03-May-2006 Chris Lattner <sabre@nondot.org> Simplify some code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
f75f9be3fb89eb6661a0ed8bfee8a6328ee5a4d1 03-May-2006 Chris Lattner <sabre@nondot.org> Several related changes:

1. Change several methods in the MachineCodeEmitter class to be pure virtual.
2. Suck emitConstantPool/initJumpTableInfo into startFunction, removing them
from the MachineCodeEmitter interface, and reducing the amount of target-
specific code.
3. Change the JITEmitter so that it allocates constantpools and jump tables
*right* next to the functions that they belong to, instead of in a separate
pool of memory. This makes all memory for a function be contiguous, and
means the JITEmitter only tracks one block of memory now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28065 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
f5d438c1f0e0c0ed44475ab69f03d86a3c818c60 02-May-2006 Chris Lattner <sabre@nondot.org> Do not make the JIT memory manager manage the memory for globals. Instead
just have the JIT malloc them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a726c7f1fd3c3b75bbb3df8faa7676ef09cb15c8 02-May-2006 Chris Lattner <sabre@nondot.org> Minor cleanups, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
43b429b05989075b60693d57395c99b0ad789f8d 02-May-2006 Chris Lattner <sabre@nondot.org> Refactor the machine code emitter interface to pull the pointers for the current
code emission location into the base class, instead of being in the derived classes.

This change means that low-level methods like emitByte/emitWord now are no longer
virtual (yaay for speed), and we now have a framework to support growable code
segments. This implements feature request #1 of PR469.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
b0cc79d45b1e455b486f8ca5cc68546b7a865eb3 02-May-2006 Chris Lattner <sabre@nondot.org> Remove dead method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c34b22716be8394cd205e31dfeeb94c6033fb34d 25-Apr-2006 Nate Begeman <natebegeman@mac.com> Fix a warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
37efe6764568a3829fee26aba532283131d1a104 22-Apr-2006 Nate Begeman <natebegeman@mac.com> JumpTable support! What this represents is working asm and jit support for
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27947 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
239862ce995adfd3b51062e62e54ef2db92b1150 09-Feb-2006 Chris Lattner <sabre@nondot.org> simplify this code now that each constant pool entry is not separately allocated


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26079 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
3029f920519e0871a5aad5d7c592281093953733 09-Feb-2006 Chris Lattner <sabre@nondot.org> Adjust to MachineConstantPool interface change: instead of keeping a
value/alignment pair for each constant, keep a value/offset pair.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26078 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
fa77d43ba1d91ed39f46e11caeb28dcabae9e193 09-Feb-2006 Chris Lattner <sabre@nondot.org> rename fields of constant pool entries


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26076 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
b8973bd8f50d7321635e1e07b81a880a0828d185 31-Jan-2006 Evan Cheng <evan.cheng@apple.com> Allow the specification of explicit alignments for constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ca26180d393c40c3b84283329f78e90be4b4e27a 23-Jan-2006 Chris Lattner <sabre@nondot.org> Add #include of <iostream>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25516 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
2199877563ddf4ddb8defb760b33eb4478449a54 07-Jan-2006 Chris Lattner <sabre@nondot.org> Wrap long lines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
2b3b89c28e90ba9637614a398dc0eb743370a1c9 01-Aug-2005 Andrew Lenharth <andrewl@lenharth.org> one cannot allocate a global, until one is done initializing the global pointers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22568 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d29b6aa608d69f19b57ebd2ae630b040b1c4951d 30-Jul-2005 Jeff Cohen <jeffc@jolt-lang.org> Keep tabs and trailing spaces out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22565 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a00269bc3e97d4e53ed196325ef02e6d1f3d70dc 30-Jul-2005 Andrew Lenharth <andrewl@lenharth.org> support near allocations for the JIT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22554 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6a9746127a168306a670eaff11925605dbea9d4f 28-Jul-2005 Andrew Lenharth <andrewl@lenharth.org> Like constants, globals on some platforms are GOT relative. This means they have to be allocated
near the GOT, which new doesn't do. So break out the allocate into a new function.

Also move GOT index handling into JITResolver. This lets it update the mapping when a Lazy
function is JITed. It doesn't managed the table, just the mapping. Note that this is
still non-ideal, as any function that takes a function address should also take a GOT
index, but that is a lot of changes. The relocation resolve process updates any GOT entry
it sees is out of date.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
00b16889ab461b7ecef1c91ade101186b7f1fce2 27-Jul-2005 Jeff Cohen <jeffc@jolt-lang.org> Eliminate all remaining tabs and trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d6bbac500b069ab3f2b59d3041479176c5a908cd 26-Jul-2005 Chris Lattner <sabre@nondot.org> fix a warning on 32-bit systems


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22513 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
16ec33c6ef630730ad55a4af7242c658e1efb8b3 22-Jul-2005 Andrew Lenharth <andrewl@lenharth.org> the JIT memory manager will construct a GOT if you want it too. Also, it places the constants in the allocated memory, rather than a malloc area


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22497 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e884dc2c586bc2f6646ffce89fef5100b412326e 20-Jul-2005 Chris Lattner <sabre@nondot.org> count the number of relocations performed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22480 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
3c94497ec7852eccd68c1bc1663e8ac2a7bb1ab9 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Convert tabs to spaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
d91ff7cd3b08cfe30b731799da8358dd9f90558c 18-Apr-2005 Chris Lattner <sabre@nondot.org> Add support for targets that require stubs for external functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21313 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5b3a4553c1da7e417a240379e2f510c77532c5c1 17-Mar-2005 Chris Lattner <sabre@nondot.org> Fix the missing symbols problem Bill was hitting. Patch contributed by
Bill Wendling!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6943570f3a1cbb771f92601d3bbcf9abddeceb5e 20-Feb-2005 Chris Lattner <sabre@nondot.org> Fix problems running the HowToUseJIT on powerpc, and probably problems with
ANY program that does not have all functions internalized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
281a601198f55be89914e64dca0801ba94f925ef 10-Jan-2005 Chris Lattner <sabre@nondot.org> Rework constant pool handling so that function constant pools are no longer
leaked to the system. Now they are destroyed with the JITMemoryManager is
destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
a8101c163dfb7a8c63f5ac74e878538245802fa4 08-Jan-2005 Chris Lattner <sabre@nondot.org> Silence VS warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19390 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
4af3da6e6b5607e4ec19c9b3f995feeb6fb70ae5 13-Dec-2004 Reid Spencer <rspencer@reidspencer.com> Get rid of some leaks found by VC leak detector.
Patch contributed by Morten Ofsted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18889 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e518b7170b09b20abf2806b2762019db082471d8 05-Dec-2004 Chris Lattner <sabre@nondot.org> Properly implement a fix for PR475


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
f71755dc56240a393ad822058f439fe120a1ccbd 01-Dec-2004 Chris Lattner <sabre@nondot.org> Remove unneeded cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18405 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
532343b24e78dc6120921c09151195a59b94058a 30-Nov-2004 Chris Lattner <sabre@nondot.org> Fix the JIT when being used from llvm-db


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
166f2269f5e5e54f8b5df705e7653929374d1893 22-Nov-2004 Chris Lattner <sabre@nondot.org> Rename Emitter.cpp -> JITEmitter.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18132 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
cf88d324a892c8f93ccdac55788afb48b17c728b 22-Nov-2004 Chris Lattner <sabre@nondot.org> Fix the FIXME, nuke the JIT specific forceCompilationOf method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6f71720be3c67f6bffd3976805e577995d779a2f 22-Nov-2004 Chris Lattner <sabre@nondot.org> These methods are obsolete


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18129 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
b43dbdcb20245db6712b2a5a8b52e9b5d8220fed 22-Nov-2004 Chris Lattner <sabre@nondot.org> Support targets that require stubs for external functions better


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
cb47941556800369216c062dcee8dcab7cd39ee9 21-Nov-2004 Chris Lattner <sabre@nondot.org> Clean up DEBUG output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18081 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5e225588530f641d6627becadffdd7d285bfcdba 21-Nov-2004 Chris Lattner <sabre@nondot.org> Allow targets to avoid emitting a stub for EVERY lazily resolved call. In
most cases (e.g. direct calls) no stub is needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18080 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5426652c25a5d960bdd3272aa3b90fc8203a5a66 21-Nov-2004 Chris Lattner <sabre@nondot.org> Implement relocation support by adding a target independent resolver interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
5be478f360b4c632d1adfccc64df87840e1ccfc1 20-Nov-2004 Chris Lattner <sabre@nondot.org> Add getCurrentPCOffset() and addRelocation() methods.
Add stub support for relocations to finishFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18035 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
45730d71b69646afe0876dd03446b4df8b8d11f2 19-Nov-2004 Chris Lattner <sabre@nondot.org> Match change in MachineCodeEmitter prototype.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18009 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
02376e3f29fd393d2e36a2e3bb682bdcecb1c8ab 16-Nov-2004 Chris Lattner <sabre@nondot.org> Now that we have ghost linkage, we can force resolution of external symbols
immediately instead of lazily.

In this program, for example:

int main() {
printf("hello world\n");
printf("hello world\n");
printf("hello world\n");
printf("hello world\n");
}

We used to have to go through compilation callback 4 times (once for each
call to printf), now we don't go to it at all.

Thanks to Misha for noticing this, and for adding the initial ghost linkage
patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
88560c3a4268937a5362e26d75185d436c93ea0a 29-Oct-2004 Brian Gaeke <gaeke@uiuc.edu> When emitting debug msgs for function stubs, don't truncate the
printed pointer value if sizeof(unsigned) != pointer size. Instead,
use uintptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17338 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
33189e787b98c79bd03be466ec19dfb2f65eb65f 14-Sep-2004 Reid Spencer <rspencer@reidspencer.com> Simplify the sys::Memory interface per Chris' request.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16318 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
52b0ba6873c44bd08a43f34068ffdffdb55a6f5c 11-Sep-2004 Reid Spencer <rspencer@reidspencer.com> Convert the Emitter to use the lib/System "Memory" interface instead of the
old SystemUtils.h interface to allocate RWX blocks of memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
551ccae044b0ff658fe629dd67edd5ffe75d10e8 02-Sep-2004 Reid Spencer <rspencer@reidspencer.com> Changes For Bug 352
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
0cb162b3bb9b5f0fbac40bff4a33fd35083a6673 28-May-2004 Chris Lattner <sabre@nondot.org> Use the SystemUtils.h file to do our dirty work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13868 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c52663c4edc90a48c7bbba125bf5271072c6bb12 27-May-2004 Chris Lattner <sabre@nondot.org> This code is a real mess, but at least get the JIT *building* on platforms
(such as plan 9) without mmap. Of course it won't RUN... but that's another
step. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13839 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
aea1b58f1ec420ee73b2ed3ef455901eba531e12 23-Apr-2004 Brian Gaeke <gaeke@uiuc.edu> Implement emitWordAt() for the JIT emitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13118 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6c0398ed4702fdf33b4b3025c9ae466b558118ad 08-Feb-2004 Chris Lattner <sabre@nondot.org> There is no reason to #define fd


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11190 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
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/JITEmitter.cpp
c19aadee66b744311afe6e420847e80822a765f2 08-Dec-2003 Chris Lattner <sabre@nondot.org> Finegrainify namespacification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10318 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
2c0a6a19ef42f2ad547dbc0693e55e082a21ac8b 30-Nov-2003 Chris Lattner <sabre@nondot.org> Emit constants to one contiguous block, but this time, respect alignment constraints.

If this doesn't work Misha, feel free to revert it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10267 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
91de352796a52e5d18b19f0be322677b1cf6b176 30-Nov-2003 Misha Brukman <brukman+llvm@gmail.com> Go back to allocating memory for each constant separately. Since SPARCs do not
allow unaligned loads, that is probably the problem I've been seeing in numerous
SPARC test cases failing. X86, on the other hand, just slows down unaligned
accesses, since it must make 2 aligned accesses for each unaligned one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10266 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
ef7e57018d63dd7df4c74b91d5b7f717930999ad 17-Nov-2003 Misha Brukman <brukman+llvm@gmail.com> Emit the MachineConstantPool constants in one contiguous memory `pool'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10060 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
b576c94c15af9a440f69d9d03c2afead7971118c 20-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM project notice to the top of every C++ source file.
Header files will be on the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e738656c0b380e5059cb522927aeb49554d01e46 20-Oct-2003 Chris Lattner <sabre@nondot.org> Hrm, a relic from the past. How cute :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
6020ddd57e62a8da3eee1210040a3611d52d2889 17-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Fix a typo in a comment, and zap a blank line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9184 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
364f86d4dff7ec203afcef6ae09f64c468e57804 11-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Make mmap's fd for anonymous memory acquisition default to -1, except on
Linux. This is consistent with what FreeBSD and Solaris both want.
This makes the JIT work on FreeBSD 5.1-RELEASE. Whee.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
e24b616faa7fc4242f807669d502a544e9b042fd 10-Oct-2003 Brian Gaeke <gaeke@uiuc.edu> Don't include Config/stdio.h or <stdio.h>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
011efae2f0ff141064e305c55940c9cbec5396c7 06-Oct-2003 Chris Lattner <sabre@nondot.org> Actually _PASS IN_ NO_RESERVE if we have it.
Thanks to Brian for fixing this obvious oops


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
36d10ef7e7c7267a9289c6f5904fcf85640926f4 10-Sep-2003 Misha Brukman <brukman+llvm@gmail.com> * Move include files from middle of file to the top where they belong, moving
the #define up there too
* Since we're including system headers, use the ones in include/llvm/Config
* While we're here, use the canonical LLVM header ordering algorithm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8463 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
88b4855499eb98b5510b74897b77691c1e806cb8 10-Sep-2003 Misha Brukman <brukman+llvm@gmail.com> Fix warning when _POSIX_MAPPED_FILES is already defined in unistd.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
688506de24f04682f9d8563a7d20ab15ab85340b 14-Aug-2003 Chris Lattner <sabre@nondot.org> Implement a _REAL_ memory manager for the code generated by the JIT. This
speeds up program execution by 15% pretty consistently for large programs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7845 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
3785fad56eb90284d4e930d40e9306391630deb1 05-Aug-2003 Chris Lattner <sabre@nondot.org> Specify DEBUG_TYPE's for the JIT debug messages


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7604 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
c648dabf65c67d20c208ed0b39b9622387e636c7 02-Aug-2003 Chris Lattner <sabre@nondot.org> DEBUG got moved to Debug.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
89e8be00c5f410d2238d9ad771831684a2b3a314 29-Jul-2003 Misha Brukman <brukman+llvm@gmail.com> * Stop hard-coding a value for beginning of emitted code on Sparc since we can
now handle far calls (i.e., beyond the 30-bit limit in call instructions).
* As a side-effect, this allows us to unify and clean up the mmap() call and
code around it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7381 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
fd31a78124a0a747b88b49d41ab5e7703c6f9caa 28-Jul-2003 Misha Brukman <brukman+llvm@gmail.com> Add rationale for the MAP_ANONYMOUS vs. MAP_ANON flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
d69c1e6dc28bed3c156f78fee5253748e3d509e2 28-Jul-2003 Misha Brukman <brukman+llvm@gmail.com> Add ability for external C code to get pointers to functions given their name.
This us used by bugpoint -- when code is compiled to a shared object to be
JITted, it must use the JIT's lazy resolution method to find function addresses,
because some functions will not be available at .so load time, as they are in
the bytecode file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
7a73b80b9052136c8cd2234eb3433a07df7cf38e 30-Jun-2003 John Criswell <criswell@uiuc.edu> Merged in autoconf branch. This provides configuration via the autoconf
system.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7014 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
02c26b681ec70538fba8b273326e696e6a3dc4d2 30-Jun-2003 Brian Gaeke <gaeke@uiuc.edu> Get rid of the duplicate '0x' in debug mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7012 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
4399a4982ab8003a6009583b73a2aa38dedb6420 18-Jun-2003 Brian Gaeke <gaeke@uiuc.edu> Add #ifdef hack for MAP_ANONYMOUS being spelled MAP_ANON on some platforms.
(We're already talking about autoconf'ing this, so I'm assuming this hack
will be short-lived...I just don't want it to get lost in my working files.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6761 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
08d5e1f7182bb53f79bbea7fcc9ed983f47990fd 08-Jun-2003 Chris Lattner <sabre@nondot.org> Add #include for older GCC's


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6670 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1d4408506b5704a64ad76a295ee8f7b94b79ffd0 06-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Output function address as hex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
cf614a32d532090d615ecb2574f5990b8f829199 06-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> Removed debug print statement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6641 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
3a55e8aae4f5f28c624a87e2161b4a825b75ad09 04-Jun-2003 Misha Brukman <brukman+llvm@gmail.com> * Institute a hack for the Sparc call to mmap() to get our generated code to be
laid out closer to the VM so that calls to library functions (e.g. puts()) and
callback (e.g. JITResolver::CompilationCallback) fit into 30 bits of the call
instruction.
* Abort if architecture is not yet supported (not X86 or Sparc) because it
likely requires a different set of parameters to mmap() .
* Stop using hard-coded values for page size; use sysconf(_SC_PAGESIZE) instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
d5af63f325b01f31a06d1b1b31df9bbc5fe64926 02-Jun-2003 Chris Lattner <sabre@nondot.org> Remove obsolete code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6518 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
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/JITEmitter.cpp
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/JITEmitter.cpp
eb5a93b86baaeb867942decb3c2902a9ae779e83 08-May-2003 Chris Lattner <sabre@nondot.org> Minor speedup by avoiding callbacks to functions already generated


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6052 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
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/JITEmitter.cpp
910687ec5582f111305283c6f0a2dafeb469ffb2 29-Jan-2003 Chris Lattner <sabre@nondot.org> Fix warnings on sparc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
1cc08381f1ab57efdf07248fd5e9fd75ef6f0f99 13-Jan-2003 Chris Lattner <sabre@nondot.org> Add support for new types of values


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
bd199fb1148b9e16c4e6f3d0ee386c2505a55b71 24-Dec-2002 Chris Lattner <sabre@nondot.org> Initial checkin of new LLI with JIT compiler


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