Home | History | Annotate | Download | only in callgrind

Lines Matching defs:jcc

34 /*--- Jump Cost Center (JCC) operations, including Calls   ---*/
49 jccs->table = (jCC**) CLG_MALLOC("cl.jumps.ijh.1",
50 jccs->size * sizeof(jCC*));
84 /* double size of jcc table */
88 jCC** new_table;
90 jCC *curr_jcc, *next_jcc;
93 new_table = (jCC**) CLG_MALLOC("cl.jumps.rjt.1",
94 new_size * sizeof(jCC*));
126 CLG_DEBUG(0, "Resize JCC Hash: %d => %d (entries %d, conflicts %d/%d)\n",
137 /* new jCC structure: a call was done to a BB of a BBCC
140 static jCC* new_jcc(BBCC* from, UInt jmp, BBCC* to)
142 jCC* jcc;
145 /* check fill degree of jcc hash table and resize if needed (>80%) */
150 jcc = (jCC*) CLG_MALLOC("cl.jumps.nj.1", sizeof(jCC));
152 jcc->from = from;
153 jcc->jmp = jmp;
154 jcc->to = to;
155 jcc->jmpkind = Ijk_Call;
156 jcc->call_counter = 0;
157 jcc->cost = 0;
159 /* insert into JCC chain of calling BBCC.
165 jcc->next_from = from->jmp[jmp].jcc_list;
166 from->jmp[jmp].jcc_list = jcc;
169 jcc->next_from = current_jccs.spontaneous;
170 current_jccs.spontaneous = jcc;
173 /* insert into JCC hash table */
175 jcc->next_hash = current_jccs.table[new_idx];
176 current_jccs.table[new_idx] = jcc;
182 CLG_(stat).distinct_jccs, jcc);
185 return jcc;
189 /* get the jCC for a call arc (BBCC->BBCC) */
190 jCC* CLG_(get_jcc)(BBCC* from, UInt jmp, BBCC* to)
192 jCC* jcc;
198 /* first check last recently used JCC */
199 jcc = to->lru_to_jcc;
200 if (jcc && (jcc->from == from) && (jcc->jmp == jmp)) {
201 CLG_ASSERT(to == jcc->to);
202 CLG_DEBUG(5,"- get_jcc: [LRU to] jcc %p\n", jcc);
203 return jcc;
206 jcc = from->lru_from_jcc;
207 if (jcc && (jcc->to == to) && (jcc->jmp == jmp)) {
208 CLG_ASSERT(from == jcc->from);
209 CLG_DEBUG(5, "- get_jcc: [LRU from] jcc %p\n", jcc);
210 return jcc;
216 jcc = current_jccs.table[idx];
218 while(jcc) {
219 if ((jcc->from == from) &&
220 (jcc->jmp == jmp) &&
221 (jcc->to == to)) break;
222 jcc = jcc->next_hash;
225 if (!jcc)
226 jcc = new_jcc(from, jmp, to);
229 from->lru_from_jcc = jcc;
230 to->lru_to_jcc = jcc;
235 return jcc;