Difference between revisions of "Runtime Hooks"
(split out associative arrays) |
|||
(22 intermediate revisions by 4 users not shown) | |||
Line 30: | Line 30: | ||
|- | |- | ||
| _d_assocarrayliteralTX || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aaA.d#L737 rt/aaA.d]|| | | _d_assocarrayliteralTX || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aaA.d#L737 rt/aaA.d]|| | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" width="100%" | ||
+ | |+dynamic array support | ||
+ | |- | ||
+ | !mangled name!!calling convention!!description!!druntime definition!!comment | ||
+ | |- | ||
+ | | _adEq || extern(C)|| array equality test|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/adi.d#L368 rt/adi.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L352 __equals] | ||
+ | |- | ||
+ | | _adEq2 || extern(C)|| array equality test|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/adi.d#L389 rt/adi.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L352 __equals] | ||
+ | |- | ||
+ | | _adEqBit || ???|| || ???||Can't find this in druntime. Deprecated? | ||
+ | |- | ||
+ | | _adReverse || extern(C)|| implement .reverse property (generic)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/adi.d#L236 rt/adi.d]|| [https://dlang.org/deprecate.html#.sort%20and%20.reverse%20properties%20for%20arrays Removed from the language] in v2.075 | ||
+ | |- | ||
+ | | _adReverseChar || extern(C)|| implement .reverse property (char array)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/adi.d#L47 rt/adi.d]|| [https://dlang.org/deprecate.html#.sort%20and%20.reverse%20properties%20for%20arrays Removed from the language] in v2.075 | ||
+ | |- | ||
+ | | _adReverseWchar || extern(C)|| implement .reverse property (wchar array)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/adi.d#L142 rt/adi.d]|| [https://dlang.org/deprecate.html#.sort%20and%20.reverse%20properties%20for%20arrays Removed from the language] in v2.075 | ||
+ | |- | ||
+ | | _adSort || extern(C)|| Implement .sort property (generic)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/qsort.d#L43 rt/qsort.d]|| [https://dlang.org/deprecate.html#.sort%20and%20.reverse%20properties%20for%20arrays Removed from the language] in v2.075 | ||
+ | |- | ||
+ | | _adSortChar || extern(C)|| Implement .sort property (char array)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/adi.d#L321 rt/adi.d]|| [https://dlang.org/deprecate.html#.sort%20and%20.reverse%20properties%20for%20arrays Removed from the language] in v2.075 | ||
+ | |- | ||
+ | | _adSortWchar || extern(C)|| Implement .sort property (wchar array)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/adi.d#L343 rt/adi.d]|| [https://dlang.org/deprecate.html#.sort%20and%20.reverse%20properties%20for%20arrays Removed from the language] in v2.075 | ||
|} | |} | ||
Line 57: | Line 82: | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
− | |+ | + | |+hooks for thread support |
|- | |- | ||
!mangled name!!calling convention!!description!!druntime definition!!comment | !mangled name!!calling convention!!description!!druntime definition!!comment | ||
|- | |- | ||
− | | | + | | ___tls_get_addr || extern(D)|| Returns the thread local address of a variable. Used to emulate thread local storage on Mac OS X. || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/core/thread.d#L4550 core/thread.d]|| Only used on Mac OS X. |
+ | |} | ||
+ | |||
+ | {| class="wikitable" width="100%" | ||
+ | |+hooks for GC support | ||
|- | |- | ||
− | + | !mangled name!!calling convention!!description!!druntime definition!!comment | |
|- | |- | ||
− | | | + | | RTInfo || (not a function) || Used to create runtime type information which can then be obtained by the GC at runtime. || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/object_.d#L2629 object_.d]|| This is a template which gets instantiated for '''every''' type. |
− | + | |} | |
− | + | ||
− | + | {| class="wikitable" width="100%" | |
− | + | |+utf decoding for foreach loops | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | | | ||
− | | | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| _aApplycd1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApply.d#L26 rt/aApply.d]|| | | _aApplycd1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApply.d#L26 rt/aApply.d]|| | ||
Line 112: | Line 123: | ||
|- | |- | ||
| _aApplywd2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApply.d#L227 rt/aApply.d]|| | | _aApplywd2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApply.d#L227 rt/aApply.d]|| | ||
+ | |} | ||
+ | |||
+ | {| class="wikitable" width="100%" | ||
+ | |+utf decoding for foreach_reverse loops | ||
+ | |- | ||
+ | | _aApplyRcd1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L31 rt/aApplyR.d]|| | ||
+ | |- | ||
+ | | _aApplyRcd2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L493 rt/aApplyR.d]|| | ||
+ | |- | ||
+ | | _aApplyRcw1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L169 rt/aApplyR.d]|| | ||
+ | |- | ||
+ | | _aApplyRcw2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L636 rt/aApplyR.d]|| | ||
+ | |- | ||
+ | | _aApplyRdc1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L341 rt/aApplyR.d]|| | ||
|- | |- | ||
− | | | + | | _aApplyRdc2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L812 rt/aApplyR.d]|| |
|- | |- | ||
− | | | + | | _aApplyRdw1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L420 rt/aApplyR.d]|| |
|- | |- | ||
− | | | + | | _aApplyRdw2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L892 rt/aApplyR.d]|| |
|- | |- | ||
− | | | + | | _aApplyRwc1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L256 rt/aApplyR.d]|| |
|- | |- | ||
− | | | + | | _aApplyRwc2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L725 rt/aApplyR.d]|| |
|- | |- | ||
− | | | + | | _aApplyRwd1 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L105 rt/aApplyR.d]|| |
|- | |- | ||
− | | | + | | _aApplyRwd2 || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/aApplyR.d#L570 rt/aApplyR.d]|| |
+ | |} | ||
+ | |||
+ | {| class="wikitable" width="100%" | ||
+ | |+Hooks for switch suppprt | ||
|- | |- | ||
− | + | !mangled name!!calling convention!!description!!druntime definition!!comment | |
|- | |- | ||
− | | | + | | _d_switch_dstring || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/switch_.d#L310 rt/switch_.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L4237 __switch] |
|- | |- | ||
− | | | + | | _d_switch_error || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/dmain2.d#L238 rt/dmain2.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L4399 __switch_error] |
|- | |- | ||
− | | | + | | _d_switch_string || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/switch_.d#L30 rt/switch_.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L4237 __switch] |
+ | |- | ||
+ | | _d_switch_ustring || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/switch_.d#L177 rt/switch_.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L4237 __switch] | ||
+ | |} | ||
+ | |||
+ | {| class="wikitable" width="100%" | ||
+ | |+Hooks for assert suppprt | ||
|- | |- | ||
− | + | !mangled name!!calling convention!!description!!druntime definition!!comment | |
|- | |- | ||
− | | | + | | _d_assert || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/dmain2.d#L213 rt/dmain2.d]|| |
|- | |- | ||
− | | | + | | _d_assert_msg || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/dmain2.d#L208 rt/dmain2.d]|| |
|- | |- | ||
− | | | + | | _d_assertm || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/dmain2.d#L203 rt/dmain2.d]|| |
+ | |} | ||
+ | |||
+ | {| class="wikitable" width="100%" | ||
+ | |+List of runtime hooks for dynamic array support | ||
|- | |- | ||
− | + | !mangled name!!calling convention!!description!!druntime definition!!comment | |
|- | |- | ||
| _d_arrayappendT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1635 rt/lifetime.d]|| | | _d_arrayappendT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1635 rt/lifetime.d]|| | ||
Line 157: | Line 196: | ||
| _d_arrayassign || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/arrayassign.d#L30 rt/arrayassign.d]|| | | _d_arrayassign || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/arrayassign.d#L30 rt/arrayassign.d]|| | ||
|- | |- | ||
− | | _d_arraycast || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/arraycast.d#L26 rt/arraycast.d]|| | + | | _d_arraycast || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/arraycast.d#L26 rt/arraycast.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L4830 __ArrayCast] |
|- | |- | ||
− | | _d_arraycast_frombit || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/arraycast.d#L68 rt/arraycast.d]|| | + | | _d_arraycast_frombit || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/arraycast.d#L68 rt/arraycast.d]|| No longer exists |
|- | |- | ||
| _d_arraycatT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1955 rt/lifetime.d]|| | | _d_arraycatT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1955 rt/lifetime.d]|| | ||
Line 181: | Line 220: | ||
| _d_arraysetlengthiT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1443 rt/lifetime.d]|| | | _d_arraysetlengthiT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1443 rt/lifetime.d]|| | ||
|- | |- | ||
− | | | + | | _d_delarray || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1097 rt/lifetime.d]|| |
+ | |- | ||
+ | | _d_delarray_t || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1125 rt/lifetime.d]|| | ||
+ | |- | ||
+ | | _d_newarrayU || extern(C)|| Allocate an array with the garbage collector. Leave elements uninitialized || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L96 rt/lifetime.d]|| | ||
+ | |- | ||
+ | | _d_newarrayT || extern(C)|| Initializes to 0 (e.g `new int[]`) || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L96 rt/lifetime.d]|| | ||
+ | |- | ||
+ | | _d_newarrayiT|| extern(C)|| Initializes based on initializer retrieved from TypeInfo (e.g `new float[]`)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L96 rt/lifetime.d]|| | ||
+ | |- | ||
+ | | _d_newarraymT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L975 rt/lifetime.d]|| Returns a void[]. Internally, this void[] is reinterpret casted to T[]. The block returned should be sliced to take into account the length. | ||
+ | |- | ||
+ | | _d_newarraymTX || extern(C)|| Create a new multi-dimensional array which initializes to 0|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L96 rt/lifetime.d]|| new int[][](10, 20);// _d_newarraymTX(typeid(float), [10, 20]); | ||
+ | |- | ||
+ | | _d_newarraymiT || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1000 rt/lifetime.d]|| (Deprecated?) | ||
+ | |- | ||
+ | | _d_newarraymiTX|| extern(C)|| which initializes elements based on `TypeInfo` || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L96 rt/lifetime.d]|| new float[][][](10, 20, 30); // _d_newarraymiTX(typeid(float), [10, 20, 30]); | ||
+ | |} | ||
+ | |||
+ | {| class="wikitable" width="100%" | ||
+ | |+List of unsorted runtime hooks | ||
+ | |- | ||
+ | !mangled name!!calling convention!!description!!druntime definition!!comment | ||
+ | |- | ||
+ | | D9invariant12_d_invariantFC6ObjectZv || extern(D) || || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/invariant.d#L19 rt/invariant.d]|| | ||
+ | |- | ||
+ | | _D9invariant12_d_invariantFC6ObjectZv || || || || ??? | ||
|- | |- | ||
− | | | + | | _d_allocmemory || extern(C)|| Allocate memory using the garbage collector. DMD uses this to allocate closures || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L87 rt/lifetime.d]|| |
|- | |- | ||
− | | | + | | _d_allocmemoryT || extern(C)|| For allocating a single POD value (LDC Only)|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L87 rt/lifetime.d]|| |
|- | |- | ||
| _d_callfinalizer || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1188 rt/lifetime.d]|| | | _d_callfinalizer || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1188 rt/lifetime.d]|| | ||
Line 196: | Line 261: | ||
|- | |- | ||
| _d_criticalexit || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/critical_.d#L110 rt/critical_.d]|| | | _d_criticalexit || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/critical_.d#L110 rt/critical_.d]|| | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| _d_delclass || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L164 rt/lifetime.d]|| | | _d_delclass || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L164 rt/lifetime.d]|| | ||
Line 207: | Line 268: | ||
| _d_delmemory || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1161 rt/lifetime.d]|| | | _d_delmemory || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1161 rt/lifetime.d]|| | ||
|- | |- | ||
− | | _d_dynamic_cast || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/cast_.d#L69 rt/cast_.d]|| | + | | _d_dynamic_cast || extern(C)|| Attempts to cast Object o to class c Returns o if successful, null if not. || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/cast_.d#L69 rt/cast_.d]|| |
|- | |- | ||
| _d_hidden_func || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/dmain2.d#L244 rt/dmain2.d]|| | | _d_hidden_func || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/dmain2.d#L244 rt/dmain2.d]|| | ||
Line 225: | Line 286: | ||
| _d_monitorexit || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/deh.d#L945 rt/deh.d]|| | | _d_monitorexit || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/deh.d#L945 rt/deh.d]|| | ||
|- | |- | ||
− | | | + | | _d_newclass || extern(C)|| Create a new class instance. Allocates memory and sets fields to their initial value, but does not call a constructor || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L96 rt/lifetime.d]|| |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | _d_newitemU || extern(C)|| Leaves the item uninitialized || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1026 rt/lifetime.d]|| |
|- | |- | ||
− | | | + | | _d_newitemT || extern(C)|| Zero initializes the item || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1026 rt/lifetime.d]|| |
|- | |- | ||
− | | | + | | _d_newitemiT || extern(C)|| Uses a non-zero initializer from `TypeInfo`|| [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/lifetime.d#L1054 rt/lifetime.d]|| |
|- | |- | ||
− | | | + | | _d_obj_cmp || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/obj.d#L32 rt/obj.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L131 __cmp] |
|- | |- | ||
− | | | + | | _d_obj_eq || extern(C)|| || [https://github.com/D-Programming-Language/druntime/blob/e47a00bff935c3f079bb567a6ec97663ba384487/src/rt/obj.d#L22 rt/obj.d]|| Converted to template [https://github.com/dlang/druntime/blob/79a966df9b9f3b3992f7d8c1155c2f0293d64be5/src/object.d#L352 __equals] |
|} | |} |
Latest revision as of 16:10, 27 January 2023
This page lists runtime functions to which the compiler may automatically generate calls to in certain circumstances. This list was taken from dmd's backend/rtlsym.h.
This list is not complete and may even list functions which are no longer needed. Please help to verify this list.
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
_aaApply | extern(C) | rt/aaA.d | ||
_aaApply2 | extern(C) | rt/aaA.d | ||
_aaDelX | extern(C) | rt/aaA.d | ||
_aaEqual | extern(C) | rt/aaA.d | ||
_aaGetRvalueX | extern(C) | rt/aaA.d | ||
_aaGetX | extern(C) | rt/aaA.d | ||
_aaInX | extern(C) | rt/aaA.d | ||
_aaLen | extern(C) | rt/aaA.d | ||
_d_assocarrayliteralT | extern(C) | rt/aaA.d | ||
_d_assocarrayliteralTX | extern(C) | rt/aaA.d |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
_adEq | extern(C) | array equality test | rt/adi.d | Converted to template __equals |
_adEq2 | extern(C) | array equality test | rt/adi.d | Converted to template __equals |
_adEqBit | ??? | ??? | Can't find this in druntime. Deprecated? | |
_adReverse | extern(C) | implement .reverse property (generic) | rt/adi.d | Removed from the language in v2.075 |
_adReverseChar | extern(C) | implement .reverse property (char array) | rt/adi.d | Removed from the language in v2.075 |
_adReverseWchar | extern(C) | implement .reverse property (wchar array) | rt/adi.d | Removed from the language in v2.075 |
_adSort | extern(C) | Implement .sort property (generic) | rt/qsort.d | Removed from the language in v2.075 |
_adSortChar | extern(C) | Implement .sort property (char array) | rt/adi.d | Removed from the language in v2.075 |
_adSortWchar | extern(C) | Implement .sort property (wchar array) | rt/adi.d | Removed from the language in v2.075 |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
_d_throw | ??? | ??? | ||
_d_throw@4 | ??? | ??? | ||
_d_throwc | extern(C) | rt/deh2.d |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
_d_unittest | extern(C) | rt/dmain2.d | ||
_d_unittest_msg | extern(C) | rt/dmain2.d | ||
_d_unittestm | extern(C) | rt/dmain2.d |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
___tls_get_addr | extern(D) | Returns the thread local address of a variable. Used to emulate thread local storage on Mac OS X. | core/thread.d | Only used on Mac OS X. |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
RTInfo | (not a function) | Used to create runtime type information which can then be obtained by the GC at runtime. | object_.d | This is a template which gets instantiated for every type. |
_aApplycd1 | extern(C) | rt/aApply.d | ||
_aApplycd2 | extern(C) | rt/aApply.d | ||
_aApplycw1 | extern(C) | rt/aApply.d | ||
_aApplycw2 | extern(C) | rt/aApply.d | ||
_aApplydc1 | extern(C) | rt/aApply.d | ||
_aApplydc2 | extern(C) | rt/aApply.d | ||
_aApplydw1 | extern(C) | rt/aApply.d | ||
_aApplydw2 | extern(C) | rt/aApply.d | ||
_aApplywc1 | extern(C) | rt/aApply.d | ||
_aApplywc2 | extern(C) | rt/aApply.d | ||
_aApplywd1 | extern(C) | rt/aApply.d | ||
_aApplywd2 | extern(C) | rt/aApply.d |
_aApplyRcd1 | extern(C) | rt/aApplyR.d | ||
_aApplyRcd2 | extern(C) | rt/aApplyR.d | ||
_aApplyRcw1 | extern(C) | rt/aApplyR.d | ||
_aApplyRcw2 | extern(C) | rt/aApplyR.d | ||
_aApplyRdc1 | extern(C) | rt/aApplyR.d | ||
_aApplyRdc2 | extern(C) | rt/aApplyR.d | ||
_aApplyRdw1 | extern(C) | rt/aApplyR.d | ||
_aApplyRdw2 | extern(C) | rt/aApplyR.d | ||
_aApplyRwc1 | extern(C) | rt/aApplyR.d | ||
_aApplyRwc2 | extern(C) | rt/aApplyR.d | ||
_aApplyRwd1 | extern(C) | rt/aApplyR.d | ||
_aApplyRwd2 | extern(C) | rt/aApplyR.d |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
_d_switch_dstring | extern(C) | rt/switch_.d | Converted to template __switch | |
_d_switch_error | extern(C) | rt/dmain2.d | Converted to template __switch_error | |
_d_switch_string | extern(C) | rt/switch_.d | Converted to template __switch | |
_d_switch_ustring | extern(C) | rt/switch_.d | Converted to template __switch |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
_d_assert | extern(C) | rt/dmain2.d | ||
_d_assert_msg | extern(C) | rt/dmain2.d | ||
_d_assertm | extern(C) | rt/dmain2.d |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
_d_arrayappendT | extern(C) | rt/lifetime.d | ||
_d_arrayappendcT | extern(C) | rt/lifetime.d | ||
_d_arrayappendcTX | extern(C) | rt/lifetime.d | ||
_d_arrayappendcd | extern(C) | rt/lifetime.d | ||
_d_arrayappendwd | extern(C) | rt/lifetime.d | ||
_d_arrayassign | extern(C) | rt/arrayassign.d | ||
_d_arraycast | extern(C) | rt/arraycast.d | Converted to template __ArrayCast | |
_d_arraycast_frombit | extern(C) | rt/arraycast.d | No longer exists | |
_d_arraycatT | extern(C) | rt/lifetime.d | ||
_d_arraycatnT | extern(C) | rt/lifetime.d | ||
_d_arraycopy | extern(C) | rt/arraycat.d | ||
_d_arrayctor | extern(C) | rt/arrayassign.d | ||
_d_arrayliteralT | extern(C) | rt/lifetime.d | ||
_d_arrayliteralTX | extern(C) | rt/lifetime.d | ||
_d_arraysetassign | extern(C) | rt/arrayassign.d | ||
_d_arraysetctor | extern(C) | rt/arrayassign.d | ||
_d_arraysetlengthT | extern(C) | rt/lifetime.d | ||
_d_arraysetlengthiT | extern(C) | rt/lifetime.d | ||
_d_delarray | extern(C) | rt/lifetime.d | ||
_d_delarray_t | extern(C) | rt/lifetime.d | ||
_d_newarrayU | extern(C) | Allocate an array with the garbage collector. Leave elements uninitialized | rt/lifetime.d | |
_d_newarrayT | extern(C) | Initializes to 0 (e.g `new int[]`) | rt/lifetime.d | |
_d_newarrayiT | extern(C) | Initializes based on initializer retrieved from TypeInfo (e.g `new float[]`) | rt/lifetime.d | |
_d_newarraymT | extern(C) | rt/lifetime.d | Returns a void[]. Internally, this void[] is reinterpret casted to T[]. The block returned should be sliced to take into account the length. | |
_d_newarraymTX | extern(C) | Create a new multi-dimensional array which initializes to 0 | rt/lifetime.d | new int[][](10, 20);// _d_newarraymTX(typeid(float), [10, 20]); |
_d_newarraymiT | extern(C) | rt/lifetime.d | (Deprecated?) | |
_d_newarraymiTX | extern(C) | which initializes elements based on `TypeInfo` | rt/lifetime.d | new float[][][](10, 20, 30); // _d_newarraymiTX(typeid(float), [10, 20, 30]); |
mangled name | calling convention | description | druntime definition | comment |
---|---|---|---|---|
D9invariant12_d_invariantFC6ObjectZv | extern(D) | rt/invariant.d | ||
_D9invariant12_d_invariantFC6ObjectZv | ??? | |||
_d_allocmemory | extern(C) | Allocate memory using the garbage collector. DMD uses this to allocate closures | rt/lifetime.d | |
_d_allocmemoryT | extern(C) | For allocating a single POD value (LDC Only) | rt/lifetime.d | |
_d_callfinalizer | extern(C) | rt/lifetime.d | ||
_d_callinterfacefinalizer | extern(C) | rt/lifetime.d | ||
_d_cover_register | extern(C) | rt/cover.d | ||
_d_criticalenter | extern(C) | rt/critical_.d | ||
_d_criticalexit | extern(C) | rt/critical_.d | ||
_d_delclass | extern(C) | rt/lifetime.d | ||
_d_delinterface | extern(C) | rt/lifetime.d | ||
_d_delmemory | extern(C) | rt/lifetime.d | ||
_d_dynamic_cast | extern(C) | Attempts to cast Object o to class c Returns o if successful, null if not. | rt/cast_.d | |
_d_hidden_func | extern(C) | rt/dmain2.d | ||
_d_interface_cast | extern(C) | rt/cast_.d | ||
_d_interface_vtbl | extern(C) | rt/cast_.d | ||
_d_monitor_epilog | extern(C) | rt/deh.d | ||
_d_monitor_handler | extern(C) | rt/deh.d | ||
_d_monitor_prolog | extern(C) | rt/deh.d | ||
_d_monitorenter | extern(C) | rt/deh.d | ||
_d_monitorexit | extern(C) | rt/deh.d | ||
_d_newclass | extern(C) | Create a new class instance. Allocates memory and sets fields to their initial value, but does not call a constructor | rt/lifetime.d | |
_d_newitemU | extern(C) | Leaves the item uninitialized | rt/lifetime.d | |
_d_newitemT | extern(C) | Zero initializes the item | rt/lifetime.d | |
_d_newitemiT | extern(C) | Uses a non-zero initializer from `TypeInfo` | rt/lifetime.d | |
_d_obj_cmp | extern(C) | rt/obj.d | Converted to template __cmp | |
_d_obj_eq | extern(C) | rt/obj.d | Converted to template __equals |