MCPcopy Create free account
hub / github.com/beefytech/Beef / DoWriteObjectFile

Method DoWriteObjectFile

IDEHelper/Compiler/BfCodeGen.cpp:746–778  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

744}
745
746void BfCodeGen::DoWriteObjectFile(BfCodeGenRequest* codeGenRequest, const void* ptr, int size, const StringImpl& outFileName, BfCodeGenResult* externResultPtr)
747{
748 codeGenRequest->mData.mVals = (uint8*)ptr;
749 codeGenRequest->mData.mSize = size;
750 codeGenRequest->mOutFileName = outFileName;
751 codeGenRequest->mResult.mType = BfCodeGenResult_NotDone;
752 codeGenRequest->mResult.mErrorMsgBufLen = 0;
753 codeGenRequest->mExternResultPtr = externResultPtr;
754
755 int threadIdx = mRequestIdx % mMaxThreadCount;
756 if (threadIdx >= (int) mThreads.size())
757 {
758 AutoCrit autoCrit(mThreadsCritSect);
759 BfCodeGenThread* thread = new BfCodeGenThread();
760 thread->mThreadIdx = threadIdx;
761 thread->mCodeGen = this;
762 mThreads.push_back(thread);
763 thread->Start();
764 }
765
766 auto thread = mThreads[threadIdx];
767
768 BP_ZONE("WriteObjectFile_CritSect");
769 AutoCrit autoCrit(mPendingRequestCritSect);
770 mPendingRequests.push_back(codeGenRequest);
771
772#ifdef BF_PLATFORM_WINDOWS
773 BF_ASSERT(!mRequestEvent.mEvent->mManualReset); // Make sure it's out of the SignalAll state
774#endif
775 mRequestEvent.Set();
776
777 mRequestIdx++;
778}
779
780void BfCodeGen::SetMaxThreads(int maxThreads)
781{

Callers 1

BfCodeGen_GenerateObjFunction · 0.80

Calls 4

sizeMethod · 0.45
push_backMethod · 0.45
StartMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected