| 563 | } |
| 564 | |
| 565 | txID fxRemoveProfilerCycle(txMachine* the, txProfiler* profiler, txID recordID) |
| 566 | { |
| 567 | txProfilerRecord* record = profiler->records[recordID]; |
| 568 | if (record->flags & 1) |
| 569 | return XS_NO_ID; |
| 570 | if (record->flags & 2) |
| 571 | return recordID; |
| 572 | record->flags |= 3; |
| 573 | txInteger calleeIndex = 0; |
| 574 | while (calleeIndex < record->calleeCount) { |
| 575 | txID calleeID = record->callees[calleeIndex]; |
| 576 | if (calleeID) |
| 577 | record->callees[calleeIndex] = fxRemoveProfilerCycle(the, profiler, calleeID); |
| 578 | calleeIndex++; |
| 579 | } |
| 580 | record->flags &= ~1; |
| 581 | return recordID; |
| 582 | } |
| 583 | |
| 584 | void fxResumeProfiler(txMachine* the) |
| 585 | { |