21 #include <wine/port.h> 71 if(!
ctx->stack_size) {
76 }
else if(
ctx->stack_size ==
ctx->stack_top) {
85 ctx->stack = new_stack;
89 ctx->stack[
ctx->stack_top++] =
v;
107 return ctx->stack[
ctx->stack_top-1];
113 return ctx->stack+
ctx->stack_top-1-
n;
126 return ctx->stack +
ctx->stack_top-
n;
132 return ctx->stack[--
ctx->stack_top];
205 IDispatch_Release(
val->u.idref.disp);
207 case EXPRVAL_STACK_REF:
212 case EXPRVAL_INVALID:
245 r->type = EXPRVAL_INVALID;
252 r->type = EXPRVAL_IDREF;
258 r->type = EXPRVAL_STACK_REF;
263 r->type = EXPRVAL_IDREF;
269 r->type = EXPRVAL_INVALID;
289 case EXPRVAL_STACK_REF: {
305 case EXPRVAL_STACK_REF:
318 case EXPRVAL_STACK_REF: {
342 if(
ref->type == EXPRVAL_JSVAL) {
349 if(
ref->type == EXPRVAL_IDREF)
350 IDispatch_Release(
ref->u.idref.disp);
361 if(
val->u.idref.disp)
362 IDispatch_Release(
val->u.idref.disp);
364 case EXPRVAL_STACK_REF:
365 case EXPRVAL_INVALID:
372 val->type = EXPRVAL_INVALID;
378 ref->type = EXPRVAL_IDREF;
380 IDispatch_AddRef(
obj);
383 IDispatch_AddRef(
ref->u.idref.disp =
obj);
385 ref->u.idref.id =
id;
411 IDispatch_AddRef(
obj);
412 new_scope->
jsobj = jsobj;
445 IDispatch_Release(scope->
obj);
472 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
475 IDispatchEx_Release(dispex);
477 TRACE(
"using IDispatch\n");
478 hres = IDispatch_GetIDsOfNames(disp, &
IID_NULL, &bstr, 1, 0,
id);
481 if(name_bstr != bstr)
497 if(!disp1 || !disp2) {
508 IUnknown_Release(
unk1);
515 hres = IUnknown_QueryInterface(
unk1, &IID_IObjectIdentity, (
void**)&
identity);
525 IUnknown_Release(
unk1);
526 IUnknown_Release(unk2);
562 FIXME(
"VARIANT not implemented\n");
581 TRACE(
"detaching %p\n", frame);
611 if(
item->flags & SCRIPTITEM_GLOBALMEMBERS) {
631 return bsearch(identifier, function->locals, function->locals_cnt,
sizeof(*function->locals),
local_ref_cmp);
645 for(scope =
ctx->call_ctx->scope; scope; scope = scope->
next) {
649 static const WCHAR argumentsW[] = {
'a',
'r',
'g',
'u',
'm',
'e',
'n',
't',
's',0};
652 ret->type = EXPRVAL_STACK_REF;
654 TRACE(
"returning ref %d for %d\n",
ret->u.off,
ref->ref);
682 if((
item->flags & SCRIPTITEM_ISVISIBLE) && !
wcscmp(
item->name, identifier)) {
689 hres = IActiveScriptSite_GetItemInfo(
ctx->site, identifier,
690 SCRIPTINFO_IUNKNOWN, &unk,
NULL);
692 WARN(
"GetItemInfo failed: %08x\n",
hres);
697 IUnknown_Release(unk);
699 WARN(
"object does not implement IDispatch\n");
704 IDispatch_AddRef(
item->disp);
705 ret->type = EXPRVAL_JSVAL;
775 FIXME(
"invalid ref: %08x\n", prop_ref.
u.
hres);
783 hres = IDispatch_QueryInterface(
obj, &IID_IDispatchEx, (
void**)&dispex);
785 hres = IDispatchEx_GetNextDispID(dispex, fdexEnumDefault,
id, &
id);
787 hres = IDispatchEx_GetMemberName(dispex,
id, &
name);
788 IDispatchEx_Release(dispex);
792 TRACE(
"No IDispatchEx\n");
836 IDispatch_Release(disp);
921 except->catch_off = catch_off;
922 except->finally_off = finally_off;
934 unsigned finally_off;
936 TRACE(
"%u\n", ret_off);
941 finally_off =
except->finally_off;
954 frame->
ip = finally_off;
974 TRACE(
"passing exception\n");
1014 TRACE(
"%d\n", func_idx);
1017 frame->
scope, &dispex);
1047 IDispatch_Release(
obj);
1059 IDispatch_Release(
obj);
1088 IDispatch_Release(
obj);
1117 IDispatch_Release(
obj);
1126 ref.type = EXPRVAL_IDREF;
1128 ref.u.idref.id =
id;
1130 IDispatch_Release(
obj);
1193 TRACE(
"%d %d\n", argn, do_ret);
1211 TRACE(
"%d %d\n", argn, do_ret);
1241 if(exprval.
type == EXPRVAL_INVALID && (
flags & fdexNameEnsure)) {
1251 if(exprval.
type == EXPRVAL_JSVAL || exprval.
type == EXPRVAL_INVALID) {
1252 WARN(
"invalid ref\n");
1270 if(exprval.
type == EXPRVAL_INVALID)
1292 ref.type = EXPRVAL_STACK_REF;
1350 TRACE(
"%s\n",
arg ?
"true" :
"false");
1606 static const WCHAR prototypeW[] = {
'p',
'r',
'o',
't',
'o',
't',
'y',
'p',
'e',0};
1617 FIXME(
"non-jsdisp objects not supported\n");
1635 for(iter = tmp; !
ret && iter; iter = iter->
prototype) {
1644 FIXME(
"prototype is not an object\n");
1867 IDispatch_Release(
obj);
1872 IDispatch_Release(
obj);
1894 switch(exprval.
type) {
1895 case EXPRVAL_STACK_REF:
1900 IDispatch_Release(exprval.
u.
idref.disp);
1904 case EXPRVAL_INVALID:
1908 FIXME(
"Unsupported exprval\n");
2005 if(exprval.
type == EXPRVAL_INVALID)
2649 #define X(x,a,b,c) interp_##x, 2655 #define X(a,x,b,c) x, 2672 ERR(
"Failed to detach variable object: %08x\n",
hres);
2691 IDispatch_Release(frame->
this_obj);
2702 for(frame =
ctx->call_ctx; frame; frame = frame->
prev_frame) {
2710 for(
i=0;
i < frame->
argc;
i++) {
2711 if(i < frame->function->param_cnt)
2718 WARN(
"[detached frame]");
2741 static const WCHAR messageW[] = {
'm',
'e',
's',
's',
'a',
'g',
'e',0};
2770 return exception_hres;
2782 frame->
ip = catch_off ? catch_off : except_frame->
finally_off;
2785 except_val =
ctx->ei.val;
2815 frame =
ctx->call_ctx;
2822 }
else if(frame->
ip == -1) {
2828 if(return_to_interp) {
2835 if(!return_to_interp)
2867 hres = IDispatch_QueryInterface(disp, &IID_IBindEventHandler, (
void**)&
target);
2870 IBindEventHandler_Release(
target);
2872 WARN(
"BindEvent failed: %08x\n",
hres);
2874 FIXME(
"No IBindEventHandler, not yet supported binding\n");
2877 IDispatch_Release(disp);
2883 const unsigned orig_stack =
ctx->stack_top;
2953 scope->
frame = frame;
2965 for(
i = 0;
i <
function->func_cnt;
i++) {
2968 if(!function->funcs[
i].event_target)
2982 for(
i=0;
i <
function->var_cnt;
i++) {
2983 TRACE(
"[%d] %s %d\n",
i,
debugstr_w(function->variables[
i].name), function->variables[
i].func_id);
2984 if(function->variables[
i].func_id != -1) {
2996 hres =
jsdisp_get_id(variable_obj, function->variables[
i].name, fdexNameEnsure, &
id);
3021 frame = heap_alloc_zero(
sizeof(*frame));
3041 frame->
ip =
function->instr_off;
3045 else if(
ctx->host_global)
3051 if(function_instance)
3058 ctx->call_ctx = frame;
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
HRESULT to_uint32(script_ctx_t *, jsval_t, UINT32 *) DECLSPEC_HIDDEN
jsstr_t * jsstr_alloc_len(const WCHAR *buf, unsigned len)
#define DISP_E_UNKNOWNNAME
static jsstr_t * jsstr_alloc(const WCHAR *str)
static HRESULT setup_scope(script_ctx_t *ctx, call_frame_t *frame, scope_chain_t *scope_chain, jsdisp_t *variable_object, unsigned argc, jsval_t *argv)
static const WCHAR * jsstr_flatten(jsstr_t *str)
static HRESULT interp_carray(script_ctx_t *ctx)
except_frame_t * except_frame
void jsval_release(jsval_t val)
static HRESULT exprval_call(script_ctx_t *ctx, exprval_t *ref, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT interp_tonum(script_ctx_t *ctx)
static const WCHAR numberW[]
static HRESULT interp_push_except(script_ctx_t *ctx)
static HRESULT interp_obj_prop(script_ctx_t *ctx)
static void stack_popn(script_ctx_t *ctx, unsigned n)
struct _function_code_t * funcs
static HRESULT interp_memberid(script_ctx_t *ctx)
static HRESULT interp_identid(script_ctx_t *ctx)
jsstr_t * jsstr_concat(jsstr_t *str1, jsstr_t *str2)
static HRESULT detach_variable_object(script_ctx_t *ctx, call_frame_t *frame, BOOL from_release)
struct exprval_t::@427::@428 idref
#define JS_E_FUNCTION_EXPECTED
static void print_backtrace(script_ctx_t *ctx)
jsstr_t * jsstr_undefined(void)
static jsstr_t * get_op_str(script_ctx_t *ctx, int i)
static HRESULT identifier_value(script_ctx_t *ctx, BSTR identifier)
static HRESULT bind_event_target(script_ctx_t *ctx, function_code_t *func, jsdisp_t *func_obj)
static HRESULT stack_pop_object(script_ctx_t *ctx, IDispatch **r)
static jsval_t steal_ret(call_frame_t *frame)
static jsval_t jsval_null(void)
static IDispatch * get_object(jsval_t v)
static jsstr_t * jsstr_addref(jsstr_t *str)
struct _function_code_t::@430 * variables
GLdouble GLdouble GLdouble r
static unsigned local_off(call_frame_t *frame, int ref)
static void pop_call_frame(script_ctx_t *ctx)
static HRESULT interp_typeofident(script_ctx_t *ctx)
static HRESULT interp_xor(script_ctx_t *ctx)
static HRESULT stack_push_string(script_ctx_t *ctx, const WCHAR *str)
const builtin_info_t * builtin_info
void detach_arguments_object(jsdisp_t *) DECLSPEC_HIDDEN
static HRESULT interp_array(script_ctx_t *ctx)
static unsigned get_op_int(script_ctx_t *ctx, int i)
static double get_op_double(script_ctx_t *ctx)
static HRESULT interp_rshift2(script_ctx_t *ctx)
static const WCHAR messageW[]
static HRESULT interp_func(script_ctx_t *ctx)
static HRESULT interp_div(script_ctx_t *ctx)
static BOOL is_undefined(jsval_t v)
static HRESULT interp_add(script_ctx_t *ctx)
static void clear_acc(script_ctx_t *ctx)
static void jmp_abs(script_ctx_t *ctx, unsigned dst)
static HRESULT interp_preinc(script_ctx_t *ctx)
static HRESULT interp_jmp(script_ctx_t *ctx)
static HRESULT interp_delete_ident(script_ctx_t *ctx)
static BOOL is_string(parse_buffer *buf)
static HRESULT stack_push_exprval(script_ctx_t *ctx, exprval_t *val)
static jsval_t stack_topn(script_ctx_t *ctx, unsigned n)
static HRESULT interp_local_ref(script_ctx_t *ctx)
static HRESULT interp_neg(script_ctx_t *ctx)
static HRESULT scope_push(scope_chain_t *scope, jsdisp_t *jsobj, IDispatch *obj, scope_chain_t **ret)
jsdisp_t * function_instance
static HRESULT interp_str(script_ctx_t *ctx)
static void jsstr_release(jsstr_t *str)
function_code_t * function
static void exprval_set_exception(exprval_t *val, HRESULT hres)
static const WCHAR prototypeW[]
static HRESULT interp_cnd_z(script_ctx_t *ctx)
static BOOL is_number(jsval_t v)
void clear_ei(script_ctx_t *ctx)
static HRESULT interp_local(script_ctx_t *ctx)
#define EXEC_RETURN_TO_INTERP
static BOOL is_null_instance(jsval_t v)
static HRESULT interp_double(script_ctx_t *ctx)
struct _scope_chain_t * next
static void * heap_realloc(void *mem, size_t len)
static const WCHAR stringW[]
jsdisp_t * to_jsdisp(IDispatch *disp)
static void * heap_alloc(size_t len)
static HRESULT interp_in(script_ctx_t *ctx)
static HRESULT interp_case(script_ctx_t *ctx)
GLsizei GLsizei GLuint * obj
static HRESULT interp_enter_catch(script_ctx_t *ctx)
static HRESULT exprval_propput(script_ctx_t *ctx, exprval_t *ref, jsval_t v)
static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, const WCHAR *name, BSTR name_bstr, DWORD flags, DISPID *id)
static HRESULT interp_gteq(script_ctx_t *ctx)
static HRESULT interp_null(script_ctx_t *ctx)
static HRESULT interp_eq2(script_ctx_t *ctx)
static scope_chain_t * scope_addref(scope_chain_t *scope)
int jsstr_cmp(jsstr_t *str1, jsstr_t *str2)
HRESULT to_number(script_ctx_t *, jsval_t, double *) DECLSPEC_HIDDEN
#define JS_E_ILLEGAL_ASSIGN
IDispatchEx IDispatchEx_iface
static HRESULT disp_cmp(IDispatch *disp1, IDispatch *disp2, BOOL *ret)
static const WCHAR undefinedW[]
static HRESULT interp_setret(script_ctx_t *ctx)
HRESULT jsval_copy(jsval_t v, jsval_t *r)
static BOOL is_class(jsdisp_t *jsdisp, jsclass_t class)
static jsstr_t * get_string(jsval_t v)
HRESULT(* op_func_t)(script_ctx_t *)
static HRESULT interp_bool(script_ctx_t *ctx)
static const WCHAR desc[]
static BOOL get_bool(D3DXPARAMETER_TYPE type, const void *data)
HRESULT disp_call(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD flags, unsigned argc, jsval_t *argv, jsval_t *ret)
static HRESULT enter_bytecode(script_ctx_t *ctx, jsval_t *r)
static HRESULT to_string(VARIANT *src, BSTR *dst)
static HRESULT interp_delete(script_ctx_t *ctx)
static void scope_pop(scope_chain_t **scope)
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
HRESULT disp_propget(script_ctx_t *ctx, IDispatch *disp, DISPID id, jsval_t *val)
static HRESULT interp_member(script_ctx_t *ctx)
static HRESULT interp_push_acc(script_ctx_t *ctx)
static HRESULT interp_typeofid(script_ctx_t *ctx)
BSTR WINAPI SysAllocString(LPCOLESTR str)
HRESULT to_int32(script_ctx_t *, jsval_t, INT *) DECLSPEC_HIDDEN
static BOOL is_object_instance(jsval_t v)
static HRESULT interp_regexp(script_ctx_t *ctx)
static jsval_t stack_top(script_ctx_t *ctx)
static jsval_t jsval_string(jsstr_t *str)
#define DISPATCH_PROPERTYPUT
static DWORD make_grfdex(script_ctx_t *ctx, DWORD flags)
static HRESULT typeof_string(jsval_t v, const WCHAR **ret)
static HRESULT interp_new(script_ctx_t *ctx)
static unsigned get_op_uint(script_ctx_t *ctx, int i)
static HRESULT interp_void(script_ctx_t *ctx)
static HRESULT interp_eq(script_ctx_t *ctx)
_In_ ULONG _In_ ULONG_PTR ident
static BSTR get_op_bstr(script_ctx_t *ctx, int i)
static void exprval_set_disp_ref(exprval_t *ref, IDispatch *obj, DISPID id)
HRESULT disp_propput(script_ctx_t *ctx, IDispatch *disp, DISPID id, jsval_t val)
HRESULT create_regexp(script_ctx_t *, jsstr_t *, DWORD, jsdisp_t **) DECLSPEC_HIDDEN
static HRESULT interp_sub(script_ctx_t *ctx)
HRESULT jsval_strict_equal(jsval_t lval, jsval_t rval, BOOL *ret)
static HRESULT interp_postinc(script_ctx_t *ctx)
static HRESULT interp_pop(script_ctx_t *ctx)
_Check_return_ double __cdecl fmod(_In_ double x, _In_ double y)
GLboolean GLboolean GLboolean b
enum exprval_t::@426 type
HRESULT exec_source(script_ctx_t *ctx, DWORD flags, bytecode_t *bytecode, function_code_t *function, scope_chain_t *scope, IDispatch *this_obj, jsdisp_t *function_instance, jsdisp_t *variable_obj, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t *desc)
const char * debugstr_jsstr(jsstr_t *str)
static jsval_t jsval_disp(IDispatch *obj)
static jsval_t * stack_top_ref(script_ctx_t *ctx, unsigned n)
static HRESULT interp_throw(script_ctx_t *ctx)
HRESULT jsdisp_propget_name(jsdisp_t *obj, const WCHAR *name, jsval_t *val)
static HRESULT interp_throw_ref(script_ctx_t *ctx)
static HRESULT interp_ret(script_ctx_t *ctx)
struct _call_frame_t * frame
static HRESULT interp_assign_call(script_ctx_t *ctx)
#define JS_E_OBJECT_REQUIRED
static const struct d3drm_matrix identity
static const WCHAR unknownW[]
static HRESULT interp_lshift(script_ctx_t *ctx)
HRESULT to_boolean(jsval_t, BOOL *) DECLSPEC_HIDDEN
static BOOL is_null(jsval_t v)
static HRESULT interp_or(script_ctx_t *ctx)
static jsdisp_t * jsdisp_addref(jsdisp_t *jsdisp)
static HRESULT interp_forin(script_ctx_t *ctx)
static HRESULT interp_pop_scope(script_ctx_t *ctx)
#define JS_E_INVALID_ACTION
static HRESULT interp_and(script_ctx_t *ctx)
static HRESULT interp_call_member(script_ctx_t *ctx)
static VARIANT * get_variant(jsval_t v)
#define JS_E_INVALID_PROPERTY
static HRESULT interp_jmp_z(script_ctx_t *ctx)
static HRESULT less_eval(script_ctx_t *ctx, jsval_t lval, jsval_t rval, BOOL greater, BOOL *ret)
static double get_number(jsval_t v)
static HRESULT interp_mul(script_ctx_t *ctx)
GLint GLint GLsizei GLsizei GLsizei depth
static const unsigned op_move[]
static BOOL stack_pop_exprval(script_ctx_t *ctx, exprval_t *r)
static jsval_type_t jsval_type(jsval_t v)
HRESULT jsdisp_get_id(jsdisp_t *jsdisp, const WCHAR *name, DWORD flags, DISPID *id)
UINT WINAPI SysStringLen(BSTR str)
GLsizei const GLfloat * value
static HRESULT interp_bneg(script_ctx_t *ctx)
HRESULT disp_delete(IDispatch *disp, DISPID id, BOOL *ret)
static HRESULT interp_mod(script_ctx_t *ctx)
static HRESULT interp_typeof(script_ctx_t *ctx)
local_ref_t * lookup_local(const function_code_t *function, const WCHAR *identifier)
static HRESULT interp_minus(script_ctx_t *ctx)
static void exprval_release(exprval_t *val)
static HRESULT interp_refval(script_ctx_t *ctx)
static int __cdecl local_ref_cmp(const void *key, const void *ref)
static IDispatch * to_disp(jsdisp_t *jsdisp)
static HRESULT interp_instanceof(script_ctx_t *ctx)
struct _call_frame_t * prev_frame
static BOOL lookup_global_members(script_ctx_t *ctx, BSTR identifier, exprval_t *ret)
static HRESULT interp_call(script_ctx_t *ctx)
scope_chain_t * base_scope
HRESULT throw_reference_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
jsdisp_t * iface_to_jsdisp(IDispatch *iface)
HRESULT jsdisp_propput_idx(jsdisp_t *obj, DWORD idx, jsval_t val)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
static HRESULT exprval_propget(script_ctx_t *ctx, exprval_t *ref, jsval_t *r)
static jsval_t jsval_undefined(void)
static const WCHAR booleanW[]
static const char * debugstr_variant(const VARIANT *var)
static HRESULT interp_cnd_nz(script_ctx_t *ctx)
static HRESULT interp_neq(script_ctx_t *ctx)
static VARIANTARG static DISPID
static BOOL stack_topn_exprval(script_ctx_t *ctx, unsigned n, exprval_t *r)
static HRESULT unwind_exception(script_ctx_t *ctx, HRESULT exception_hres)
static const WCHAR argumentsW[]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static HRESULT interp_end_finally(script_ctx_t *ctx)
static const WCHAR objectW[]
static HRESULT interp_throw_type(script_ctx_t *ctx)
static HRESULT interp_push_scope(script_ctx_t *ctx)
#define DISPATCH_JSCRIPT_CALLEREXECSSOURCE
static BOOL is_bool(jsval_t v)
static HRESULT interp_rshift(script_ctx_t *ctx)
static HRESULT interp_ident(script_ctx_t *ctx)
static HRESULT interp_neq2(script_ctx_t *ctx)
static HRESULT interp_lteq(script_ctx_t *ctx)
HRESULT create_array(script_ctx_t *ctx, DWORD length, jsdisp_t **ret)
HRESULT create_dispex(script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype, jsdisp_t **dispex)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
static void jsdisp_release(jsdisp_t *jsdisp)
static HRESULT equal_values(script_ctx_t *ctx, jsval_t lval, jsval_t rval, BOOL *ret)
HRESULT create_source_function(script_ctx_t *, bytecode_t *, function_code_t *, scope_chain_t *, jsdisp_t **) DECLSPEC_HIDDEN
static jsval_t jsval_obj(jsdisp_t *obj)
static HRESULT exprval_to_value(script_ctx_t *ctx, exprval_t *ref, jsval_t *r)
static HRESULT interp_new_obj(script_ctx_t *ctx)
void release_bytecode(bytecode_t *code)
static void jmp_next(script_ctx_t *ctx)
static HRESULT identifier_eval(script_ctx_t *ctx, BSTR identifier, exprval_t *ret)
static const op_func_t op_funcs[]
static jsval_t * stack_args(script_ctx_t *ctx, unsigned n)
HRESULT disp_call_value(script_ctx_t *ctx, IDispatch *disp, IDispatch *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
#define JS_E_UNDEFINED_VARIABLE
jsdisp_t * as_jsdisp(IDispatch *disp)
HRESULT to_object(script_ctx_t *, jsval_t, IDispatch **) DECLSPEC_HIDDEN
HRESULT jsdisp_propput_name(jsdisp_t *obj, const WCHAR *name, jsval_t val)
static const WCHAR functionW[]
static HRESULT interp_undefined(script_ctx_t *ctx)
HRESULT create_object(script_ctx_t *, jsdisp_t *, jsdisp_t **) DECLSPEC_HIDDEN
HRESULT throw_type_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
static BOOL jsstr_eq(jsstr_t *left, jsstr_t *right)
static HRESULT interp_assign(script_ctx_t *ctx)
static HRESULT stack_pop_int(script_ctx_t *ctx, INT *r)
static jsval_t jsval_bool(BOOL b)
static HRESULT stack_pop_uint(script_ctx_t *ctx, DWORD *r)
GLuint GLuint GLsizei GLenum type
static HRESULT interp_gt(script_ctx_t *ctx)
static HRESULT interp_carray_set(script_ctx_t *ctx)
static HRESULT stack_pop_number(script_ctx_t *ctx, double *r)
void scope_release(scope_chain_t *scope)
HRESULT setup_arguments_object(script_ctx_t *, call_frame_t *) DECLSPEC_HIDDEN
static jsval_t stack_pop(script_ctx_t *ctx)
static HRESULT interp_pop_except(script_ctx_t *ctx)
static HRESULT add_eval(script_ctx_t *ctx, jsval_t lval, jsval_t rval, jsval_t *ret)
static BSTR local_name(call_frame_t *frame, int ref)
#define PROPF_CONFIGURABLE
#define JS_E_OBJECT_EXPECTED
static HRESULT interp_this(script_ctx_t *ctx)
WINE_DEFAULT_DEBUG_CHANNEL(jscript)
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
static HRESULT interp_identifier_ref(script_ctx_t *ctx, BSTR identifier, unsigned flags)
static HRESULT interp_lt(script_ctx_t *ctx)
HRESULT disp_delete_name(script_ctx_t *ctx, IDispatch *disp, jsstr_t *name, BOOL *ret)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint GLenum GLenum GLenum GLint GLuint GLenum GLenum GLfloat GLenum GLfloat GLenum GLint const GLfloat GLenum GLint const GLushort GLint GLint GLsizei GLsizei GLenum GLsizei GLsizei GLenum GLenum const GLvoid GLenum GLdouble GLenum GLint GLenum GLenum GLint GLenum GLenum GLfloat GLenum GLenum GLfloat GLenum GLfloat GLenum GLushort const GLubyte GLenum GLenum GLenum GLint GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLvoid GLenum GLenum GLint GLenum GLint GLenum GLint GLuint GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble const GLfloat GLenum const GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLint GLint GLsizei GLsizei GLenum GLuint GLenum array
static jsval_t jsval_number(double n)
const char * debugstr_jsval(const jsval_t) DECLSPEC_HIDDEN
static HRESULT stack_push(script_ctx_t *ctx, jsval_t v)
static bytecode_t * bytecode_addref(bytecode_t *code)
static BOOL heap_free(void *mem)
static HRESULT interp_int(script_ctx_t *ctx)
HRESULT to_primitive(script_ctx_t *, jsval_t, jsval_t *, hint_t) DECLSPEC_HIDDEN
GLuint const GLchar * name