1.1 --- a/sourcepawn/jit/x86/jit_x86.cpp Sun Aug 11 11:27:19 2013 -0700
1.2 +++ b/sourcepawn/jit/x86/jit_x86.cpp Sun Aug 11 11:30:27 2013 -0700
1.3 @@ -1956,31 +1956,31 @@
1.4 return false;
1.5 }
1.6
1.7 -typedef int (*JIT_EXECUTE)(cell_t *vars, void *addr);
1.8 +typedef int (*JIT_EXECUTE)(InfoVars *vars, void *addr);
1.9 int JITX86::InvokeFunction(BaseRuntime *runtime, JitFunction *fn, cell_t *result)
1.10 {
1.11 int err;
1.12 JIT_EXECUTE pfn;
1.13 sp_context_t *ctx;
1.14 - cell_t vars[AMX_NUM_INFO_VARS];
1.15 + InfoVars vars;
1.16
1.17 ctx = runtime->GetBaseContext()->GetCtx();
1.18
1.19 - vars[0] = ctx->sp;
1.20 - vars[1] = ctx->hp;
1.21 - vars[2] = (cell_t)result;
1.22 - vars[3] = (cell_t)ctx;
1.23 - vars[4] = (cell_t)(runtime->plugin()->memory + runtime->plugin()->mem_size);
1.24 - vars[5] = fn->GetPCodeAddress();
1.25 - vars[6] = runtime->plugin()->data_size;
1.26 - vars[7] = (cell_t)(runtime->plugin()->memory);
1.27 - /* vars[8] will be set to ESP */
1.28 + vars.frm = ctx->sp;
1.29 + vars.hp = ctx->hp;
1.30 + vars.rval = result;
1.31 + vars.ctx = ctx;
1.32 + vars.stp = runtime->plugin()->memory + runtime->plugin()->mem_size;
1.33 + vars.cip = fn->GetPCodeAddress();
1.34 + vars.data_size = runtime->plugin()->data_size;
1.35 + vars.memory = runtime->plugin()->memory;
1.36 + /* vars.esp will be set in the entry code */
1.37
1.38 pfn = (JIT_EXECUTE)m_pJitEntry;
1.39 - err = pfn(vars, fn->GetEntryAddress());
1.40 + err = pfn(&vars, fn->GetEntryAddress());
1.41
1.42 - ctx->hp = vars[1];
1.43 - ctx->err_cip = vars[5];
1.44 + ctx->hp = vars.hp;
1.45 + ctx->err_cip = vars.cip;
1.46
1.47 return err;
1.48 }