sourcepawn/jit/x86/jit_x86.cpp
changeset 3984 d94a0d3bc008
parent 3983 46f4122981c2
child 3985 f1e2d9a7a276
     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  }