Mercurial > hg > truffle
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: |