From 60aa72e1177c436351c91be291ef869816df79e0 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 12 Apr 2016 23:24:34 -0400 Subject: shader_jit_x64: Use a sorted vector instead of a set for keeping track of return addresses. --- src/video_core/shader/shader_jit_x64.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/video_core/shader/shader_jit_x64.cpp') diff --git a/src/video_core/shader/shader_jit_x64.cpp b/src/video_core/shader/shader_jit_x64.cpp index 503fad158..e32a4e720 100644 --- a/src/video_core/shader/shader_jit_x64.cpp +++ b/src/video_core/shader/shader_jit_x64.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include #include "common/x64/abi.h" @@ -760,8 +761,7 @@ void JitCompiler::Compile_Return() { } void JitCompiler::Compile_NextInstr() { - auto search = return_offsets.find(program_counter); - if (search != return_offsets.end()) { + if (std::binary_search(return_offsets.begin(), return_offsets.end(), program_counter)) { Compile_Return(); } @@ -793,10 +793,13 @@ void JitCompiler::FindReturnOffsets() { case OpCode::Id::CALL: case OpCode::Id::CALLC: case OpCode::Id::CALLU: - return_offsets.insert(instr.flow_control.dest_offset + instr.flow_control.num_instructions); + return_offsets.push_back(instr.flow_control.dest_offset + instr.flow_control.num_instructions); break; } } + + // Sort for efficient binary search later + std::sort(return_offsets.begin(), return_offsets.end()); } void JitCompiler::Compile() { -- cgit v1.2.3