Stuff in Druntime That Generates Garbage

From D Wiki
Revision as of 13:29, 14 October 2014 by DmitryOlshansky (talk | contribs)
Jump to: navigation, search

A preview of revamped gchunt tool.

Always curious to see what kind of garbage the druntime may generate.


Module Artifact Reason Possible Fix(es)
src.core.demangle append setting 'length' may cause GC allocation 1
src.core.demangle decodeDmdString operator ~= may cause GC allocation 1 2 3
src.core.demangle doDemangle setting 'length' may cause GC allocation 1 2
src.core.demangle error 'new' causes GC allocation 1
src.core.demangle mangle.numToString setting 'length' may cause GC allocation 1
src.core.demangle parseValue array literal may cause GC allocation 1 2
src.core.exception onAssertError 'new' causes GC allocation 1
src.core.exception onAssertErrorMsg 'new' causes GC allocation 1
src.core.exception onFinalizeError 'new' causes GC allocation 1
src.core.exception onHiddenFuncError 'new' causes GC allocation 1
src.core.exception onRangeError 'new' causes GC allocation 1
src.core.exception onSwitchError 'new' causes GC allocation 1
src.core.exception onUnicodeError 'new' causes GC allocation 1
src.core.exception this operator ~ may cause GC allocation 1
src.core.exception toString operator ~ may cause GC allocation 1
src.core.internal.traits **** operator ~ may cause GC allocation;

operator ~= may cause GC allocation 1 2

src.core.runtime fixline 'new' causes GC allocation 1
src.core.runtime toString operator ~ may cause GC allocation;

operator ~= may cause GC allocation 1 2 3

src.core.sync.barrier **** 'new' causes GC allocation 1 2
src.core.sync.condition Condition.this 'new' causes GC allocation 1
src.core.sync.condition notify 'new' causes GC allocation 1
src.core.sync.condition notifyAll 'new' causes GC allocation 1
src.core.sync.condition wait 'new' causes GC allocation 1 2
src.core.sync.mutex lock_impl 'new' causes GC allocation 1
src.core.sync.mutex this 'new' causes GC allocation 1 2 3
src.core.sync.mutex unlock_impl 'new' causes GC allocation 1
src.core.sync.rwmutex ReadWriteMutex.this 'new' causes GC allocation 1 2 3 4 5 6 7 8
src.core.sync.semaphore Semaphore.this 'new' causes GC allocation 1
src.core.sync.semaphore notify 'new' causes GC allocation 1
src.core.sync.semaphore tryWait 'new' causes GC allocation 1
src.core.sync.semaphore wait 'new' causes GC allocation 1 2
src.core.thread ThreadGroup.add indexing an associative array may cause GC allocation 1
src.core.thread ThreadGroup.create 'new' causes GC allocation;

indexing an associative array may cause GC allocation 1 2 3 4

src.core.thread allocStack 'new' causes GC allocation 1 2
src.core.thread getAll 'new' causes GC allocation 1
src.core.thread join 'new' causes GC allocation 1
src.core.thread priority 'new' causes GC allocation 1 2
src.core.thread sleep 'new' causes GC allocation 1
src.core.thread start 'new' causes GC allocation 1 2 3 4 5
src.core.thread thread_attachThis 'new' causes GC allocation 1
src.core.time _enforceValid 'new' causes GC allocation 1
src.core.time _toStringImpl 'new' causes GC allocation;

operator ~ may cause GC allocation 1 2 3 4 5 6 7

src.core.time _toStringImpl.appListSep operator ~= may cause GC allocation 1 2
src.core.time _toStringImpl.appUnitVal operator ~ may cause GC allocation;

operator ~= may cause GC allocation 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

src.core.time numToString operator ~ may cause GC allocation 1
src.core.time split.split.genMemberDecls operator ~= may cause GC allocation 1 2 3
src.core.time split.split.genSplitCall operator ~= may cause GC allocation 1 2 3 4
src.core.time toString operator ~ may cause GC allocation 1
src.core.time unitsAreInDescendingOrder array literal may cause GC allocation 1
src.etc.linux.memoryerror sigsegvUserspaceProcess 'new' causes GC allocation 1 2
src.gc.gc GC.removeRange using closure causes GC allocation 1
src.gc.gc GC.removeRoot using closure causes GC allocation 1
src.object_ Object.opCmp 'new' causes GC allocation;

operator ~ may cause GC allocation 1 2

src.object_ _dup operator ~= may cause GC allocation 1
src.object_ _xopCmp 'new' causes GC allocation 1
src.object_ _xopEquals 'new' causes GC allocation 1
src.object_ postblit operator ~ may cause GC allocation 1
src.object_ swap 'new' causes GC allocation;

operator ~ may cause GC allocation 1 2 3

src.object_ toString operator ~ may cause GC allocation;

operator ~= may cause GC allocation 1 2 3 4 5 6 7 8 9 10 11 12

src.rt.aaA _d_assocarrayliteralTX 'new' causes GC allocation 1 2
src.rt.aaA aligntsize 'new' causes GC allocation 1
src.rt.arraycast _d_arraycast 'new' causes GC allocation 1
src.rt.cover _d_cover_register2 operator ~= may cause GC allocation 1
src.rt.cover addExt operator ~ may cause GC allocation;

operator ~= may cause GC allocation 1 2 3

src.rt.cover appendFN operator ~= may cause GC allocation 1 2
src.rt.cover baseName operator ~= may cause GC allocation 1 2
src.rt.cover expandTabs operator ~= may cause GC allocation;

setting 'length' may cause GC allocation 1 2 3 4

src.rt.cover readFile 'new' causes GC allocation;

setting 'length' may cause GC allocation 1 2 3 4

src.rt.cover splitLines operator ~= may cause GC allocation;

setting 'length' may cause GC allocation 1 2 3

src.rt.cover this 'new' causes GC allocation 1 2 3 4
src.rt.minfo sortCtors.sort 'new' causes GC allocation;

operator ~= may cause GC allocation 1 2 3 4

src.rt.util.array _enforceNoOverlap 'new' causes GC allocation;

operator ~= may cause GC allocation 1 2 3 4 5 6

src.rt.util.array _enforceSameLength 'new' causes GC allocation;

operator ~= may cause GC allocation 1 2 3 4 5 6

src.rt.util.utf encode operator ~= may cause GC allocation 1 2 3 4 5
src.rt.util.utf toUTF16 operator ~= may cause GC allocation;

setting 'length' may cause GC allocation 1 2 3 4 5

src.rt.util.utf toUTF16z operator ~= may cause GC allocation;

setting 'length' may cause GC allocation 1 2 3 4

src.rt.util.utf toUTF32 setting 'length' may cause GC allocation 1 2
src.rt.util.utf toUTF8 setting 'length' may cause GC allocation 1 2 3 4