⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsinterp.h

📁 java script test programing source code
💻 H
📖 第 1 页 / 共 2 页
字号:
    JSPropertyCacheEntry table[PROPERTY_CACHE_SIZE];    JSBool               empty;    JSBool               disabled;#ifdef JS_PROPERTY_CACHE_METERING    uint32               fills;    uint32               recycles;    uint32               tests;    uint32               misses;    uint32               flushes;# define PCMETER(x)      x#else# define PCMETER(x)      /* nothing */#endif} JSPropertyCache;#define PROPERTY_CACHE_FILL(cache, obj, id, sprop)                            \    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_TEST(cache, obj, id, sprop)                            \    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_MACROextern voidjs_FlushPropertyCache(JSContext *cx);extern voidjs_DisablePropertyCache(JSContext *cx);extern voidjs_EnablePropertyCache(JSContext *cx);extern JS_FRIEND_API(jsval *)js_AllocStack(JSContext *cx, uintN nslots, void **markp);extern JS_FRIEND_API(void)js_FreeStack(JSContext *cx, void *mark);extern JSBooljs_GetArgument(JSContext *cx, JSObject *obj, jsval id, jsval *vp);extern JSBooljs_SetArgument(JSContext *cx, JSObject *obj, jsval id, jsval *vp);extern JSBooljs_GetLocalVariable(JSContext *cx, JSObject *obj, jsval id, jsval *vp);extern JSBooljs_SetLocalVariable(JSContext *cx, JSObject *obj, jsval id, jsval *vp);#ifdef DUMP_CALL_TABLE# define JSOPTION_LOGCALL_TOSOURCE JS_BIT(15)extern JSHashTable  *js_CallTable;extern size_t       js_LogCallToSourceLimit;extern void         js_DumpCallTable(JSContext *cx);#endif/* * Refresh and return fp->scopeChain.  It may be stale if block scopes are * active but not yet reflected by objects in the scope chain.  If a block * scope contains a with, eval, XML filtering predicate, or similar such * dynamically scoped construct, then compile-time block scope at fp->blocks * must reflect at runtime. */extern JSObject *js_GetScopeChain(JSContext *cx, JSStackFrame *fp);/* * Compute the 'this' parameter for a call with nominal 'this' given by thisp * and arguments including argv[-1] (nominal 'this') and argv[-2] (callee). * Activation objects ("Call" objects not created with "new Call()", i.e., * "Call" objects that have private data) may not be referred to by 'this', * per ECMA-262, so js_ComputeThis censors them. */extern JSObject *js_ComputeThis(JSContext *cx, JSObject *thisp, jsval *argv);/* * NB: js_Invoke requires that cx is currently running JS (i.e., that cx->fp * is non-null), and that the callee, |this| parameter, and actual arguments * are already pushed on the stack under cx->fp->sp. */extern JS_FRIEND_API(JSBool)js_Invoke(JSContext *cx, uintN argc, uintN flags);/* * Consolidated js_Invoke flags simply rename certain JSFRAME_* flags, so that * we can share bits stored in JSStackFrame.flags and passed to: * *   js_Invoke *   js_InternalInvoke *   js_ValueToFunction *   js_ValueToFunctionObject *   js_ValueToCallableObject *   js_ReportIsNotFunction * * See jsfun.h for the latter four and flag renaming macros. */#define JSINVOKE_CONSTRUCT      JSFRAME_CONSTRUCTING#define JSINVOKE_INTERNAL       JSFRAME_INTERNAL#define JSINVOKE_SKIP_CALLER    JSFRAME_SKIP_CALLER#define JSINVOKE_ITERATOR       JSFRAME_ITERATOR/* * Mask to isolate construct and iterator flags for use with jsfun.h functions. */#define JSINVOKE_FUNFLAGS       (JSINVOKE_CONSTRUCT | JSINVOKE_ITERATOR)/* * "Internal" calls may come from C or C++ code using a JSContext on which no * JS is running (!cx->fp), so they may need to push a dummy JSStackFrame. */#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)extern JSBooljs_InternalInvoke(JSContext *cx, JSObject *obj, jsval fval, uintN flags,                  uintN argc, jsval *argv, jsval *rval);extern JSBooljs_InternalGetOrSet(JSContext *cx, JSObject *obj, jsid id, jsval fval,                    JSAccessMode mode, uintN argc, jsval *argv, jsval *rval);extern JSBooljs_Execute(JSContext *cx, JSObject *chain, JSScript *script,           JSStackFrame *down, uintN flags, jsval *result);extern JSBooljs_CheckRedeclaration(JSContext *cx, JSObject *obj, jsid id, uintN attrs,                      JSObject **objp, JSProperty **propp);extern JSBooljs_StrictlyEqual(jsval lval, jsval rval);extern JSBooljs_InvokeConstructor(JSContext *cx, jsval *vp, uintN argc);extern JSBooljs_Interpret(JSContext *cx, jsbytecode *pc, jsval *result);JS_END_EXTERN_C#endif /* jsinterp_h___ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -