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

📄 jscntxt.h

📁 Swfdec still is development software, but has also followed a rigid no-crashes-allowed policy. I b
💻 H
📖 第 1 页 / 共 2 页
字号:
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla Communicator client code, released * March 31, 1998. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */#ifndef jscntxt_h___#define jscntxt_h___/* * JS execution context. */#include "jsarena.h" /* Added by JSIFY */#include "jsclist.h"#include "jslong.h"#include "jsatom.h"#include "jsconfig.h"#include "jsdhash.h"#include "jsgc.h"#include "jsinterp.h"#include "jsobj.h"#include "jsprvtd.h"#include "jspubtd.h"#include "jsregexp.h"JS_BEGIN_EXTERN_Ctypedef enum JSGCMode { JS_NO_GC, JS_MAYBE_GC, JS_FORCE_GC } JSGCMode;typedef enum JSRuntimeState {    JSRTS_DOWN,    JSRTS_LAUNCHING,    JSRTS_UP,    JSRTS_LANDING} JSRuntimeState;typedef struct JSPropertyTreeEntry {    JSDHashEntryHdr     hdr;    JSScopeProperty     *child;} JSPropertyTreeEntry;struct JSRuntime {    /* Runtime state, synchronized by the stateChange/gcLock condvar/lock. */    JSRuntimeState      state;    /* Garbage collector state, used by jsgc.c. */    JSArenaPool         gcArenaPool;    JSDHashTable        gcRootsHash;    JSDHashTable        *gcLocksHash;    JSGCThing           *gcFreeList;    jsrefcount          gcKeepAtoms;    uint32              gcBytes;    uint32              gcLastBytes;    uint32              gcMaxBytes;    uint32              gcLevel;    uint32              gcNumber;    JSPackedBool        gcPoke;    JSPackedBool        gcRunning;    JSGCCallback        gcCallback;    uint32              gcMallocBytes;#ifdef JS_GCMETER    JSGCStats           gcStats;#endif    /* Literal table maintained by jsatom.c functions. */    JSAtomState         atomState;    /* Random number generator state, used by jsmath.c. */    JSBool              rngInitialized;    int64               rngMultiplier;    int64               rngAddend;    int64               rngMask;    int64               rngSeed;    jsdouble            rngDscale;    /* Well-known numbers held for use by this runtime's contexts. */    jsdouble            *jsNaN;    jsdouble            *jsNegativeInfinity;    jsdouble            *jsPositiveInfinity;    /* Empty string held for use by this runtime's contexts. */    JSString            *emptyString;    /* List of active contexts sharing this runtime; protected by gcLock. */    JSCList             contextList;    /* These are used for debugging -- see jsprvtd.h and jsdbgapi.h. */    JSTrapHandler       interruptHandler;    void                *interruptHandlerData;    JSNewScriptHook     newScriptHook;    void                *newScriptHookData;    JSDestroyScriptHook destroyScriptHook;    void                *destroyScriptHookData;    JSTrapHandler       debuggerHandler;    void                *debuggerHandlerData;    JSSourceHandler     sourceHandler;    void                *sourceHandlerData;    JSInterpreterHook   executeHook;    void                *executeHookData;    JSInterpreterHook   callHook;    void                *callHookData;    JSObjectHook        objectHook;    void                *objectHookData;    JSTrapHandler       throwHook;    void                *throwHookData;    JSDebugErrorHook    debugErrorHook;    void                *debugErrorHookData;    /* More debugging state, see jsdbgapi.c. */    JSCList             trapList;    JSCList             watchPointList;    /* Weak links to properties, indexed by quickened get/set opcodes. */    /* XXX must come after JSCLists or MSVC alignment bug bites empty lists */    JSPropertyCache     propertyCache;    /* Client opaque pointer */    void                *data;#ifdef JS_THREADSAFE    /* These combine to interlock the GC and new requests. */    PRLock              *gcLock;    PRCondVar           *gcDone;    PRCondVar           *requestDone;    uint32              requestCount;    jsword              gcThread;    /* Lock and owning thread pointer for JS_LOCK_RUNTIME. */    PRLock              *rtLock;#ifdef DEBUG    jsword              rtLockOwner;#endif    /* Used to synchronize down/up state change; protected by gcLock. */    PRCondVar           *stateChange;    /* Used to serialize cycle checks when setting __proto__ or __parent__. */    PRLock              *setSlotLock;    PRCondVar           *setSlotDone;    JSBool              setSlotBusy;    JSScope             *setSlotScope;  /* deadlock avoidance, see jslock.c */    /*     * State for sharing single-threaded scopes, once a second thread tries to     * lock a scope.  The scopeSharingDone condvar is protected by rt->gcLock,     * to minimize number of locks taken in JS_EndRequest.     *     * The scopeSharingTodo linked list is likewise "global" per runtime, not     * one-list-per-context, to conserve space over all contexts, optimizing     * for the likely case that scopes become shared rarely, and among a very     * small set of threads (contexts).     */    PRCondVar           *scopeSharingDone;    JSScope             *scopeSharingTodo;/* * Magic terminator for the rt->scopeSharingTodo linked list, threaded through * scope->u.link.  This hack allows us to test whether a scope is on the list * by asking whether scope->u.link is non-null.  We use a large, likely bogus * pointer here to distinguish this value from any valid u.count (small int) * value. */#define NO_SCOPE_SHARING_TODO   ((JSScope *) 0xfeedbeef)#endif /* JS_THREADSAFE */    /*     * Check property accessibility for objects of arbitrary class.  Used at     * present to check f.caller accessibility for any function object f.     */    JSCheckAccessOp     checkObjectAccess;    /* Security principals serialization support. */    JSPrincipalsTranscoder principalsTranscoder;    /* Shared scope property tree, and allocator for its nodes. */    JSDHashTable        propertyTreeHash;    JSScopeProperty     *propertyFreeList;    JSArenaPool         propertyArenaPool;    /* Script filename table. */    struct JSHashTable  *scriptFilenameTable;#ifdef JS_THREADSAFE    PRLock              *scriptFilenameTableLock;#endif#ifdef DEBUG    /* Function invocation metering. */    jsrefcount          inlineCalls;    jsrefcount          nativeCalls;    jsrefcount          nonInlineCalls;    jsrefcount          constructs;    /* Scope lock and property metering. */    jsrefcount          claimAttempts;    jsrefcount          claimedScopes;    jsrefcount          deadContexts;    jsrefcount          deadlocksAvoided;    jsrefcount          liveScopes;    jsrefcount          sharedScopes;    jsrefcount          totalScopes;    jsrefcount          badUndependStrings;    jsrefcount          liveScopeProps;    jsrefcount          totalScopeProps;    jsrefcount          livePropTreeNodes;    jsrefcount          duplicatePropTreeNodes;    jsrefcount          totalPropTreeNodes;    jsrefcount          propTreeKidsChunks;    jsrefcount          middleDeleteFixups;    /* String instrumentation. */    jsrefcount          liveStrings;    jsrefcount          totalStrings;    jsrefcount          liveDependentStrings;    jsrefcount          totalDependentStrings;    double              lengthSum;    double              lengthSquaredSum;    double              strdepLengthSum;    double              strdepLengthSquaredSum;#endif};

⌨️ 快捷键说明

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