Просмотр исходного кода

shader_jit_x64: Separate initialization and code generation for readability.

bunnei 10 лет назад
Родитель
Сommit
1d45b57939
1 измененных файлов с 8 добавлено и 9 удалено
  1. 8 9
      src/video_core/shader/shader_jit_x64.cpp

+ 8 - 9
src/video_core/shader/shader_jit_x64.cpp

@@ -810,7 +810,15 @@ void JitCompiler::FindReturnOffsets() {
 }
 }
 
 
 void JitCompiler::Compile() {
 void JitCompiler::Compile() {
+    // Reset flow control state
     program = (CompiledShader*)GetCodePtr();
     program = (CompiledShader*)GetCodePtr();
+    program_counter = 0;
+    looping = false;
+    code_ptr.fill(nullptr);
+    fixup_branches.clear();
+
+    // Find all `CALL` instructions and identify return locations
+    FindReturnOffsets();
 
 
     // The stack pointer is 8 modulo 16 at the entry of a procedure
     // The stack pointer is 8 modulo 16 at the entry of a procedure
     ABI_PushRegistersAndAdjustStack(ABI_ALL_CALLEE_SAVED, 8);
     ABI_PushRegistersAndAdjustStack(ABI_ALL_CALLEE_SAVED, 8);
@@ -833,15 +841,6 @@ void JitCompiler::Compile() {
     MOV(PTRBITS, R(RAX), ImmPtr(&neg));
     MOV(PTRBITS, R(RAX), ImmPtr(&neg));
     MOVAPS(NEGBIT, MatR(RAX));
     MOVAPS(NEGBIT, MatR(RAX));
 
 
-    // Find all `CALL` instructions and identify return locations
-    FindReturnOffsets();
-
-    // Reset flow control state
-    program_counter = 0;
-    looping = false;
-    code_ptr.fill(nullptr);
-    fixup_branches.clear();
-
     // Jump to start of the shader program
     // Jump to start of the shader program
     JMPptr(R(ABI_PARAM2));
     JMPptr(R(ABI_PARAM2));