[PATCH] SectionMemoryManager is not a JITMemoryManager
Kaylor, Andrew
andrew.kaylor at intel.com
Tue May 7 10:04:46 PDT 2013
There definitely is some clean-up that should be done to both lli and the unit tests with regard to explicit cache invalidation, but I don't think that's related to this patch.
I had been waiting to make sure the cache invalidation change "stuck" before purging the tests of redundant calls to it. It looks like that has happened. Now I just need to find time to do it.
David, if you want to do the clean-up, I'll take a grateful look at it when you're done. Otherwise, I'll probably get to that within the next week or so.
-Andy
-----Original Message-----
From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of David Tweed
Sent: Tuesday, May 07, 2013 2:37 AM
To: 'Filip Pizlo'
Cc: llvm-commits at cs.uiuc.edu
Subject: RE: [PATCH] SectionMemoryManager is not a JITMemoryManager
|It does update unit tests. :-). MCJITTest Base is changed.
| Are there other places that I don't know about?
Ah, I was wondering if any of the actual code in MCJITTEst.cpp now needed, or perhaps more likely, would be simplified by changing: it looks like the 'static_cast<SectionMemoryManager*>(MM)->invalidateInstructionCache()'
instructions
can go now that MM is definitely a SectionMemoryManager* whose
applyPermissions() does that at
the end of the it. (Since the purpose is to test the built-in "default"
manager it seems
worthwhile to use its behaviour rather than write code that might be needed if a "user"
memory manager were being used.)
Cheers,
Dave
-Filip
On May 7, 2013, at 12:58 AM, David Tweed <david.tweed at arm.com> wrote:
> Hi,
>
> I haven't had time to do more than skim the patch, but one thing is
> that I notice there aren't any changes to any of the tests. I know
> that we've unfortunately got a situation where several of the MCJIT
> using tests just copy and paste whatever memory management code lli
> was using at the time
so
> they easily end up out-of-sync. If after this patch is applied they
> still need updating I'll have a go at it, although it might be
> preferable if someone more knowledgeable has a look... (I just about
> know how to what needs to be done one ARM, but I may well not
> understand the other
supported
> but less mainstream architectures.)
>
> Will try to come up with other comments on the patch today,
>
> Cheers,
> Dave
>
> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu
> [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of Filip Pizlo
> Sent: 04 May 2013 20:37
> To: llvm-commits at cs.uiuc.edu
> Subject: [PATCH] SectionMemoryManager is not a JITMemoryManager
>
> This patch cleans up the relationship between RTDyldMemoryManager,
> JITMemoryManager, and EngineBuilder.
>
> As I understand it, JITMemoryManager is meant to go away at some
> point,
and
> RTDyldMemoryManager is not meant to be predestined to have to support
> all
of
> the things that JITMemoryManager had; it may have some of the same
> things, but also maybe some new things, and probably not all of the old things.
>
> But right now EngineBuilder doesn't know anything about
RTDyldMemoryManager
> and assumes that JITMemoryManager is the way memory is managed in both
MCJIT
> and the old JIT. This means that if you want to pass an
RTDyldMemoryManager
> to the MCJIT via the EngineBuilder API, you have to actually create a
> JITMemoryManager and stub out a *bunch* of methods.
> SectionMemoryManager does this, for example: SectionMemoryManager is a
> subtype of JITMemoryManager that cannot actually be used as a
> JITMemoryManager,
except
> passing it through EngineBuilder so that MCJIT can use it as an
> RTDyldMemoryManager. :-/
>
> This patch attempts to fix the problem:
>
> - EngineBuilder now knows that RTDyldMemoryManager and
> JITMemoryManager
are
> different but similar things. It knows that if you set a
JITMemoryManager,
> then it can be used for the MCJIT. It knows that an
> RTDyldMemoryManager
can
> also be used for the MCJIT, but cannot be used for old JIT. It will
ensure
> that you cannot set both at the same time since that would be
> confusing (setting one overrides the other).
>
> - SectionMemoryManager is no longer a subtype of JITMemoryManager, and
> no longer has a ton of stub unimplemented methods.
>
> - lli and various tests are changed to know that a
> SectionMemoryManager is not a JITMemoryManager.
>
> This is a change to the C++ API, and I actually don't know that the
policies
> on this are! But I hope that this is something that we can change,
> since
it
> kills some gnarly code and concentrates whatever little ugliness
> remains into EngineBuilder (it's only ugly because it has to know that
> there are
two
> kinds of ways of saying that you want to manager memory yourself).
>
> -Filip
>
>
>
>
_______________________________________________
llvm-commits mailing list
llvm-commits at cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list