-#endif
-
-#if ENABLE(DFG_JIT)
- void createDFGDataIfNecessary()
- {
- if (!!m_dfgData)
- return;
-
- m_dfgData = adoptPtr(new DFGData);
- }
-
- void saveCompilation(PassRefPtr<Profiler::Compilation> compilation)
- {
- createDFGDataIfNecessary();
- m_dfgData->compilation = compilation;
- }
-
- Profiler::Compilation* compilation()
- {
- if (!m_dfgData)
- return 0;
- return m_dfgData->compilation.get();
- }
-
- DFG::OSREntryData* appendDFGOSREntryData(unsigned bytecodeIndex, unsigned machineCodeOffset)
- {
- createDFGDataIfNecessary();
- DFG::OSREntryData entry;
- entry.m_bytecodeIndex = bytecodeIndex;
- entry.m_machineCodeOffset = machineCodeOffset;
- m_dfgData->osrEntry.append(entry);
- return &m_dfgData->osrEntry.last();
- }
- unsigned numberOfDFGOSREntries() const
- {
- if (!m_dfgData)
- return 0;
- return m_dfgData->osrEntry.size();
- }
- DFG::OSREntryData* dfgOSREntryData(unsigned i) { return &m_dfgData->osrEntry[i]; }
- DFG::OSREntryData* dfgOSREntryDataForBytecodeIndex(unsigned bytecodeIndex)
- {
- if (!m_dfgData)
- return 0;
- return tryBinarySearch<DFG::OSREntryData, unsigned>(
- m_dfgData->osrEntry, m_dfgData->osrEntry.size(), bytecodeIndex,
- DFG::getOSREntryDataBytecodeIndex);
- }
-
- unsigned appendOSRExit(const DFG::OSRExit& osrExit)
- {
- createDFGDataIfNecessary();
- unsigned result = m_dfgData->osrExit.size();
- m_dfgData->osrExit.append(osrExit);
- return result;
- }
-
- DFG::OSRExit& lastOSRExit()
- {
- return m_dfgData->osrExit.last();
- }
-
- unsigned appendSpeculationRecovery(const DFG::SpeculationRecovery& recovery)
- {
- createDFGDataIfNecessary();
- unsigned result = m_dfgData->speculationRecovery.size();
- m_dfgData->speculationRecovery.append(recovery);
- return result;
- }
-
- unsigned appendWatchpoint(const JumpReplacementWatchpoint& watchpoint)
- {
- createDFGDataIfNecessary();
- unsigned result = m_dfgData->watchpoints.size();
- m_dfgData->watchpoints.append(watchpoint);
- return result;
- }
-
- unsigned numberOfOSRExits()
- {
- if (!m_dfgData)
- return 0;
- return m_dfgData->osrExit.size();
- }
-
- unsigned numberOfSpeculationRecoveries()
- {
- if (!m_dfgData)
- return 0;
- return m_dfgData->speculationRecovery.size();
- }
-
- unsigned numberOfWatchpoints()
- {
- if (!m_dfgData)
- return 0;
- return m_dfgData->watchpoints.size();
- }
-
- DFG::OSRExit& osrExit(unsigned index)
- {
- return m_dfgData->osrExit[index];
- }
-
- DFG::SpeculationRecovery& speculationRecovery(unsigned index)
- {
- return m_dfgData->speculationRecovery[index];
- }
-
- JumpReplacementWatchpoint& watchpoint(unsigned index)
- {
- return m_dfgData->watchpoints[index];
- }
-
- void appendWeakReference(JSCell* target)
- {
- createDFGDataIfNecessary();
- m_dfgData->weakReferences.append(WriteBarrier<JSCell>(*vm(), ownerExecutable(), target));
- }
-
- void appendWeakReferenceTransition(JSCell* codeOrigin, JSCell* from, JSCell* to)
- {
- createDFGDataIfNecessary();
- m_dfgData->transitions.append(
- WeakReferenceTransition(*vm(), ownerExecutable(), codeOrigin, from, to));
- }
-
- DFG::MinifiedGraph& minifiedDFG()
- {
- createDFGDataIfNecessary();
- return m_dfgData->minifiedDFG;
- }
-
- DFG::VariableEventStream& variableEventStream()
- {
- createDFGDataIfNecessary();
- return m_dfgData->variableEventStream;
- }
-#endif
-