Mercurial > hg > truffle
comparison src/share/vm/c1/c1_IR.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 | f95d63e2154a |
children | 33df1aeaebbf b9a9ed0f8eeb |
comparison
equal
deleted
inserted
replaced
4965:d79f8393df2b | 4966:701a83c86f28 |
---|---|
147 | 147 |
148 // graph | 148 // graph |
149 XHandlers* _xhandlers; // the exception handlers | 149 XHandlers* _xhandlers; // the exception handlers |
150 int _number_of_locks; // the number of monitor lock slots needed | 150 int _number_of_locks; // the number of monitor lock slots needed |
151 bool _monitor_pairing_ok; // the monitor pairing info | 151 bool _monitor_pairing_ok; // the monitor pairing info |
152 bool _wrote_final; // has written final field | |
152 BlockBegin* _start; // the start block, successsors are method entries | 153 BlockBegin* _start; // the start block, successsors are method entries |
153 | 154 |
154 BitMap _requires_phi_function; // bit is set if phi functions at loop headers are necessary for a local variable | 155 BitMap _requires_phi_function; // bit is set if phi functions at loop headers are necessary for a local variable |
155 | 156 |
156 // helper functions | 157 // helper functions |
179 XHandlers* xhandlers() const { return _xhandlers; } | 180 XHandlers* xhandlers() const { return _xhandlers; } |
180 int number_of_locks() const { return _number_of_locks; } | 181 int number_of_locks() const { return _number_of_locks; } |
181 void set_min_number_of_locks(int n) { if (n > _number_of_locks) _number_of_locks = n; } | 182 void set_min_number_of_locks(int n) { if (n > _number_of_locks) _number_of_locks = n; } |
182 bool monitor_pairing_ok() const { return _monitor_pairing_ok; } | 183 bool monitor_pairing_ok() const { return _monitor_pairing_ok; } |
183 BlockBegin* start() const { return _start; } | 184 BlockBegin* start() const { return _start; } |
185 void set_wrote_final() { _wrote_final = true; } | |
186 bool wrote_final () const { return _wrote_final; } | |
184 }; | 187 }; |
185 | 188 |
186 | 189 |
187 // | 190 // |
188 // IRScopeDebugInfo records the debug information for a particular IRScope | 191 // IRScopeDebugInfo records the debug information for a particular IRScope |