jscript: Move function destructor implementation into vtbl.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
bad132acae
commit
4960f9e338
|
@ -41,6 +41,7 @@ typedef struct {
|
||||||
|
|
||||||
struct _function_vtbl_t {
|
struct _function_vtbl_t {
|
||||||
HRESULT (*toString)(FunctionInstance*,jsstr_t**);
|
HRESULT (*toString)(FunctionInstance*,jsstr_t**);
|
||||||
|
void (*destructor)(FunctionInstance*);
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -555,13 +556,9 @@ static HRESULT Function_get_arguments(script_ctx_t *ctx, jsdisp_t *jsthis, jsval
|
||||||
|
|
||||||
static void Function_destructor(jsdisp_t *dispex)
|
static void Function_destructor(jsdisp_t *dispex)
|
||||||
{
|
{
|
||||||
FunctionInstance *This = function_from_jsdisp(dispex);
|
FunctionInstance *function = function_from_jsdisp(dispex);
|
||||||
|
function->vtbl->destructor(function);
|
||||||
if(This->code)
|
heap_free(function);
|
||||||
release_bytecode(This->code);
|
|
||||||
if(This->scope_chain)
|
|
||||||
scope_release(This->scope_chain);
|
|
||||||
heap_free(This);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const builtin_prop_t Function_props[] = {
|
static const builtin_prop_t Function_props[] = {
|
||||||
|
@ -649,8 +646,13 @@ static HRESULT NativeFunction_toString(FunctionInstance *function, jsstr_t **ret
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void NativeFunction_destructor(FunctionInstance *function)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static const function_vtbl_t NativeFunctionVtbl = {
|
static const function_vtbl_t NativeFunctionVtbl = {
|
||||||
NativeFunction_toString,
|
NativeFunction_toString,
|
||||||
|
NativeFunction_destructor
|
||||||
};
|
};
|
||||||
|
|
||||||
HRESULT create_builtin_function(script_ctx_t *ctx, builtin_invoke_t value_proc, const WCHAR *name,
|
HRESULT create_builtin_function(script_ctx_t *ctx, builtin_invoke_t value_proc, const WCHAR *name,
|
||||||
|
@ -714,8 +716,16 @@ static HRESULT InterpretedFunction_toString(FunctionInstance *function, jsstr_t
|
||||||
return *ret ? S_OK : E_OUTOFMEMORY;
|
return *ret ? S_OK : E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void InterpretedFunction_destructor(FunctionInstance *function)
|
||||||
|
{
|
||||||
|
release_bytecode(function->code);
|
||||||
|
if(function->scope_chain)
|
||||||
|
scope_release(function->scope_chain);
|
||||||
|
}
|
||||||
|
|
||||||
static const function_vtbl_t InterpretedFunctionVtbl = {
|
static const function_vtbl_t InterpretedFunctionVtbl = {
|
||||||
InterpretedFunction_toString,
|
InterpretedFunction_toString,
|
||||||
|
InterpretedFunction_destructor
|
||||||
};
|
};
|
||||||
|
|
||||||
HRESULT create_source_function(script_ctx_t *ctx, bytecode_t *code, function_code_t *func_code,
|
HRESULT create_source_function(script_ctx_t *ctx, bytecode_t *code, function_code_t *func_code,
|
||||||
|
|
Loading…
Reference in New Issue