Generates barrier in constructor.

Bug: 8209406

We need to generate a memory barrier at the end of constructor where non static
final fields are initialized.
This introduces the new greenland intrinsic "ConstructorBarrier" to be handled
by the Quick and the Portable compilers.

Change-Id: Id2eb0af61f689581a192d20742a248726adf7f9b
diff --git a/src/compiler_llvm/gbc_expander.cc b/src/compiler_llvm/gbc_expander.cc
index 086d29d..4c9b31c 100644
--- a/src/compiler_llvm/gbc_expander.cc
+++ b/src/compiler_llvm/gbc_expander.cc
@@ -3588,6 +3588,12 @@
       return call_inst.getArgOperand(0);
     }
 
+    //==- Constructor barrier-----------------------------------------------==//
+    case IntrinsicHelper::ConstructorBarrier: {
+      irb_.CreateMemoryBarrier(art::kStoreStore);
+      return NULL;
+    }
+
     //==- Unknown Cases ----------------------------------------------------==//
     case IntrinsicHelper::MaxIntrinsicId:
     case IntrinsicHelper::UnknownId: