When known to be an actual object start...
| 1145 | |
| 1146 | // When known to be an actual object start... |
| 1147 | AllocType GetAllocTypeChecked(int inOffset, bool allowPrevious) |
| 1148 | { |
| 1149 | char time = mPtr->mRow[0][inOffset+HX_ENDIAN_MARK_ID_BYTE_HEADER]; |
| 1150 | if ( ((time+1) & MARK_BYTE_MASK) != (gByteMarkID & MARK_BYTE_MASK) ) |
| 1151 | { |
| 1152 | // Object is either out-of-date, or already marked.... |
| 1153 | return time==gByteMarkID ? allocMarked : allocNone; |
| 1154 | } |
| 1155 | |
| 1156 | if (!allowPrevious) |
| 1157 | return allocNone; |
| 1158 | |
| 1159 | if (*(unsigned int *)(mPtr->mRow[0] + inOffset) & IMMIX_ALLOC_IS_CONTAINER) |
| 1160 | { |
| 1161 | // See if object::new has been called, but not constructed yet ... |
| 1162 | void **vtable = (void **)(mPtr->mRow[0] + inOffset + sizeof(int)); |
| 1163 | if (vtable[0]==0) |
| 1164 | { |
| 1165 | // GCLOG("Partially constructed object."); |
| 1166 | return allocString; |
| 1167 | } |
| 1168 | return allocObject; |
| 1169 | } |
| 1170 | |
| 1171 | return allocString; |
| 1172 | } |
| 1173 | |
| 1174 | #ifdef HXCPP_GC_NURSERY |
| 1175 | AllocType GetEnclosingNurseryType(int inOffset, void **outPtr) |
nothing calls this directly
no outgoing calls
no test coverage detected