mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 21:00:29 +00:00
Move CallbackVHs dtor inline, it can be devirtualized in many cases. Move the other virtual methods out of line as they are only called from within Value.cpp anyway.
llvm-svn: 157123
This commit is contained in:
parent
55b5aa4042
commit
e11ffa2475
@ -367,7 +367,7 @@ protected:
|
||||
CallbackVH(const CallbackVH &RHS)
|
||||
: ValueHandleBase(Callback, RHS) {}
|
||||
|
||||
virtual ~CallbackVH();
|
||||
virtual ~CallbackVH() {}
|
||||
|
||||
void setValPtr(Value *P) {
|
||||
ValueHandleBase::operator=(P);
|
||||
@ -389,15 +389,13 @@ public:
|
||||
///
|
||||
/// All implementations must remove the reference from this object to the
|
||||
/// Value that's being destroyed.
|
||||
virtual void deleted() {
|
||||
setValPtr(NULL);
|
||||
}
|
||||
virtual void deleted();
|
||||
|
||||
/// Called when this->getValPtr()->replaceAllUsesWith(new_value) is called,
|
||||
/// _before_ any of the uses have actually been replaced. If WeakVH were
|
||||
/// implemented as a CallbackVH, it would use this method to call
|
||||
/// setValPtr(new_value). AssertingVH would do nothing in this method.
|
||||
virtual void allUsesReplacedWith(Value *) {}
|
||||
virtual void allUsesReplacedWith(Value *);
|
||||
};
|
||||
|
||||
// Specialize simplify_type to allow CallbackVH to participate in
|
||||
|
@ -686,6 +686,9 @@ void ValueHandleBase::ValueIsRAUWd(Value *Old, Value *New) {
|
||||
#endif
|
||||
}
|
||||
|
||||
/// ~CallbackVH. Empty, but defined here to avoid emitting the vtable
|
||||
/// more than once.
|
||||
CallbackVH::~CallbackVH() {}
|
||||
// Default implementation for CallbackVH.
|
||||
void CallbackVH::allUsesReplacedWith(Value *) {}
|
||||
|
||||
void CallbackVH::deleted() {
|
||||
setValPtr(NULL);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user