@@ -301,7 +301,6 @@ static block_t *block_alloc(riscv_t *rv)
301
301
block_t * block = mpool_alloc (rv -> block_mp );
302
302
assert (block );
303
303
block -> n_insn = 0 ;
304
- block -> predict = NULL ;
305
304
#if RV32_HAS (JIT )
306
305
block -> translatable = true;
307
306
block -> hot = false;
@@ -990,13 +989,6 @@ static block_t *block_find_or_translate(riscv_t *rv)
990
989
mpool_free (rv -> block_mp , delete_target );
991
990
}
992
991
#endif
993
- /* update the block prediction.
994
- * When translating a new block, the block predictor may benefit,
995
- * but updating it after finding a particular block may penalize
996
- * significantly.
997
- */
998
- if (prev )
999
- prev -> predict = next ;
1000
992
}
1001
993
1002
994
return next ;
@@ -1016,15 +1008,10 @@ void rv_step(riscv_t *rv, int32_t cycles)
1016
1008
/* loop until hitting the cycle target */
1017
1009
while (rv -> csr_cycle < cycles_target && !rv -> halt ) {
1018
1010
block_t * block ;
1019
- /* try to predict the next block */
1020
- if (prev && prev -> predict && prev -> predict -> pc_start == rv -> PC ) {
1021
- block = prev -> predict ;
1022
- } else {
1023
- /* lookup the next block in block map or translate a new block,
1024
- * and move onto the next block.
1025
- */
1026
- block = block_find_or_translate (rv );
1027
- }
1011
+ /* lookup the next block in block map or translate a new block,
1012
+ * and move onto the next block.
1013
+ */
1014
+ block = block_find_or_translate (rv );
1028
1015
1029
1016
/* by now, a block should be available */
1030
1017
assert (block );
0 commit comments