1.1 --- a/src/share/vm/c1/c1_Instruction.hpp Wed Feb 22 14:00:34 2012 -0500 1.2 +++ b/src/share/vm/c1/c1_Instruction.hpp Tue Feb 21 13:14:55 2012 -0500 1.3 @@ -107,6 +107,7 @@ 1.4 class ProfileCall; 1.5 class ProfileInvoke; 1.6 class RuntimeCall; 1.7 +class MemBar; 1.8 1.9 // A Value is a reference to the instruction creating the value 1.10 typedef Instruction* Value; 1.11 @@ -204,6 +205,7 @@ 1.12 virtual void do_ProfileCall (ProfileCall* x) = 0; 1.13 virtual void do_ProfileInvoke (ProfileInvoke* x) = 0; 1.14 virtual void do_RuntimeCall (RuntimeCall* x) = 0; 1.15 + virtual void do_MemBar (MemBar* x) = 0; 1.16 }; 1.17 1.18 1.19 @@ -2351,6 +2353,23 @@ 1.20 virtual void state_values_do(ValueVisitor*); 1.21 }; 1.22 1.23 +LEAF(MemBar, Instruction) 1.24 + private: 1.25 + LIR_Code _code; 1.26 + 1.27 + public: 1.28 + MemBar(LIR_Code code) 1.29 + : Instruction(voidType) 1.30 + , _code(code) 1.31 + { 1.32 + pin(); 1.33 + } 1.34 + 1.35 + LIR_Code code() { return _code; } 1.36 + 1.37 + virtual void input_values_do(ValueVisitor*) {} 1.38 +}; 1.39 + 1.40 class BlockPair: public CompilationResourceObj { 1.41 private: 1.42 BlockBegin* _from;