< prev index next >

src/share/vm/memory/barrierSet.hpp

Print this page

        

@@ -66,15 +66,11 @@
   template<typename T> struct GetName;
 
   // Downcast argument to a derived barrier set type.
   // The cast is checked in a debug build.
   // T must have a specialization for BarrierSet::GetName<T>.
-  template<typename T>
-  friend T* barrier_set_cast(BarrierSet* bs) {
-    assert(bs->is_a(BarrierSet::GetName<T>::value), "wrong type of barrier set");
-    return static_cast<T*>(bs);
-  }
+  template<typename T> friend T* barrier_set_cast(BarrierSet* bs);
 
 public:
   // Note: This is not presently the Name corresponding to the
   // concrete class of this object.
   BarrierSet::Name kind() const { return _fake_rtti.concrete_tag(); }

@@ -214,6 +210,12 @@
 
   // Print a description of the memory for the barrier set
   virtual void print_on(outputStream* st) const = 0;
 };
 
+template<typename T>
+inline T* barrier_set_cast(BarrierSet* bs) {
+  assert(bs->is_a(BarrierSet::GetName<T>::value), "wrong type of barrier set");
+  return static_cast<T*>(bs);
+}
+
 #endif // SHARE_VM_MEMORY_BARRIERSET_HPP
< prev index next >