From af970211d93a2d5549002eb679b655ad6fa94655 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Wed, 9 Mar 2016 12:06:45 +1300 Subject: layers: Lighten object tracker slightly Just avoiding some repeated unordered_map lookups. Signed-off-by: Chris Forbes --- vk-layer-generate.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/vk-layer-generate.py b/vk-layer-generate.py index d9ed3157..242d97e9 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -873,8 +873,9 @@ class ObjectTrackerSubcommand(Subcommand): procs_txt.append('static void destroy_%s(VkDevice dispatchable_object, %s object)' % (name, o)) procs_txt.append('{') procs_txt.append(' uint64_t object_handle = (uint64_t)(object);') - procs_txt.append(' if (%sMap.find(object_handle) != %sMap.end()) {' % (o, o)) - procs_txt.append(' OBJTRACK_NODE* pNode = %sMap[(uint64_t)object];' % (o)) + procs_txt.append(' auto it = %sMap.find(object_handle);' % o) + procs_txt.append(' if (it != %sMap.end()) {' % o) + procs_txt.append(' OBJTRACK_NODE* pNode = it->second;') procs_txt.append(' uint32_t objIndex = objTypeToIndex(pNode->objType);') procs_txt.append(' assert(numTotalObjs > 0);') procs_txt.append(' numTotalObjs--;') @@ -885,7 +886,7 @@ class ObjectTrackerSubcommand(Subcommand): procs_txt.append(' string_VkDebugReportObjectTypeEXT(pNode->objType), (uint64_t)(object), numTotalObjs, numObjs[objIndex],') procs_txt.append(' string_VkDebugReportObjectTypeEXT(pNode->objType));') procs_txt.append(' delete pNode;') - procs_txt.append(' %sMap.erase(object_handle);' % (o)) + procs_txt.append(' %sMap.erase(it);' % (o)) procs_txt.append(' } else {') procs_txt.append(' log_msg(mdd(dispatchable_object), VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT ) 0, object_handle, __LINE__, OBJTRACK_NONE, "OBJTRACK",') procs_txt.append(' "Unable to remove obj 0x%" PRIxLEAST64 ". Was it created? Has it already been destroyed?",') @@ -901,9 +902,9 @@ class ObjectTrackerSubcommand(Subcommand): procs_txt.append('{') procs_txt.append(' if (object != VK_NULL_HANDLE) {') procs_txt.append(' uint64_t object_handle = (uint64_t)(object);') - procs_txt.append(' if (%sMap.find(object_handle) != %sMap.end()) {' % (o, o)) - procs_txt.append(' OBJTRACK_NODE* pNode = %sMap[object_handle];' % (o)) - procs_txt.append(' pNode->status |= status_flag;') + procs_txt.append(' auto it = %sMap.find(object_handle);' % o) + procs_txt.append(' if (it != %sMap.end()) {' % o) + procs_txt.append(' it->second->status |= status_flag;') procs_txt.append(' }') procs_txt.append(' else {') procs_txt.append(' // If we do not find it print an error') @@ -929,8 +930,9 @@ class ObjectTrackerSubcommand(Subcommand): procs_txt.append(' const char *fail_msg)') procs_txt.append('{') procs_txt.append(' uint64_t object_handle = (uint64_t)(object);') - procs_txt.append(' if (%sMap.find(object_handle) != %sMap.end()) {' % (o, o)) - procs_txt.append(' OBJTRACK_NODE* pNode = %sMap[object_handle];' % (o)) + procs_txt.append(' auto it = %sMap.find(object_handle);' % o) + procs_txt.append(' if (it != %sMap.end()) {' % o) + procs_txt.append(' OBJTRACK_NODE* pNode = it->second;') procs_txt.append(' if ((pNode->status & status_mask) != status_flag) {') procs_txt.append(' log_msg(mdd(dispatchable_object), msg_flags, pNode->objType, object_handle, __LINE__, OBJTRACK_UNKNOWN_OBJECT, "OBJTRACK",') procs_txt.append(' "OBJECT VALIDATION WARNING: %s object 0x%" PRIxLEAST64 ": %s", string_VkDebugReportObjectTypeEXT(objType),') @@ -955,9 +957,9 @@ class ObjectTrackerSubcommand(Subcommand): procs_txt.append('static VkBool32 reset_%s_status(VkDevice dispatchable_object, %s object, VkDebugReportObjectTypeEXT objType, ObjectStatusFlags status_flag)' % (name, o)) procs_txt.append('{') procs_txt.append(' uint64_t object_handle = (uint64_t)(object);') - procs_txt.append(' if (%sMap.find(object_handle) != %sMap.end()) {' % (o, o)) - procs_txt.append(' OBJTRACK_NODE* pNode = %sMap[object_handle];' % (o)) - procs_txt.append(' pNode->status &= ~status_flag;') + procs_txt.append(' auto it = %sMap.find(object_handle);' % o) + procs_txt.append(' if (it != %sMap.end()) {' % o) + procs_txt.append(' it->second->status &= ~status_flag;') procs_txt.append(' }') procs_txt.append(' else {') procs_txt.append(' // If we do not find it print an error') -- cgit v1.2.3