comparison src/share/vm/c1/c1_Instruction.hpp @ 4966:701a83c86f28

7120481: storeStore barrier in constructor with final field Summary: Issue storestore barrier before constructor return if the constructor write final field. Reviewed-by: dholmes, jrose, roland, coleenp Contributed-by: Jiangli Zhou <jiangli.zhou@oracle.com>
author jiangli
date Tue, 21 Feb 2012 13:14:55 -0500
parents 973293defacd
children c8289830e172
comparison
equal deleted inserted replaced
4965:d79f8393df2b 4966:701a83c86f28
105 class UnsafePrefetchRead; 105 class UnsafePrefetchRead;
106 class UnsafePrefetchWrite; 106 class UnsafePrefetchWrite;
107 class ProfileCall; 107 class ProfileCall;
108 class ProfileInvoke; 108 class ProfileInvoke;
109 class RuntimeCall; 109 class RuntimeCall;
110 class MemBar;
110 111
111 // A Value is a reference to the instruction creating the value 112 // A Value is a reference to the instruction creating the value
112 typedef Instruction* Value; 113 typedef Instruction* Value;
113 define_array(ValueArray, Value) 114 define_array(ValueArray, Value)
114 define_stack(Values, ValueArray) 115 define_stack(Values, ValueArray)
202 virtual void do_UnsafePrefetchRead (UnsafePrefetchRead* x) = 0; 203 virtual void do_UnsafePrefetchRead (UnsafePrefetchRead* x) = 0;
203 virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) = 0; 204 virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) = 0;
204 virtual void do_ProfileCall (ProfileCall* x) = 0; 205 virtual void do_ProfileCall (ProfileCall* x) = 0;
205 virtual void do_ProfileInvoke (ProfileInvoke* x) = 0; 206 virtual void do_ProfileInvoke (ProfileInvoke* x) = 0;
206 virtual void do_RuntimeCall (RuntimeCall* x) = 0; 207 virtual void do_RuntimeCall (RuntimeCall* x) = 0;
208 virtual void do_MemBar (MemBar* x) = 0;
207 }; 209 };
208 210
209 211
210 // Hashing support 212 // Hashing support
211 // 213 //
2349 ValueStack* state() { return _state; } 2351 ValueStack* state() { return _state; }
2350 virtual void input_values_do(ValueVisitor*) {} 2352 virtual void input_values_do(ValueVisitor*) {}
2351 virtual void state_values_do(ValueVisitor*); 2353 virtual void state_values_do(ValueVisitor*);
2352 }; 2354 };
2353 2355
2356 LEAF(MemBar, Instruction)
2357 private:
2358 LIR_Code _code;
2359
2360 public:
2361 MemBar(LIR_Code code)
2362 : Instruction(voidType)
2363 , _code(code)
2364 {
2365 pin();
2366 }
2367
2368 LIR_Code code() { return _code; }
2369
2370 virtual void input_values_do(ValueVisitor*) {}
2371 };
2372
2354 class BlockPair: public CompilationResourceObj { 2373 class BlockPair: public CompilationResourceObj {
2355 private: 2374 private:
2356 BlockBegin* _from; 2375 BlockBegin* _from;
2357 BlockBegin* _to; 2376 BlockBegin* _to;
2358 public: 2377 public: