Don't inline rr::Variable methods

This is not a template class, so its methods don't have to be inlined.
Nor are they trivial enough to save us anything in performance or
binary size if they were inlined. Instead, this could reduce binary
size a bit because there are a large number of rr::Variable uses.

Bug: chromium:1086501
Change-Id: I1a6d078628ed7e634e0d90d6d8455e7d2938d134
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/45388
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/Reactor/Reactor.cpp b/src/Reactor/Reactor.cpp
index cedbe96..db8654e 100644
--- a/src/Reactor/Reactor.cpp
+++ b/src/Reactor/Reactor.cpp
@@ -70,6 +70,61 @@
 	unmaterializedVariables->erase(this);
 }
 
+void Variable::materialize() const
+{
+	if(!address)
+	{
+		address = allocate();
+		RR_DEBUG_INFO_EMIT_VAR(address);
+
+		if(rvalue)
+		{
+			storeValue(rvalue);
+			rvalue = nullptr;
+		}
+	}
+}
+
+Value *Variable::loadValue() const
+{
+	if(rvalue)
+	{
+		return rvalue;
+	}
+
+	if(!address)
+	{
+		// TODO: Return undef instead.
+		materialize();
+	}
+
+	return Nucleus::createLoad(address, getType(), false, 0);
+}
+
+Value *Variable::storeValue(Value *value) const
+{
+	if(address)
+	{
+		return Nucleus::createStore(value, address, getType(), false, 0);
+	}
+
+	rvalue = value;
+
+	return value;
+}
+
+Value *Variable::getBaseAddress() const
+{
+	materialize();
+
+	return address;
+}
+
+Value *Variable::getElementPointer(Value *index, bool unsignedIndex) const
+{
+	return Nucleus::createGEP(getBaseAddress(), getType(), index, unsignedIndex);
+}
+
 Value *Variable::allocate() const
 {
 	return Nucleus::allocateStackVariable(getType());
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index 83e4a64..825480b 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -2625,61 +2625,6 @@
 #endif  // ENABLE_RR_DEBUG_INFO
 }
 
-inline void Variable::materialize() const
-{
-	if(!address)
-	{
-		address = allocate();
-		RR_DEBUG_INFO_EMIT_VAR(address);
-
-		if(rvalue)
-		{
-			storeValue(rvalue);
-			rvalue = nullptr;
-		}
-	}
-}
-
-inline Value *Variable::loadValue() const
-{
-	if(rvalue)
-	{
-		return rvalue;
-	}
-
-	if(!address)
-	{
-		// TODO: Return undef instead.
-		materialize();
-	}
-
-	return Nucleus::createLoad(address, getType(), false, 0);
-}
-
-inline Value *Variable::storeValue(Value *value) const
-{
-	if(address)
-	{
-		return Nucleus::createStore(value, address, getType(), false, 0);
-	}
-
-	rvalue = value;
-
-	return value;
-}
-
-inline Value *Variable::getBaseAddress() const
-{
-	materialize();
-
-	return address;
-}
-
-inline Value *Variable::getElementPointer(Value *index, bool unsignedIndex) const
-{
-	return Nucleus::createGEP(getBaseAddress(), getType(), index, unsignedIndex);
-}
-
 template<class T>
 RValue<Pointer<T>> LValue<T>::operator&()
 {