Commit 302baf9367292880b3dbcfb243abff36dbb4c4e8
1 parent
a018d617
Get rid of temporary variable cache.
The temporary variable cache in no longer need since tcg_temp_free was introduced. Signed-off-by: Filip Navara <filip.navara@gmail.com>
Showing
1 changed file
with
3 additions
and
28 deletions
target-arm/translate.c
... | ... | @@ -110,44 +110,20 @@ void arm_translate_init(void) |
110 | 110 | #include "helpers.h" |
111 | 111 | } |
112 | 112 | |
113 | -/* The code generator doesn't like lots of temporaries, so maintain our own | |
114 | - cache for reuse within a function. */ | |
115 | -#define MAX_TEMPS 8 | |
116 | 113 | static int num_temps; |
117 | -static TCGv temps[MAX_TEMPS]; | |
118 | 114 | |
119 | 115 | /* Allocate a temporary variable. */ |
120 | 116 | static TCGv_i32 new_tmp(void) |
121 | 117 | { |
122 | - TCGv tmp; | |
123 | - if (num_temps == MAX_TEMPS) | |
124 | - abort(); | |
125 | - | |
126 | - if (GET_TCGV_I32(temps[num_temps])) | |
127 | - return temps[num_temps++]; | |
128 | - | |
129 | - tmp = tcg_temp_new_i32(); | |
130 | - temps[num_temps++] = tmp; | |
131 | - return tmp; | |
118 | + num_temps++; | |
119 | + return tcg_temp_new_i32(); | |
132 | 120 | } |
133 | 121 | |
134 | 122 | /* Release a temporary variable. */ |
135 | 123 | static void dead_tmp(TCGv tmp) |
136 | 124 | { |
137 | - int i; | |
125 | + tcg_temp_free(tmp); | |
138 | 126 | num_temps--; |
139 | - i = num_temps; | |
140 | - if (TCGV_EQUAL(temps[i], tmp)) | |
141 | - return; | |
142 | - | |
143 | - /* Shuffle this temp to the last slot. */ | |
144 | - while (!TCGV_EQUAL(temps[i], tmp)) | |
145 | - i--; | |
146 | - while (i < num_temps) { | |
147 | - temps[i] = temps[i + 1]; | |
148 | - i++; | |
149 | - } | |
150 | - temps[i] = tmp; | |
151 | 127 | } |
152 | 128 | |
153 | 129 | static inline TCGv load_cpu_offset(int offset) |
... | ... | @@ -8760,7 +8736,6 @@ static inline void gen_intermediate_code_internal(CPUState *env, |
8760 | 8736 | |
8761 | 8737 | /* generate intermediate code */ |
8762 | 8738 | num_temps = 0; |
8763 | - memset(temps, 0, sizeof(temps)); | |
8764 | 8739 | |
8765 | 8740 | pc_start = tb->pc; |
8766 | 8741 | ... | ... |