Classes | Defines | Typedefs | Enumerations | Functions | Variables

jsfun.h File Reference

#include "jsprvtd.h"
#include "jspubtd.h"
#include "jsobj.h"
Include dependency graph for jsfun.h:
This graph shows which files directly or indirectly include this file:

Classes

union  JSLocalNames
struct  JSFunction

Defines

#define JSFUN_EXPR_CLOSURE   0x1000
#define JSFUN_TRCINFO   0x2000
#define JSFUN_INTERPRETED   0x4000
#define JSFUN_FLAT_CLOSURE   0x8000
#define JSFUN_NULL_CLOSURE   0xc000
#define JSFUN_KINDMASK   0xc000
#define FUN_OBJECT(fun)   (static_cast<JSObject *>(fun))
#define FUN_KIND(fun)   ((fun)->flags & JSFUN_KINDMASK)
#define FUN_SET_KIND(fun, k)   ((fun)->flags = ((fun)->flags & ~JSFUN_KINDMASK) | (k))
#define FUN_INTERPRETED(fun)   (FUN_KIND(fun) >= JSFUN_INTERPRETED)
#define FUN_FLAT_CLOSURE(fun)   (FUN_KIND(fun) == JSFUN_FLAT_CLOSURE)
#define FUN_NULL_CLOSURE(fun)   (FUN_KIND(fun) == JSFUN_NULL_CLOSURE)
#define FUN_SLOW_NATIVE(fun)   (!FUN_INTERPRETED(fun) && !((fun)->flags & JSFUN_FAST_NATIVE))
#define FUN_SCRIPT(fun)   (FUN_INTERPRETED(fun) ? (fun)->u.i.script : NULL)
#define FUN_NATIVE(fun)   (FUN_SLOW_NATIVE(fun) ? (fun)->u.n.native : NULL)
#define FUN_FAST_NATIVE(fun)
#define FUN_MINARGS(fun)
#define FUN_CLASP(fun)
#define FUN_TRCINFO(fun)
#define JS_TN(name, fastcall, nargs, flags, trcinfo)
#define HAS_FUNCTION_CLASS(obj)   (obj)->isFunction()
#define VALUE_IS_FUNCTION(cx, v)   (!JSVAL_IS_PRIMITIVE(v) && HAS_FUNCTION_CLASS(JSVAL_TO_OBJECT(v)))
#define GET_FUNCTION_PRIVATE(cx, funobj)
#define JSV2F_CONSTRUCT   JSINVOKE_CONSTRUCT
#define JSV2F_ITERATOR   JSINVOKE_ITERATOR
#define JSV2F_SEARCH_STACK   0x10000
#define JS_LOCAL_NAME_TO_ATOM(nameWord)   ((JSAtom *) ((nameWord) & ~(jsuword) 1))
#define JS_LOCAL_NAME_IS_CONST(nameWord)   ((((nameWord) & (jsuword) 1)) != 0)

Typedefs

typedef struct JSLocalNameMap JSLocalNameMap
typedef union JSLocalNames JSLocalNames
typedef enum JSLocalKind JSLocalKind

Enumerations

enum  JSLocalKind {
  JSLOCAL_NONE, JSLOCAL_ARG, JSLOCAL_VAR, JSLOCAL_CONST,
  JSLOCAL_UPVAR
}

Functions

bool js_IsInternalFunctionObject (JSObject *funobj)
js_ArgsPrivateNative * js_GetArgsPrivateNative (JSObject *argsobj)
JSObjectjs_InitFunctionClass (JSContext *cx, JSObject *obj)
JSObjectjs_InitArgumentsClass (JSContext *cx, JSObject *obj)
JSFunctionjs_NewFunction (JSContext *cx, JSObject *funobj, JSNative native, uintN nargs, uintN flags, JSObject *parent, JSAtom *atom)
void js_TraceFunction (JSTracer *trc, JSFunction *fun)
void js_FinalizeFunction (JSContext *cx, JSFunction *fun)
JSObjectjs_CloneFunctionObject (JSContext *cx, JSFunction *fun, JSObject *parent)
JSObjectjs_NewFlatClosure (JSContext *cx, JSFunction *fun)
JSObjectjs_NewDebuggableFlatClosure (JSContext *cx, JSFunction *fun)
JSFunctionjs_DefineFunction (JSContext *cx, JSObject *obj, JSAtom *atom, JSNative native, uintN nargs, uintN flags)
JSFunctionjs_ValueToFunction (JSContext *cx, jsval *vp, uintN flags)
JSObjectjs_ValueToFunctionObject (JSContext *cx, jsval *vp, uintN flags)
JSObjectjs_ValueToCallableObject (JSContext *cx, jsval *vp, uintN flags)
void js_ReportIsNotFunction (JSContext *cx, jsval *vp, uintN flags)
JSObjectjs_GetCallObject (JSContext *cx, JSStackFrame *fp)
void js_PutCallObject (JSContext *cx, JSStackFrame *fp)
JSFunctionjs_GetCallObjectFunction (JSObject *obj)
JSBool js_GetCallArg (JSContext *cx, JSObject *obj, jsid id, jsval *vp)
JSBool js_GetCallVar (JSContext *cx, JSObject *obj, jsid id, jsval *vp)
JSBool SetCallArg (JSContext *cx, JSObject *obj, jsid id, jsval *vp)
JSBool SetCallVar (JSContext *cx, JSObject *obj, jsid id, jsval *vp)
JSBool js_SetCallArg (JSContext *cx, JSObject *obj, jsid id, jsval v)
JSBool js_SetCallVar (JSContext *cx, JSObject *obj, jsid id, jsval v)
JSBool js_GetCallVarChecked (JSContext *cx, JSObject *obj, jsid id, jsval *vp)
JSBool js_GetArgsValue (JSContext *cx, JSStackFrame *fp, jsval *vp)
JSBool js_GetArgsProperty (JSContext *cx, JSStackFrame *fp, jsid id, jsval *vp)
JSObjectjs_GetArgsObject (JSContext *cx, JSStackFrame *fp)
void js_PutArgsObject (JSContext *cx, JSStackFrame *fp)
void js_static_assert (int arg[((((JSUint32) 1<< (24))-1)<=((JSUint32) 1<< (30)))?1:-1])
void js_static_assert (int arg[(jsval(((((JSUint32) 1<< (24))-1)<< 1)|1)<=JSVAL_INT_MAX)?1:-1])
bool js_IsOverriddenArgsLength (JSObject *obj)
JSBool js_XDRFunctionObject (JSXDRState *xdr, JSObject **objp)
JSBool js_AddLocal (JSContext *cx, JSFunction *fun, JSAtom *atom, JSLocalKind kind)
JSLocalKind js_LookupLocal (JSContext *cx, JSFunction *fun, JSAtom *atom, uintN *indexp)
jsuwordjs_GetLocalNameArray (JSContext *cx, JSFunction *fun, struct JSArenaPool *pool)
void js_FreezeLocalNames (JSContext *cx, JSFunction *fun)
JSBool js_fun_apply (JSContext *cx, uintN argc, jsval *vp)
JSBool js_fun_call (JSContext *cx, uintN argc, jsval *vp)

Variables

JSClass js_ArgumentsClass
JSClass js_CallClass
JSClass js_DeclEnvClass
const uint32 CALL_CLASS_FIXED_RESERVED_SLOTS
JSClass js_FunctionClass
const uint32 JSSLOT_ARGS_LENGTH = JSSLOT_PRIVATE + 1
const uint32 JSSLOT_ARGS_CALLEE = JSSLOT_PRIVATE + 2
const uint32 JSSLOT_ARGS_COPY_START = JSSLOT_PRIVATE + 3
const uint32 ARGS_CLASS_FIXED_RESERVED_SLOTS

Define Documentation

#define FUN_CLASP (   fun  ) 
Value:
(JS_ASSERT(!FUN_INTERPRETED(fun)),               \
                              fun->u.n.clasp)
#define FUN_FAST_NATIVE (   fun  ) 
Value:
(((fun)->flags & JSFUN_FAST_NATIVE)              \
                              ? (JSFastNative) (fun)->u.n.native              \
                              : NULL)
#define FUN_FLAT_CLOSURE (   fun  )     (FUN_KIND(fun) == JSFUN_FLAT_CLOSURE)
#define FUN_INTERPRETED (   fun  )     (FUN_KIND(fun) >= JSFUN_INTERPRETED)
#define FUN_KIND (   fun  )     ((fun)->flags & JSFUN_KINDMASK)
#define FUN_MINARGS (   fun  ) 
Value:
(((fun)->flags & JSFUN_FAST_NATIVE)              \
                              ? 0                                             \
                              : (fun)->nargs)
#define FUN_NATIVE (   fun  )     (FUN_SLOW_NATIVE(fun) ? (fun)->u.n.native : NULL)
#define FUN_NULL_CLOSURE (   fun  )     (FUN_KIND(fun) == JSFUN_NULL_CLOSURE)
#define FUN_OBJECT (   fun  )     (static_cast<JSObject *>(fun))
#define FUN_SCRIPT (   fun  )     (FUN_INTERPRETED(fun) ? (fun)->u.i.script : NULL)
#define FUN_SET_KIND (   fun,
  k 
)    ((fun)->flags = ((fun)->flags & ~JSFUN_KINDMASK) | (k))
#define FUN_SLOW_NATIVE (   fun  )     (!FUN_INTERPRETED(fun) && !((fun)->flags & JSFUN_FAST_NATIVE))
#define FUN_TRCINFO (   fun  ) 
Value:
(JS_ASSERT(!FUN_INTERPRETED(fun)),               \
                              JS_ASSERT((fun)->flags & JSFUN_TRCINFO),        \
                              fun->u.n.trcinfo)
#define GET_FUNCTION_PRIVATE (   cx,
  funobj 
)
Value:
(JS_ASSERT(HAS_FUNCTION_CLASS(funobj)),                                   \
     (JSFunction *) (funobj)->getPrivate())
#define HAS_FUNCTION_CLASS (   obj  )     (obj)->isFunction()
#define JS_LOCAL_NAME_IS_CONST (   nameWord  )     ((((nameWord) & (jsuword) 1)) != 0)
#define JS_LOCAL_NAME_TO_ATOM (   nameWord  )     ((JSAtom *) ((nameWord) & ~(jsuword) 1))
#define JS_TN (   name,
  fastcall,
  nargs,
  flags,
  trcinfo 
)
#define JSFUN_EXPR_CLOSURE   0x1000
#define JSFUN_FLAT_CLOSURE   0x8000
#define JSFUN_INTERPRETED   0x4000
#define JSFUN_KINDMASK   0xc000
#define JSFUN_NULL_CLOSURE   0xc000
#define JSFUN_TRCINFO   0x2000
#define JSV2F_CONSTRUCT   JSINVOKE_CONSTRUCT
#define JSV2F_ITERATOR   JSINVOKE_ITERATOR
#define JSV2F_SEARCH_STACK   0x10000
#define VALUE_IS_FUNCTION (   cx,
  v 
)    (!JSVAL_IS_PRIMITIVE(v) && HAS_FUNCTION_CLASS(JSVAL_TO_OBJECT(v)))

Typedef Documentation

typedef enum JSLocalKind JSLocalKind
typedef union JSLocalNames JSLocalNames

Enumeration Type Documentation

Enumerator:
JSLOCAL_NONE 
JSLOCAL_ARG 
JSLOCAL_VAR 
JSLOCAL_CONST 
JSLOCAL_UPVAR 

Function Documentation

JSBool js_AddLocal ( JSContext cx,
JSFunction fun,
JSAtom atom,
JSLocalKind  kind 
)
JSObject* js_CloneFunctionObject ( JSContext cx,
JSFunction fun,
JSObject parent 
)
JSFunction* js_DefineFunction ( JSContext cx,
JSObject obj,
JSAtom atom,
JSNative  native,
uintN  nargs,
uintN  flags 
)
void js_FinalizeFunction ( JSContext cx,
JSFunction fun 
)
void js_FreezeLocalNames ( JSContext cx,
JSFunction fun 
)
JSBool js_fun_apply ( JSContext cx,
uintN  argc,
jsval vp 
)
JSBool js_fun_call ( JSContext cx,
uintN  argc,
jsval vp 
)
JSObject* js_GetArgsObject ( JSContext cx,
JSStackFrame fp 
)
js_ArgsPrivateNative* js_GetArgsPrivateNative ( JSObject argsobj  )  [inline]
JSBool js_GetArgsProperty ( JSContext cx,
JSStackFrame fp,
jsid  id,
jsval vp 
)
JSBool js_GetArgsValue ( JSContext cx,
JSStackFrame fp,
jsval vp 
)
JSBool js_GetCallArg ( JSContext cx,
JSObject obj,
jsid  id,
jsval vp 
)
JSObject* js_GetCallObject ( JSContext cx,
JSStackFrame fp 
)
JSFunction* js_GetCallObjectFunction ( JSObject obj  ) 
JSBool js_GetCallVar ( JSContext cx,
JSObject obj,
jsid  id,
jsval vp 
)
JSBool js_GetCallVarChecked ( JSContext cx,
JSObject obj,
jsid  id,
jsval vp 
)
jsuword* js_GetLocalNameArray ( JSContext cx,
JSFunction fun,
struct JSArenaPool pool 
)
JSObject* js_InitArgumentsClass ( JSContext cx,
JSObject obj 
)
JSObject* js_InitFunctionClass ( JSContext cx,
JSObject obj 
)
bool js_IsInternalFunctionObject ( JSObject funobj  )  [inline]
bool js_IsOverriddenArgsLength ( JSObject obj  )  [inline]
JSLocalKind js_LookupLocal ( JSContext cx,
JSFunction fun,
JSAtom atom,
uintN indexp 
)
JSObject* js_NewDebuggableFlatClosure ( JSContext cx,
JSFunction fun 
)
JSObject* js_NewFlatClosure ( JSContext cx,
JSFunction fun 
)
JSFunction* js_NewFunction ( JSContext cx,
JSObject funobj,
JSNative  native,
uintN  nargs,
uintN  flags,
JSObject parent,
JSAtom atom 
)
void js_PutArgsObject ( JSContext cx,
JSStackFrame fp 
)
void js_PutCallObject ( JSContext cx,
JSStackFrame fp 
)
void js_ReportIsNotFunction ( JSContext cx,
jsval vp,
uintN  flags 
)
JSBool js_SetCallArg ( JSContext cx,
JSObject obj,
jsid  id,
jsval  v 
)
JSBool js_SetCallVar ( JSContext cx,
JSObject obj,
jsid  id,
jsval  v 
)
void js_static_assert ( int  arg[(jsval(((((JSUint32) 1<< (24))-1)<< 1)|1)<=JSVAL_INT_MAX)?1:-1]  ) 
void js_static_assert ( int  arg[((((JSUint32) 1<< (24))-1)<=((JSUint32) 1<< (30)))?1:-1]  ) 
void js_TraceFunction ( JSTracer trc,
JSFunction fun 
)
JSObject* js_ValueToCallableObject ( JSContext cx,
jsval vp,
uintN  flags 
)
JSFunction* js_ValueToFunction ( JSContext cx,
jsval vp,
uintN  flags 
)
JSObject* js_ValueToFunctionObject ( JSContext cx,
jsval vp,
uintN  flags 
)
JSBool js_XDRFunctionObject ( JSXDRState xdr,
JSObject **  objp 
)
JSBool SetCallArg ( JSContext cx,
JSObject obj,
jsid  id,
jsval vp 
)
JSBool SetCallVar ( JSContext cx,
JSObject obj,
jsid  id,
jsval vp 
)

Variable Documentation