src/memory/memory.c
static void mark_l1_miss_deps(Op* op) {
  Wake_Up_Entry* temp;

  ASSERT(op->proc_id,
         (op->engine_info.l1_miss && !op->engine_info.l1_miss_satisfied) ||
           op->engine_info.dep_on_l1_miss);

  for(temp = op->wake_up_head; temp; temp = temp->next) {
    Op*     dep_op         = temp->op;
    Counter dep_unique_num = temp->unique_num;


    if(dep_op->unique_num == dep_unique_num && dep_op->op_pool_valid) {
      ASSERT(op->proc_id, op->proc_id == dep_op->proc_id);
      /*printf("MARK c: %s dep_op: %s %s %s %s op: %s %s %s %s\n",
         unsstr64(cycle_count), unsstr64(dep_op->unique_num),
         unsstr64(dep_op->exec_cycle), disasm_op(dep_op, TRUE),
         unsstr64(dep_op->oracle_info.va), unsstr64(op->unique_num),
         unsstr64(op->exec_cycle), disasm_op(op, TRUE),
         unsstr64(op->oracle_info.va)); */
      ASSERT(dep_op->proc_id, !dep_op->engine_info.l1_miss ||
                                dep_op->table_info->mem_type == MEM_ST);
      if(!dep_op->engine_info.dep_on_l1_miss) {
        dep_op->engine_info.dep_on_l1_miss = TRUE;
        mark_l1_miss_deps(dep_op);
      }
    }
  }
}
/**************************************************************************************/
/* mark_l1_miss_deps: */
/* recursively go through the wake up lists of the op and mark ops as
 * l1_miss_dep */
recursively go through the wake up lists of the op and mark ops as
l1_miss_dep
recursively go through the wake up lists of the op and mark ops as l1_miss_dep
static void mark_l1_miss_deps(Op* op) {
  Wake_Up_Entry* temp;
  ASSERT(op->proc_id,
         (op->engine_info.l1_miss && !op->engine_info.l1_miss_satisfied) ||
           op->engine_info.dep_on_l1_miss);
  for(temp = op->wake_up_head; temp; temp = temp->next) {
    Op*     dep_op         = temp->op;
    Counter dep_unique_num = temp->unique_num;
    if(dep_op->unique_num == dep_unique_num && dep_op->op_pool_valid) {
      ASSERT(op->proc_id, op->proc_id == dep_op->proc_id);
      ASSERT(dep_op->proc_id, !dep_op->engine_info.l1_miss ||
                                dep_op->table_info->mem_type == MEM_ST);
      if(!dep_op->engine_info.dep_on_l1_miss) {
        dep_op->engine_info.dep_on_l1_miss = TRUE;
        mark_l1_miss_deps(dep_op);
      }
    }
  }
}
static void mark_l1_miss_deps ( Op * op ) { Wake_Up_Entry * temp ; ASSERT ( op -> proc_id , ( op -> engine_info . l1_miss && ! op -> engine_info . l1_miss_satisfied ) || op -> engine_info . dep_on_l1_miss ) ; for ( temp = op -> wake_up_head ; temp ; temp = temp -> next ) { Op * dep_op = temp -> op ; Counter dep_unique_num = temp -> unique_num ; if ( dep_op -> unique_num == dep_unique_num && dep_op -> op_pool_valid ) { ASSERT ( op -> proc_id , op -> proc_id == dep_op -> proc_id ) ; ASSERT ( dep_op -> proc_id , ! dep_op -> engine_info . l1_miss || dep_op -> table_info -> mem_type == MEM_ST ) ; if ( ! dep_op -> engine_info . dep_on_l1_miss ) { dep_op -> engine_info . dep_on_l1_miss = TRUE ; mark_l1_miss_deps ( dep_op ) ; } } } }
mark_l1_miss_deps:
recursively go through the wake up lists of the op and mark ops as
 l1_miss_dep
mark_l1_miss_deps : recursively go through the wake up lists of the op and mark ops as l1_miss_dep
/*printf("MARK c: %s dep_op: %s %s %s %s op: %s %s %s %s\n",
         unsstr64(cycle_count), unsstr64(dep_op->unique_num),
         unsstr64(dep_op->exec_cycle), disasm_op(dep_op, TRUE),
         unsstr64(dep_op->oracle_info.va), unsstr64(op->unique_num),
         unsstr64(op->exec_cycle), disasm_op(op, TRUE),
         unsstr64(op->oracle_info.va)); */