DFGDesiredTransitions.cpp [plain text]
#include "config.h"
#include "DFGDesiredTransitions.h"
#if ENABLE(DFG_JIT)
#include "CodeBlock.h"
#include "DFGCommonData.h"
#include "JSCInlines.h"
namespace JSC { namespace DFG {
DesiredTransition::DesiredTransition(CodeBlock* codeBlock, CodeBlock* codeOriginOwner, Structure* oldStructure, Structure* newStructure)
: m_codeBlock(codeBlock)
, m_codeOriginOwner(codeOriginOwner)
, m_oldStructure(oldStructure)
, m_newStructure(newStructure)
{
}
void DesiredTransition::reallyAdd(VM& vm, CommonData* common)
{
common->transitions.append(
WeakReferenceTransition(
vm, m_codeBlock,
m_codeOriginOwner,
m_oldStructure, m_newStructure));
}
void DesiredTransition::visitChildren(SlotVisitor& visitor)
{
visitor.appendUnbarriered(m_codeOriginOwner);
visitor.appendUnbarriered(m_oldStructure);
visitor.appendUnbarriered(m_newStructure);
}
DesiredTransitions::DesiredTransitions()
{
}
DesiredTransitions::~DesiredTransitions()
{
}
void DesiredTransitions::addLazily(CodeBlock* codeBlock, CodeBlock* codeOriginOwner, Structure* oldStructure, Structure* newStructure)
{
m_transitions.append(DesiredTransition(codeBlock, codeOriginOwner, oldStructure, newStructure));
}
void DesiredTransitions::reallyAdd(VM& vm, CommonData* common)
{
for (unsigned i = 0; i < m_transitions.size(); i++)
m_transitions[i].reallyAdd(vm, common);
}
void DesiredTransitions::visitChildren(SlotVisitor& visitor)
{
for (unsigned i = 0; i < m_transitions.size(); i++)
m_transitions[i].visitChildren(visitor);
}
} }
#endif // ENABLE(DFG_JIT)