| 377 | // |
| 378 | //***************************************************************************** |
| 379 | void CPU_UpdateTrace( u32 address, OpCode op_code, bool branch_delay_slot, bool branch_taken ) |
| 380 | { |
| 381 | #ifdef DAEDALUS_PROFILE |
| 382 | DAEDALUS_PROFILE( "CPU_UpdateTrace" ); |
| 383 | #endif |
| 384 | #ifdef DAEDALUS_ENABLE_ASSERTS |
| 385 | DAEDALUS_ASSERT_Q( (gCPUState.Delay == EXEC_DELAY) == branch_delay_slot ); |
| 386 | #endif |
| 387 | |
| 388 | |
| 389 | #ifdef DAEDALUS_DEBUG_DYNAREC |
| 390 | CFragment * p_address_fragment( gFragmentCache.LookupFragment( address ) ); |
| 391 | #else |
| 392 | CFragment * p_address_fragment( gFragmentCache.LookupFragmentQ( address ) ); |
| 393 | #endif |
| 394 | if( gTraceRecorder.UpdateTrace( address, branch_delay_slot, branch_taken, op_code, p_address_fragment ) == CTraceRecorder::UTS_CREATE_FRAGMENT ) |
| 395 | { |
| 396 | CPU_CreateAndAddFragment(); |
| 397 | #ifdef DAEDALUS_ENABLE_ASSERTS |
| 398 | DAEDALUS_ASSERT( !gTraceRecorder.IsTraceActive(), "Why is a trace still active?" ); |
| 399 | #endif |
| 400 | CPU_SelectCore(); |
| 401 | } |
| 402 | #ifdef DAEDALUS_ENABLE_ASSERTS |
| 403 | else |
| 404 | { |
| 405 | DAEDALUS_ASSERT( gTraceRecorder.IsTraceActive(), "The trace should still be enabled" ); |
| 406 | } |
| 407 | #endif |
| 408 | } |
| 409 | |
| 410 | //***************************************************************************** |
| 411 | // |
no test coverage detected