Displaying 12 results from an estimated 12 matches for "updatepointer".
2016 Jul 28
2
[ORC JIT] Exposing IndirectStubsManager from CompileOnDemandLayer.h
...his already been added? Would it be possible to merge this in?
diff --git a/CompileOnDemandLayer.h b/CompileOnDemandLayer.h
index bd192b8..4aa3362 100644
--- a/CompileOnDemandLayer.h
+++ b/CompileOnDemandLayer.h
@@ -429,6 +429,28 @@ private:
return CalledAddr;
}
+public:
+ TargetAddress updatePointer(std::string FuncName, TargetAddress
FnBodyAddr) {
+ //Find out which logical dylib contains our symbol
+ auto LDI = LogicalDylibs.begin();
+ for (auto LDE = LogicalDylibs.end(); LDI != LDE; ++LDI) {
+ if (auto LMResources =
LDI->getLogicalModuleResourcesForSymbol(FuncName, false)...
2016 Jul 29
0
[ORC JIT] Exposing IndirectStubsManager from CompileOnDemandLayer.h
...e this in?
>
> diff --git a/CompileOnDemandLayer.h b/CompileOnDemandLayer.h
> index bd192b8..4aa3362 100644
> --- a/CompileOnDemandLayer.h
> +++ b/CompileOnDemandLayer.h
> @@ -429,6 +429,28 @@ private:
> return CalledAddr;
> }
>
> +public:
> + TargetAddress updatePointer(std::string FuncName, TargetAddress
> FnBodyAddr) {
> + //Find out which logical dylib contains our symbol
> + auto LDI = LogicalDylibs.begin();
> + for (auto LDE = LogicalDylibs.end(); LDI != LDE; ++LDI) {
> + if (auto LMResources =
> LDI->getLogicalModuleResou...
2016 Jul 29
2
[ORC JIT] Exposing IndirectStubsManager from CompileOnDemandLayer.h
...mpileOnDemandLayer.h b/CompileOnDemandLayer.h
>> index bd192b8..4aa3362 100644
>> --- a/CompileOnDemandLayer.h
>> +++ b/CompileOnDemandLayer.h
>> @@ -429,6 +429,28 @@ private:
>> return CalledAddr;
>> }
>>
>> +public:
>> + TargetAddress updatePointer(std::string FuncName, TargetAddress
>> FnBodyAddr) {
>> + //Find out which logical dylib contains our symbol
>> + auto LDI = LogicalDylibs.begin();
>> + for (auto LDE = LogicalDylibs.end(); LDI != LDE; ++LDI) {
>> + if (auto LMResources =
>> LDI-&...
2016 Jul 29
0
[ORC JIT] Exposing IndirectStubsManager from CompileOnDemandLayer.h
...ndLayer.h
>>> index bd192b8..4aa3362 100644
>>> --- a/CompileOnDemandLayer.h
>>> +++ b/CompileOnDemandLayer.h
>>> @@ -429,6 +429,28 @@ private:
>>> return CalledAddr;
>>> }
>>>
>>> +public:
>>> + TargetAddress updatePointer(std::string FuncName, TargetAddress
>>> FnBodyAddr) {
>>> + //Find out which logical dylib contains our symbol
>>> + auto LDI = LogicalDylibs.begin();
>>> + for (auto LDE = LogicalDylibs.end(); LDI != LDE; ++LDI) {
>>> + if (auto LMResour...
2016 Jul 30
1
[ORC JIT] Exposing IndirectStubsManager from CompileOnDemandLayer.h
...92b8..4aa3362 100644
>>>> --- a/CompileOnDemandLayer.h
>>>> +++ b/CompileOnDemandLayer.h
>>>> @@ -429,6 +429,28 @@ private:
>>>> return CalledAddr;
>>>> }
>>>>
>>>> +public:
>>>> + TargetAddress updatePointer(std::string FuncName, TargetAddress
>>>> FnBodyAddr) {
>>>> + //Find out which logical dylib contains our symbol
>>>> + auto LDI = LogicalDylibs.begin();
>>>> + for (auto LDE = LogicalDylibs.end(); LDI != LDE; ++LDI) {
>>>> +...
2016 May 27
1
How to recompile functions with ORC JIT?
....
As Dave implied, it depends on how you've set up your ORC stack. These
days, the API directly responsible for this is the IndirectStubsManager
(see llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h). If you have
access to the appropriate IndirectStubsManager you just need to call the
updatePointer method with the name of the function you want to update and
the new address.
If you're using the CompileOnDemand layer to compile lazily from IR, the
problem is that that layer doesn't (currently) expose the
IndirectStubManager for each module. I think it would be reasonable to add
support...
2016 May 27
0
How to recompile functions with ORC JIT?
+Lang
Ultravague answer: There are a few different Orc layers for different
levels of indirection needed for different levels of substitutability. One
way is to indirect every call through global function pointers - so when
you want to replace the function you write the new function pointer to the
global variable. I forget which layers do which kinds of indirection.
- Dave
On Thu, May 26, 2016
2019 Sep 03
2
SourceMgr vs EXPENSIVE_CHECKS
...; *, std::__debug::vector<unsigned
short, std::allocator<unsigned short> > *,
std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
std::__debug::vector<unsigned long, std::allocator<unsigned long> > *>
>' requested here
Value = Info::updatePointer(0, PtrVal);
^
/home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
note: in instantiation of member function 'llvm::PointerIntPair<void
*, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vector<unsigned
char, std::allocator&l...
2019 Sep 03
2
SourceMgr vs EXPENSIVE_CHECKS
...; short, std::allocator<unsigned short> > *,
>> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
>> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *>
>> >' requested here
>> Value = Info::updatePointer(0, PtrVal);
>> ^
>> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
>> note: in instantiation of member function 'llvm::PointerIntPair<void
>> *, 2, int, llvm::pointer_union_detail::PointerUnionUIntTraits<std::__debug::vecto...
2019 Oct 02
2
SourceMgr vs EXPENSIVE_CHECKS
...short> > *,
>> >> std::__debug::vector<unsigned int, std::allocator<unsigned int> > *,
>> >> std::__debug::vector<unsigned long, std::allocator<unsigned long> > *>
>> >> >' requested here
>> >> Value = Info::updatePointer(0, PtrVal);
>> >> ^
>> >> /home/jayfoad2/git/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:227:15:
>> >> note: in instantiation of member function 'llvm::PointerIntPair<void
>> >> *, 2, int, llvm::pointer_union_detail::PointerUn...
2016 May 27
2
How to recompile functions with ORC JIT?
Hello,
I am trying to figure out how to recompile functions multiple times
during run-time with ORC JIT
and I'd appreciate any help/advice.
My use case is t he following: every time a function of interest
(annotated) is called, profiling data
are gathered. Given enough data the function is recompiled using
different optimizations. This happens
repeatedly until the "best"
2018 Apr 05
1
llvm::PointerIntPair -- is this by design or a bug?
I do agree that sign-extension is the right thing to do. Unlike bit-fields, llvm::PointerIntPair has asserts checking that the int value is within range. So if you assign an out of range value, it should fail with an assertion:
llvm::PointerIntPair<SomeType*, 3, int> pip;
pip.setInt(7); // can be made to fail as the valid range
// of signed 3-bit values is [-4:3]
The above