Exemple #1
0
ChunkPool::ChunkPool(int o, int initialSize) :
	owner(o),
	chunkQueue(new MSQueue<SPChunk*>())
{
	AtomicStatistics* stat = new AtomicStatistics(); // no need to count the initialization operations
	for(int i = 0; i < initialSize; i++) {
		putChunk(new SPChunk(owner), stat);
	}
	delete stat;
}
Exemple #2
0
         //
         // Info::putChunkSTRL
         //
         void Info::putChunkSTRL()
         {
            if(!numChunkSTRL) return;

            Core::Array<Core::String> strs{numChunkSTRL};

            for(auto &s : strs) s = Core::STR_;

            for(auto const &itr : prog->rangeStrEnt()) if(itr.defin)
               strs[itr.valueInt] = itr.valueStr;

            putChunk(UseChunkSTRE ? "STRE" : "STRL", strs, true);
         }
Exemple #3
0
         //
         // Info::putChunkSNAM
         //
         void Info::putChunkSNAM()
         {
            if(!numChunkSNAM) return;

            Core::Array<Core::String> strs{numChunkSNAM};

            for(auto &s : strs) s = Core::STR_;

            for(auto const &itr : prog->rangeFunction())
            {
               if(itr.ctype != IR::CallType::ScriptS)
                  continue;

               strs[itr.valueInt] = itr.valueStr;
            }

            putChunk("SNAM", strs, false);
         }
Exemple #4
0
         //
         // Info::putChunkMEXP
         //
         void Info::putChunkMEXP()
         {
            if(!numChunkMEXP) return;

            Core::Array<Core::String> strs{numChunkMEXP};
            for(auto &s : strs) s = Core::STR_;

            for(auto const &itr : prog->rangeObject())
            {
               if(!itr.defin && itr.space.base == IR::AddrBase::MapReg)
                  strs[itr.value] = itr.glyph;
            }

            for(auto const &itr : prog->rangeSpaceMapArs())
               if(itr.defin) strs[itr.value] = itr.glyph;

            putChunk("MEXP", strs, false);
         }