| 2229 | |
| 2230 | |
| 2231 | void MarkObjectArray(hx::Object **inPtr, int inLength, hx::MarkContext *__inCtx) |
| 2232 | { |
| 2233 | hx::Object *tmp; |
| 2234 | |
| 2235 | int extra = inLength & 0x0f; |
| 2236 | for(int i=0;i<extra;i++) |
| 2237 | if (inPtr[i]) MarkObjectAlloc(inPtr[i],__inCtx); |
| 2238 | if (inLength==extra) |
| 2239 | return; |
| 2240 | |
| 2241 | inLength -= extra; |
| 2242 | hx::Object **ptrI = inPtr + extra; |
| 2243 | hx::Object **end = ptrI + inLength; |
| 2244 | |
| 2245 | |
| 2246 | #define MARK_PTR_I \ |
| 2247 | tmp = *ptrI++; \ |
| 2248 | if (tmp) MarkObjectAlloc(tmp,__inCtx); |
| 2249 | |
| 2250 | |
| 2251 | |
| 2252 | #ifdef HX_MULTI_THREAD_MARKING |
| 2253 | if (sAllThreads && inLength>4096) |
| 2254 | { |
| 2255 | hx::Object **dishOffEnd = end - 4096; |
| 2256 | while(ptrI<end) |
| 2257 | { |
| 2258 | // Are the other threads slacking off? |
| 2259 | if ((sRunningThreads != sAllThreads) && ptrI<dishOffEnd) |
| 2260 | { |
| 2261 | ptrI += sGlobalChunks.takeArrayJob(ptrI, end-ptrI); |
| 2262 | } |
| 2263 | else |
| 2264 | { |
| 2265 | MARK_PTR_I; |
| 2266 | MARK_PTR_I; |
| 2267 | MARK_PTR_I; |
| 2268 | MARK_PTR_I; |
| 2269 | |
| 2270 | MARK_PTR_I; |
| 2271 | MARK_PTR_I; |
| 2272 | MARK_PTR_I; |
| 2273 | MARK_PTR_I; |
| 2274 | |
| 2275 | MARK_PTR_I; |
| 2276 | MARK_PTR_I; |
| 2277 | MARK_PTR_I; |
| 2278 | MARK_PTR_I; |
| 2279 | |
| 2280 | MARK_PTR_I; |
| 2281 | MARK_PTR_I; |
| 2282 | MARK_PTR_I; |
| 2283 | MARK_PTR_I; |
| 2284 | } |
| 2285 | } |
| 2286 | } |
| 2287 | else |
| 2288 | #endif |
nothing calls this directly
no test coverage detected