void SourceDynamicProfileManager::SaveToDynamicProfileStorage(wchar_t const * url) { Assert(DynamicProfileStorage::IsEnabled()); BufferSizeCounter counter; if (!this->Serialize(&counter)) { return; } if (counter.GetByteCount() > UINT_MAX) { // too big return; } char * record = DynamicProfileStorage::AllocRecord(static_cast<DWORD>(counter.GetByteCount())); #if DBG_DUMP if (PHASE_STATS1(DynamicProfilePhase)) { Output::Print(L"%-180s : %d bytes\n", url, counter.GetByteCount()); } #endif BufferWriter writer(DynamicProfileStorage::GetRecordBuffer(record), counter.GetByteCount()); if (!this->Serialize(&writer)) { Assert(false); DynamicProfileStorage::DeleteRecord(record); } DynamicProfileStorage::SaveRecord(url, record); }
size_t __cdecl Output::TraceStats(Js::Phase phase, const wchar_t *form, ...) { if(PHASE_STATS1(phase)) { va_list argptr; va_start(argptr, form); return Output::VPrint(form, argptr); } return 0; }
size_t __cdecl Output::TraceStats(Js::Phase phase, const char16 *form, ...) { if(PHASE_STATS1(phase)) { va_list argptr; va_start(argptr, form); size_t ret_val = Output::VPrint(form, argptr); va_end(argptr); return ret_val; } return 0; }
void EmitBufferManager<TAlloc, TPreReservedAlloc, SyncObject>::FreeAllocations(bool release) { #if PDATA_ENABLED && defined(_WIN32) DelayDeletingFunctionTable::Clear(); #endif AutoRealOrFakeCriticalSection<SyncObject> autoCs(&this->criticalSection); #if DBG_DUMP if (!release && PHASE_STATS1(Js::EmitterPhase)) { this->DumpAndResetStats(Js::Configuration::Global.flags.Filename); } #endif TEmitBufferAllocation * allocation = this->allocations; while (allocation != nullptr) { #ifdef ENABLE_DEBUG_CONFIG_OPTIONS if(CONFIG_FLAG(CheckEmitBufferPermissions)) { CheckBufferPermissions(allocation); } #endif if (release) { this->allocationHeap.Free(allocation->allocation); } else if ((scriptContext != nullptr) && allocation->recorded) { // In case of ThunkEmitter the script context would be null and we don't want to track that as code size. this->scriptContext->GetThreadContext()->SubCodeSize(allocation->bytesCommitted); allocation->recorded = false; } allocation = allocation->nextAllocation; } if (release) { this->allocations = nullptr; } else { this->allocationHeap.DecommitAll(); } }