Sourceforge.net - The VCF's Project Host
   The VCF Website Home   |   Online Discussion Forums   |   Sourceforge.net Project Page   

vcf/JavaScriptKit/js-impl/jsinterp.h File Reference


Classes

struct  JSStackFrame
struct  JSInlineFrame
union  JSPropertyCacheEntry
struct  JSPropertyCache

Defines

#define JSFRAME_CONSTRUCTING   0x01
#define JSFRAME_INTERNAL   0x02
#define JSFRAME_SKIP_CALLER   0x04
#define JSFRAME_ASSIGNING   0x08
#define JSFRAME_DEBUGGER   0x10
#define JSFRAME_EVAL   0x20
#define JSFRAME_SPECIAL   0x30
#define JSFRAME_COMPILING   0x40
#define JSFRAME_COMPILE_N_GO   0x80
#define JSFRAME_SCRIPT_OBJECT   0x100
#define JSFRAME_YIELDING   0x200
#define JSFRAME_FILTERING   0x400
#define JSFRAME_ITERATOR   0x800
#define JSFRAME_POP_BLOCKS   0x1000
#define JSFRAME_GENERATOR   0x2000
#define JSFRAME_OVERRIDE_SHIFT   24
#define JSFRAME_OVERRIDE_BITS   8
#define PROPERTY_CACHE_LOG2   10
#define PROPERTY_CACHE_SIZE   JS_BIT(PROPERTY_CACHE_LOG2)
#define PROPERTY_CACHE_MASK   JS_BITMASK(PROPERTY_CACHE_LOG2)
#define PROPERTY_CACHE_HASH(obj, id)   ((((jsuword)(obj) >> JSVAL_TAGBITS) ^ (jsuword)(id)) & PROPERTY_CACHE_MASK)
#define PCE_LOAD(cache, pce, entry)   ((entry) = *(pce))
#define PCE_STORE(cache, pce, entry)   (*(pce) = (entry))
#define PCE_OBJECT(entry)   ((entry).s.object)
#define PCE_PROPERTY(entry)   ((entry).s.property)
#define PCMETER(x)
#define PROPERTY_CACHE_FILL(cache, obj, id, sprop)
#define PROPERTY_CACHE_TEST(cache, obj, id, sprop)
#define JSINVOKE_CONSTRUCT   JSFRAME_CONSTRUCTING
#define JSINVOKE_INTERNAL   JSFRAME_INTERNAL
#define JSINVOKE_SKIP_CALLER   JSFRAME_SKIP_CALLER
#define JSINVOKE_ITERATOR   JSFRAME_ITERATOR
#define JSINVOKE_FUNFLAGS   (JSINVOKE_CONSTRUCT | JSINVOKE_ITERATOR)
#define js_InternalCall(cx, obj, fval, argc, argv, rval)   js_InternalInvoke(cx, obj, fval, 0, argc, argv, rval)
#define js_InternalConstruct(cx, obj, fval, argc, argv, rval)   js_InternalInvoke(cx, obj, fval, JSINVOKE_CONSTRUCT, argc, argv, rval)

Functions

void js_FlushPropertyCache (JSContext *cx)
void js_DisablePropertyCache (JSContext *cx)
void js_EnablePropertyCache (JSContext *cx)
 JS_FRIEND_API (jsval *) js_AllocStack(JSContext *cx
 JS_FRIEND_API (void) js_FreeStack(JSContext *cx
JSBool js_GetArgument (JSContext *cx, JSObject *obj, jsval id, jsval *vp)
JSBool js_SetArgument (JSContext *cx, JSObject *obj, jsval id, jsval *vp)
JSBool js_GetLocalVariable (JSContext *cx, JSObject *obj, jsval id, jsval *vp)
JSBool js_SetLocalVariable (JSContext *cx, JSObject *obj, jsval id, jsval *vp)
JSObjectjs_GetScopeChain (JSContext *cx, JSStackFrame *fp)
JSObjectjs_ComputeThis (JSContext *cx, JSObject *thisp, jsval *argv)
 JS_FRIEND_API (JSBool) js_Invoke(JSContext *cx
JSBool js_InternalInvoke (JSContext *cx, JSObject *obj, jsval fval, uintN flags, uintN argc, jsval *argv, jsval *rval)
JSBool js_InternalGetOrSet (JSContext *cx, JSObject *obj, jsid id, jsval fval, JSAccessMode mode, uintN argc, jsval *argv, jsval *rval)
JSBool js_Execute (JSContext *cx, JSObject *chain, JSScript *script, JSStackFrame *down, uintN flags, jsval *result)
JSBool js_CheckRedeclaration (JSContext *cx, JSObject *obj, jsid id, uintN attrs, JSObject **objp, JSProperty **propp)
JSBool js_StrictlyEqual (jsval lval, jsval rval)
JSBool js_InvokeConstructor (JSContext *cx, jsval *vp, uintN argc)
JSBool js_Interpret (JSContext *cx, jsbytecode *pc, jsval *result)

Variables

uintN nslots
uintN void ** markp
void * mark
uintN argc
uintN uintN flags

Define Documentation

#define js_InternalCall cx,
obj,
fval,
argc,
argv,
rval   )     js_InternalInvoke(cx, obj, fval, 0, argc, argv, rval)
 

#define js_InternalConstruct cx,
obj,
fval,
argc,
argv,
rval   )     js_InternalInvoke(cx, obj, fval, JSINVOKE_CONSTRUCT, argc, argv, rval)
 

#define JSFRAME_ASSIGNING   0x08
 

#define JSFRAME_COMPILE_N_GO   0x80
 

#define JSFRAME_COMPILING   0x40
 

#define JSFRAME_CONSTRUCTING   0x01
 

#define JSFRAME_DEBUGGER   0x10
 

#define JSFRAME_EVAL   0x20
 

#define JSFRAME_FILTERING   0x400
 

#define JSFRAME_GENERATOR   0x2000
 

#define JSFRAME_INTERNAL   0x02
 

#define JSFRAME_ITERATOR   0x800
 

#define JSFRAME_OVERRIDE_BITS   8
 

#define JSFRAME_OVERRIDE_SHIFT   24
 

#define JSFRAME_POP_BLOCKS   0x1000
 

#define JSFRAME_SCRIPT_OBJECT   0x100
 

#define JSFRAME_SKIP_CALLER   0x04
 

#define JSFRAME_SPECIAL   0x30
 

#define JSFRAME_YIELDING   0x200
 

#define JSINVOKE_CONSTRUCT   JSFRAME_CONSTRUCTING
 

#define JSINVOKE_FUNFLAGS   (JSINVOKE_CONSTRUCT | JSINVOKE_ITERATOR)
 

#define JSINVOKE_INTERNAL   JSFRAME_INTERNAL
 

#define JSINVOKE_ITERATOR   JSFRAME_ITERATOR
 

#define JSINVOKE_SKIP_CALLER   JSFRAME_SKIP_CALLER
 

#define PCE_LOAD cache,
pce,
entry   )     ((entry) = *(pce))
 

#define PCE_OBJECT entry   )     ((entry).s.object)
 

#define PCE_PROPERTY entry   )     ((entry).s.property)
 

#define PCE_STORE cache,
pce,
entry   )     (*(pce) = (entry))
 

#define PCMETER  ) 
 

#define PROPERTY_CACHE_FILL cache,
obj,
id,
sprop   ) 
 

Value:

JS_BEGIN_MACRO                                                            \
        JSPropertyCache *cache_ = (cache);                                    \
        if (!cache_->disabled) {                                              \
            uintN hashIndex_ = (uintN) PROPERTY_CACHE_HASH(obj, id);          \
            JSPropertyCacheEntry *pce_ = &cache_->table[hashIndex_];          \
            JSPropertyCacheEntry entry_;                                      \
            JSScopeProperty *pce_sprop_;                                      \
            PCE_LOAD(cache_, pce_, entry_);                                   \
            pce_sprop_ = PCE_PROPERTY(entry_);                                \
            PCMETER(if (pce_sprop_ && pce_sprop_ != sprop)                    \
                        cache_->recycles++);                                  \
            PCE_OBJECT(entry_) = obj;                                         \
            PCE_PROPERTY(entry_) = sprop;                                     \
            cache_->empty = JS_FALSE;                                         \
            PCMETER(cache_->fills++);                                         \
            PCE_STORE(cache_, pce_, entry_);                                  \
        }                                                                     \
    JS_END_MACRO

#define PROPERTY_CACHE_HASH obj,
id   )     ((((jsuword)(obj) >> JSVAL_TAGBITS) ^ (jsuword)(id)) & PROPERTY_CACHE_MASK)
 

#define PROPERTY_CACHE_LOG2   10
 

#define PROPERTY_CACHE_MASK   JS_BITMASK(PROPERTY_CACHE_LOG2)
 

#define PROPERTY_CACHE_SIZE   JS_BIT(PROPERTY_CACHE_LOG2)
 

#define PROPERTY_CACHE_TEST cache,
obj,
id,
sprop   ) 
 

Value:

JS_BEGIN_MACRO                                                            \
        uintN hashIndex_ = (uintN) PROPERTY_CACHE_HASH(obj, id);              \
        JSPropertyCache *cache_ = (cache);                                    \
        JSPropertyCacheEntry *pce_ = &cache_->table[hashIndex_];              \
        JSPropertyCacheEntry entry_;                                          \
        JSScopeProperty *pce_sprop_;                                          \
        PCE_LOAD(cache_, pce_, entry_);                                       \
        pce_sprop_ = PCE_PROPERTY(entry_);                                    \
        PCMETER(cache_->tests++);                                             \
        if (pce_sprop_ &&                                                     \
            PCE_OBJECT(entry_) == obj &&                                      \
            pce_sprop_->id == id) {                                           \
            sprop = pce_sprop_;                                               \
        } else {                                                              \
            PCMETER(cache_->misses++);                                        \
            sprop = NULL;                                                     \
        }                                                                     \
    JS_END_MACRO


Function Documentation

JSBool js_CheckRedeclaration JSContext cx,
JSObject obj,
jsid  id,
uintN  attrs,
JSObject **  objp,
JSProperty **  propp
 

JSObject* js_ComputeThis JSContext cx,
JSObject thisp,
jsval argv
 

void js_DisablePropertyCache JSContext cx  ) 
 

void js_EnablePropertyCache JSContext cx  ) 
 

JSBool js_Execute JSContext cx,
JSObject chain,
JSScript script,
JSStackFrame down,
uintN  flags,
jsval result
 

void js_FlushPropertyCache JSContext cx  ) 
 

JS_FRIEND_API JSBool   ) 
 

JS_FRIEND_API void   ) 
 

JS_FRIEND_API jsval  ) 
 

JSBool js_GetArgument JSContext cx,
JSObject obj,
jsval  id,
jsval vp
 

JSBool js_GetLocalVariable JSContext cx,
JSObject obj,
jsval  id,
jsval vp
 

JSObject* js_GetScopeChain JSContext cx,
JSStackFrame fp
 

JSBool js_InternalGetOrSet JSContext cx,
JSObject obj,
jsid  id,
jsval  fval,
JSAccessMode  mode,
uintN  argc,
jsval argv,
jsval rval
 

JSBool js_InternalInvoke JSContext cx,
JSObject obj,
jsval  fval,
uintN  flags,
uintN  argc,
jsval argv,
jsval rval
 

JSBool js_Interpret JSContext cx,
jsbytecode pc,
jsval result
 

JSBool js_InvokeConstructor JSContext cx,
jsval vp,
uintN  argc
 

JSBool js_SetArgument JSContext cx,
JSObject obj,
jsval  id,
jsval vp
 

JSBool js_SetLocalVariable JSContext cx,
JSObject obj,
jsval  id,
jsval vp
 

JSBool js_StrictlyEqual jsval  lval,
jsval  rval
 


Variable Documentation

uintN argc
 

uintN uintN flags
 

void* mark
 

uintN void** markp
 

uintN nslots
 

   Comments or Suggestions?    License Information