1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Use lifetime extension for mixin results

This commit is contained in:
Brian Fiete 2022-06-16 07:21:19 -07:00
parent 1639542fed
commit ccb1646990
12 changed files with 105 additions and 44 deletions

View file

@ -36,6 +36,7 @@ class BeLifetimeExtendInst;
class BeAliasValueInst;
class BeLifetimeStartInst;
class BeLifetimeEndInst;
class BeLifetimeSoftEndInst;
class BeLifetimeFenceInst;
class BeValueScopeStartInst;
class BeValueScopeRetainInst;
@ -90,6 +91,7 @@ public:
virtual void Visit(BeLifetimeExtendInst* lifetimeExtendInst) {}
virtual void Visit(BeLifetimeStartInst* lifetimeStartInst) {}
virtual void Visit(BeLifetimeEndInst* lifetimeEndInst) {}
virtual void Visit(BeLifetimeSoftEndInst* lifetimeEndInst) {}
virtual void Visit(BeLifetimeFenceInst* lifetimeFenceInst) {}
virtual void Visit(BeValueScopeStartInst* valueScopeStartInst) {}
virtual void Visit(BeValueScopeRetainInst* valueScopeRetainInst) {}
@ -183,6 +185,7 @@ public:
virtual void Visit(BeLifetimeStartInst* lifetimeStartInst) override;
virtual void Visit(BeLifetimeExtendInst* lifetimeExtendInst) override;
virtual void Visit(BeLifetimeEndInst* lifetimeEndInst) override;
virtual void Visit(BeLifetimeSoftEndInst* lifetimeEndInst) override;
virtual void Visit(BeLifetimeFenceInst* lifetimeFenceInst) override;
virtual void Visit(BeValueScopeStartInst* valueScopeStartInst) override;
virtual void Visit(BeValueScopeRetainInst* valueScopeRetainInst) override;
@ -978,6 +981,20 @@ public:
}
};
class BeLifetimeSoftEndInst : public BeInst
{
public:
BE_VALUE_TYPE(BeLifetimeSoftEndInst, BeInst);
BeValue* mPtr;
virtual void HashInst(BeHashContext& hashCtx) override
{
hashCtx.Mixin(TypeId);
mPtr->HashReference(hashCtx);
}
};
class BeLifetimeFenceInst : public BeInst
{
public: