[Bf-blender-cvs] [ce022f4] object_nodes: Use a TypeSpec pointer for structure fields rather than direct storage.

Lukas Tönne noreply at git.blender.org
Thu May 19 19:29:27 CEST 2016


Commit: ce022f45063482a2324ba358962804e1f4044a56
Author: Lukas Tönne
Date:   Wed May 18 11:28:50 2016 +0200
Branches: object_nodes
https://developer.blender.org/rBce022f45063482a2324ba358962804e1f4044a56

Use a TypeSpec pointer for structure fields rather than direct storage.

===================================================================

M	source/blender/blenvm/compile/node_graph.cc
M	source/blender/blenvm/compile/typedesc.cc
M	source/blender/blenvm/compile/typedesc.h
M	source/blender/blenvm/llvm/llvm_codegen.cc
M	source/blender/blenvm/llvm/llvm_types.cc

===================================================================

diff --git a/source/blender/blenvm/compile/node_graph.cc b/source/blender/blenvm/compile/node_graph.cc
index ea1af34..26d94d5 100644
--- a/source/blender/blenvm/compile/node_graph.cc
+++ b/source/blender/blenvm/compile/node_graph.cc
@@ -1219,48 +1219,45 @@ void NodeGraph::finalize()
 
 static void register_typedefs()
 {
-	TypeSpec *t;
 	
-	t = TypeSpec::add_typedef("FLOAT", BVM_FLOAT);
+	TypeSpec *float_t = TypeSpec::add_typedef("FLOAT", BVM_FLOAT);
 	
-	t = TypeSpec::add_typedef("FLOAT3", BVM_FLOAT3);
+	TypeSpec *float3_t = TypeSpec::add_typedef("FLOAT3", BVM_FLOAT3);
 	
-	t = TypeSpec::add_typedef("FLOAT4", BVM_FLOAT4);
+	TypeSpec *float4_t = TypeSpec::add_typedef("FLOAT4", BVM_FLOAT4);
 	
-	t = TypeSpec::add_typedef("INT", BVM_INT);
+	TypeSpec *int_t = TypeSpec::add_typedef("INT", BVM_INT);
 	
-	t = TypeSpec::add_typedef("MATRIX44", BVM_MATRIX44);
+	TypeSpec *matrix44_t = TypeSpec::add_typedef("MATRIX44", BVM_MATRIX44);
 	
-	t = TypeSpec::add_typedef("STRING", BVM_STRING);
+	TypeSpec *string_t = TypeSpec::add_typedef("STRING", BVM_STRING);
 	
-	t = TypeSpec::add_typedef("RNAPOINTER", BVM_RNAPOINTER);
+	TypeSpec *rnapointer_t = TypeSpec::add_typedef("RNAPOINTER", BVM_RNAPOINTER);
 	
-	t = TypeSpec::add_typedef("MESH", BVM_MESH);
+	TypeSpec *mesh_t = TypeSpec::add_typedef("MESH", BVM_MESH);
 	
-	t = TypeSpec::add_typedef("DUPLIS", BVM_DUPLIS);
+	TypeSpec *duplis_t = TypeSpec::add_typedef("DUPLIS", BVM_DUPLIS);
 	
 	
-	t = TypeSpec::add_typedef("FLOAT_ARRAY", BVM_FLOAT, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("FLOAT_ARRAY", BVM_FLOAT, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("FLOAT3_ARRAY", BVM_FLOAT3, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("FLOAT3_ARRAY", BVM_FLOAT3, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("FLOAT4_ARRAY", BVM_FLOAT4, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("FLOAT4_ARRAY", BVM_FLOAT4, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("INT_ARRAY", BVM_INT, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("INT_ARRAY", BVM_INT, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("MATRIX44_ARRAY", BVM_MATRIX44, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("MATRIX44_ARRAY", BVM_MATRIX44, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("STRING_ARRAY", BVM_STRING, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("STRING_ARRAY", BVM_STRING, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("RNAPOINTER_ARRAY", BVM_RNAPOINTER, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("RNAPOINTER_ARRAY", BVM_RNAPOINTER, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("MESH_ARRAY", BVM_MESH, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("MESH_ARRAY", BVM_MESH, BVM_BUFFER_ARRAY);
 	
-	t = TypeSpec::add_typedef("DUPLIS_ARRAY", BVM_DUPLIS, BVM_BUFFER_ARRAY);
+	TypeSpec::add_typedef("DUPLIS_ARRAY", BVM_DUPLIS, BVM_BUFFER_ARRAY);
 	
-	
-	
-	(void)t;
+	UNUSED_VARS(float_t, float3_t, float4_t, matrix44_t, int_t, string_t, rnapointer_t, mesh_t, duplis_t);
 }
 
 OpCode get_opcode_from_node_type(const string &node)
diff --git a/source/blender/blenvm/compile/typedesc.cc b/source/blender/blenvm/compile/typedesc.cc
index f22554c..a599306 100644
--- a/source/blender/blenvm/compile/typedesc.cc
+++ b/source/blender/blenvm/compile/typedesc.cc
@@ -68,7 +68,7 @@ int StructSpec::find_field(const string &name) const
 	return -1;
 }
 
-void StructSpec::add_field(const string &name, const TypeSpec &typespec)
+void StructSpec::add_field(const string &name, const TypeSpec *typespec)
 {
 	m_fields.push_back(FieldSpec(name, typespec));
 }
@@ -182,7 +182,7 @@ size_t TypeSpec::size() const
 	if (m_structure) {
 		size_t size = 0;
 		for (int i = 0; i < m_structure->num_fields(); ++i)
-			size += m_structure->field(i).typespec.size();
+			size += m_structure->field(i).typespec->size();
 		return size;
 	}
 	else {
@@ -234,9 +234,9 @@ void TypeSpec::copy_value(void *to, const void *from) const
 {
 	if (m_structure) {
 		for (int i = 0; i < m_structure->num_fields(); ++i) {
-			m_structure->field(i).typespec.copy_value(to, from);
+			m_structure->field(i).typespec->copy_value(to, from);
 			
-			size_t size = m_structure->field(i).typespec.size();
+			size_t size = m_structure->field(i).typespec->size();
 			to = ((uint8_t *)to) + size;
 			from = ((uint8_t *)from) + size;
 		}
diff --git a/source/blender/blenvm/compile/typedesc.h b/source/blender/blenvm/compile/typedesc.h
index 868288f..737b27f 100644
--- a/source/blender/blenvm/compile/typedesc.h
+++ b/source/blender/blenvm/compile/typedesc.h
@@ -208,7 +208,7 @@ private:
 
 struct StructSpec {
 	struct FieldSpec {
-		FieldSpec(const string &name, const TypeSpec &typespec) :
+		FieldSpec(const string &name, const TypeSpec *typespec) :
 		    name(name),
 		    typespec(typespec)
 		{}
@@ -219,7 +219,7 @@ struct StructSpec {
 		}
 		
 		string name;
-		TypeSpec typespec;
+		const TypeSpec *typespec;
 	};
 	typedef std::vector<FieldSpec> FieldList;
 	
@@ -233,7 +233,7 @@ struct StructSpec {
 	int num_fields() const { return m_fields.size(); }
 	const FieldSpec &field(int i) const { return m_fields[i]; }
 	int find_field(const string &name) const;
-	void add_field(const string &name, const TypeSpec &typespec);
+	void add_field(const string &name, const TypeSpec *typespec);
 	
 private:
 	FieldList m_fields;
diff --git a/source/blender/blenvm/llvm/llvm_codegen.cc b/source/blender/blenvm/llvm/llvm_codegen.cc
index 41dc99e..d377d74 100644
--- a/source/blender/blenvm/llvm/llvm_codegen.cc
+++ b/source/blender/blenvm/llvm/llvm_codegen.cc
@@ -167,6 +167,7 @@ void LLVMCompilerBase::codegen_node_function_call(llvm::BasicBlock *block,
 		const string &tname = output.socket->typedesc.name();
 		const TypeSpec *typespec = output.socket->typedesc.get_typespec();
 		Type *type = llvm_create_value_type(context(), tname, typespec);
+		BLI_assert(type != NULL);
 		Value *value = builder.CreateAlloca(type);
 		
 		args.push_back(value);
diff --git a/source/blender/blenvm/llvm/llvm_types.cc b/source/blender/blenvm/llvm/llvm_types.cc
index a0bb4d8..c1eeb68 100644
--- a/source/blender/blenvm/llvm/llvm_types.cc
+++ b/source/blender/blenvm/llvm/llvm_types.cc
@@ -119,7 +119,7 @@ llvm::StructType *llvm_create_struct_type(llvm::LLVMContext &context, const stri
 	
 	std::vector<Type*> elemtypes;
 	for (int i = 0; i < s->num_fields(); ++i) {
-		Type *ftype = llvm_create_value_type(context, s->field(i).name, &s->field(i).typespec);
+		Type *ftype = llvm_create_value_type(context, s->field(i).name, s->field(i).typespec);
 		elemtypes.push_back(ftype);
 	}




More information about the Bf-blender-cvs mailing list