comparison src/share/vm/interpreter/rewriter.hpp @ 13390:d61a1a166f44

8028347: Rewriter::scan_method asserts with array oob in RT_Baseline Summary: Fix reversing rewriting for invokespecial Reviewed-by: jrose, hseigel
author coleenp
date Fri, 15 Nov 2013 17:20:22 -0500
parents 41cb10cbfb3c
children 26c3b944dc35
comparison
equal deleted inserted replaced
13389:438fe38c63c8 13390:d61a1a166f44
187 // All the work goes in here: 187 // All the work goes in here:
188 Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, Array<Method*>* methods, TRAPS); 188 Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, Array<Method*>* methods, TRAPS);
189 189
190 void compute_index_maps(); 190 void compute_index_maps();
191 void make_constant_pool_cache(TRAPS); 191 void make_constant_pool_cache(TRAPS);
192 void scan_method(Method* m, bool reverse, TRAPS); 192 void scan_method(Method* m, bool reverse, bool* invokespecial_error);
193 void rewrite_Object_init(methodHandle m, TRAPS); 193 void rewrite_Object_init(methodHandle m, TRAPS);
194 void rewrite_member_reference(address bcp, int offset, bool reverse); 194 void rewrite_member_reference(address bcp, int offset, bool reverse);
195 void maybe_rewrite_invokehandle(address opc, int cp_index, int cache_index, bool reverse); 195 void maybe_rewrite_invokehandle(address opc, int cp_index, int cache_index, bool reverse);
196 void rewrite_invokedynamic(address bcp, int offset, bool reverse); 196 void rewrite_invokedynamic(address bcp, int offset, bool reverse);
197 void maybe_rewrite_ldc(address bcp, int offset, bool is_wide, bool reverse); 197 void maybe_rewrite_ldc(address bcp, int offset, bool is_wide, bool reverse);
198 void rewrite_invokespecial(address bcp, int offset, bool reverse, TRAPS); 198 void rewrite_invokespecial(address bcp, int offset, bool reverse, bool* invokespecial_error);
199 199
200 void patch_invokedynamic_bytecodes(); 200 void patch_invokedynamic_bytecodes();
201 201
202 // Revert bytecodes in case of an exception. 202 // Revert bytecodes in case of an exception.
203 void restore_bytecodes(TRAPS); 203 void restore_bytecodes();
204 204
205 static methodHandle rewrite_jsrs(methodHandle m, TRAPS); 205 static methodHandle rewrite_jsrs(methodHandle m, TRAPS);
206 public: 206 public:
207 // Driver routine: 207 // Driver routine:
208 static void rewrite(instanceKlassHandle klass, TRAPS); 208 static void rewrite(instanceKlassHandle klass, TRAPS);