Jacek Caban : jscript: Store source code range in function_code_t.
Alexandre Julliard
julliard at winehq.org
Tue Apr 24 13:14:41 CDT 2012
Module: wine
Branch: master
Commit: 375ab889d8929db12f58e3498c0760328b2697fd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=375ab889d8929db12f58e3498c0760328b2697fd
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Apr 24 17:39:40 2012 +0200
jscript: Store source code range in function_code_t.
---
dlls/jscript/compile.c | 5 +++++
dlls/jscript/engine.c | 4 ++--
dlls/jscript/engine.h | 5 ++++-
dlls/jscript/function.c | 12 +++---------
dlls/jscript/jscript.c | 2 +-
5 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c
index 3f6a2b6..f8aaa41 100644
--- a/dlls/jscript/compile.c
+++ b/dlls/jscript/compile.c
@@ -1804,6 +1804,11 @@ static HRESULT compile_function(compiler_ctx_t *ctx, source_elements_t *source,
return E_OUTOFMEMORY;
}
+ if(func_expr) {
+ func->source = func_expr->src_str;
+ func->source_len = func_expr->src_len;
+ }
+
func->source_elements = source;
func->expr = func_expr;
diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c
index 929be80..ec906a1 100644
--- a/dlls/jscript/engine.c
+++ b/dlls/jscript/engine.c
@@ -814,7 +814,7 @@ static HRESULT interp_func(exec_ctx_t *ctx)
expr = ctx->func_code->funcs[func_idx].expr;
hres = create_source_function(ctx->script, ctx->code, expr->parameter_list, ctx->func_code->funcs+func_idx,
- ctx->scope_chain, expr->src_str, expr->src_len, &dispex);
+ ctx->scope_chain, &dispex);
if(FAILED(hres))
return hres;
@@ -2629,7 +2629,7 @@ HRESULT exec_source(exec_ctx_t *ctx, bytecode_t *code, function_code_t *func, BO
expr = func->funcs[i].expr;
hres = create_source_function(ctx->script, code, expr->parameter_list, func->funcs+i,
- ctx->scope_chain, expr->src_str, expr->src_len, &func_obj);
+ ctx->scope_chain, &func_obj);
if(FAILED(hres))
return hres;
diff --git a/dlls/jscript/engine.h b/dlls/jscript/engine.h
index ce7ff8c..a2be6ee 100644
--- a/dlls/jscript/engine.h
+++ b/dlls/jscript/engine.h
@@ -173,6 +173,9 @@ typedef struct _function_code_t {
function_expression_t *expr; /* FIXME */
source_elements_t *source_elements; /* FIXME */
+ const WCHAR *source;
+ unsigned source_len;
+
unsigned func_cnt;
struct _function_code_t *funcs;
} function_code_t;
@@ -268,7 +271,7 @@ HRESULT exec_source(exec_ctx_t*,bytecode_t*,function_code_t*,BOOL,jsexcept_t*,VA
typedef struct _parameter_t parameter_t;
HRESULT create_source_function(script_ctx_t*,bytecode_t*,parameter_t*,function_code_t*,scope_chain_t*,
- const WCHAR*,DWORD,jsdisp_t**) DECLSPEC_HIDDEN;
+ jsdisp_t**) DECLSPEC_HIDDEN;
typedef enum {
LT_INT,
diff --git a/dlls/jscript/function.c b/dlls/jscript/function.c
index f79ac04..dc4c5e8 100644
--- a/dlls/jscript/function.c
+++ b/dlls/jscript/function.c
@@ -32,8 +32,6 @@ typedef struct {
scope_chain_t *scope_chain;
bytecode_t *code;
function_code_t *func_code;
- const WCHAR *src_str;
- DWORD src_len;
DWORD length;
jsdisp_t *arguments;
} FunctionInstance;
@@ -303,7 +301,7 @@ static HRESULT function_to_string(FunctionInstance *function, BSTR *ret)
memcpy(str + sizeof(native_prefixW)/sizeof(WCHAR), function->name, name_len*sizeof(WCHAR));
memcpy(str + sizeof(native_prefixW)/sizeof(WCHAR) + name_len, native_suffixW, sizeof(native_suffixW));
}else {
- str = SysAllocStringLen(function->src_str, function->src_len);
+ str = SysAllocStringLen(function->func_code->source, function->func_code->source_len);
if(!str)
return E_OUTOFMEMORY;
}
@@ -661,7 +659,7 @@ HRESULT create_builtin_function(script_ctx_t *ctx, builtin_invoke_t value_proc,
}
HRESULT create_source_function(script_ctx_t *ctx, bytecode_t *code, parameter_t *parameters, function_code_t *func_code,
- scope_chain_t *scope_chain, const WCHAR *src_str, DWORD src_len, jsdisp_t **ret)
+ scope_chain_t *scope_chain, jsdisp_t **ret)
{
FunctionInstance *function;
jsdisp_t *prototype;
@@ -698,9 +696,6 @@ HRESULT create_source_function(script_ctx_t *ctx, bytecode_t *code, parameter_t
length++;
function->length = length;
- function->src_str = src_str;
- function->src_len = src_len;
-
*ret = &function->dispex;
return S_OK;
}
@@ -786,8 +781,7 @@ static HRESULT construct_function(script_ctx_t *ctx, DISPPARAMS *dp, jsexcept_t
}
expr = code->global_code.funcs[0].expr;
- hres = create_source_function(ctx, code, expr->parameter_list, code->global_code.funcs, NULL, expr->src_str,
- expr->src_len, &function);
+ hres = create_source_function(ctx, code, expr->parameter_list, code->global_code.funcs, NULL, &function);
release_bytecode(code);
if(FAILED(hres))
return hres;
diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c
index dfd7d6c..da34c11 100644
--- a/dlls/jscript/jscript.c
+++ b/dlls/jscript/jscript.c
@@ -836,7 +836,7 @@ static HRESULT WINAPI JScriptParseProcedure_ParseProcedureText(IActiveScriptPars
return hres;
}
- hres = create_source_function(This->ctx, code, NULL, &code->global_code, NULL, NULL, 0, &dispex);
+ hres = create_source_function(This->ctx, code, NULL, &code->global_code, NULL, &dispex);
release_bytecode(code);
if(FAILED(hres))
return hres;
More information about the wine-cvs
mailing list