[Bf-blender-cvs] [5452df7] master: BMesh: minor optimization for intersect

Campbell Barton noreply at git.blender.org
Thu Dec 10 13:50:40 CET 2015


Commit: 5452df79846387fa0fd865281bdab048b11c4019
Author: Campbell Barton
Date:   Thu Dec 10 23:39:50 2015 +1100
Branches: master
https://developer.blender.org/rB5452df79846387fa0fd865281bdab048b11c4019

BMesh: minor optimization for intersect

Avoid double lookup on insertion ghash

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

M	source/blender/bmesh/tools/bmesh_intersect.c

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

diff --git a/source/blender/bmesh/tools/bmesh_intersect.c b/source/blender/bmesh/tools/bmesh_intersect.c
index 24f7fe2..0c9cace 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.c
+++ b/source/blender/bmesh/tools/bmesh_intersect.c
@@ -147,22 +147,21 @@ static bool ghash_insert_link(
         GHash *gh, void *key, void *val, bool use_test,
         MemArena *mem_arena)
 {
+	void           **ls_base_p;
 	struct LinkBase *ls_base;
 	LinkNode *ls;
 
-	ls_base = BLI_ghash_lookup(gh, key);
-
-	if (ls_base) {
+	if (!BLI_ghash_ensure_p(gh, key, &ls_base_p)) {
+		ls_base = *ls_base_p = BLI_memarena_alloc(mem_arena, sizeof(*ls_base));
+		ls_base->list     = NULL;
+		ls_base->list_len = 0;
+	}
+	else {
+		ls_base = *ls_base_p;
 		if (use_test && (BLI_linklist_index(ls_base->list, key) != -1)) {
 			return false;
 		}
 	}
-	else {
-		ls_base = BLI_memarena_alloc(mem_arena, sizeof(*ls_base));
-		ls_base->list     = NULL;
-		ls_base->list_len = 0;
-		BLI_ghash_insert(gh, key, ls_base);
-	}
 
 	ls = BLI_memarena_alloc(mem_arena, sizeof(*ls));
 	ls->next = ls_base->list;




More information about the Bf-blender-cvs mailing list