Commit 302baf9367292880b3dbcfb243abff36dbb4c4e8

Authored by Filip Navara
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,44 +110,20 @@ void arm_translate_init(void)
110 #include "helpers.h" 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 static int num_temps; 113 static int num_temps;
117 -static TCGv temps[MAX_TEMPS];  
118 114
119 /* Allocate a temporary variable. */ 115 /* Allocate a temporary variable. */
120 static TCGv_i32 new_tmp(void) 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 /* Release a temporary variable. */ 122 /* Release a temporary variable. */
135 static void dead_tmp(TCGv tmp) 123 static void dead_tmp(TCGv tmp)
136 { 124 {
137 - int i; 125 + tcg_temp_free(tmp);
138 num_temps--; 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 static inline TCGv load_cpu_offset(int offset) 129 static inline TCGv load_cpu_offset(int offset)
@@ -8760,7 +8736,6 @@ static inline void gen_intermediate_code_internal(CPUState *env, @@ -8760,7 +8736,6 @@ static inline void gen_intermediate_code_internal(CPUState *env,
8760 8736
8761 /* generate intermediate code */ 8737 /* generate intermediate code */
8762 num_temps = 0; 8738 num_temps = 0;
8763 - memset(temps, 0, sizeof(temps));  
8764 8739
8765 pc_start = tb->pc; 8740 pc_start = tb->pc;
8766 8741