js/jsd/jsdebug.cpp

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
     2  * vim: set ts=8 sts=4 et sw=4 tw=99:
     3  * This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 /*
     8  * JavaScript Debugging support - All public functions
     9  */
    11 #include "jsd.h"
    13 /***************************************************************************/
    14 /* High Level calls */
    16 JSD_PUBLIC_API(JSDContext*)
    17 JSD_DebuggerOnForUser(JSRuntime*         jsrt,
    18                       JSD_UserCallbacks* callbacks,
    19                       void*              user)
    20 {
    21     return jsd_DebuggerOnForUser(jsrt, callbacks, user, nullptr);
    22 }
    24 JSD_PUBLIC_API(JSDContext*)
    25 JSD_DebuggerOn(void)
    26 {
    27     return jsd_DebuggerOn();
    28 }
    30 JSD_PUBLIC_API(void)
    31 JSD_DebuggerOff(JSDContext* jsdc)
    32 {
    33     JSD_ASSERT_VALID_CONTEXT(jsdc);
    34     jsd_DebuggerOff(jsdc);
    35 }
    37 JSD_PUBLIC_API(void)
    38 JSD_DebuggerPause(JSDContext* jsdc)
    39 {
    40     JSD_ASSERT_VALID_CONTEXT(jsdc);
    41     jsd_DebuggerPause(jsdc, false);
    42 }
    44 JSD_PUBLIC_API(void)
    45 JSD_DebuggerUnpause(JSDContext* jsdc)
    46 {
    47     JSD_ASSERT_VALID_CONTEXT(jsdc);
    48     jsd_DebuggerUnpause(jsdc);
    49 }
    51 JSD_PUBLIC_API(unsigned)
    52 JSD_GetMajorVersion(void)
    53 {
    54     return JSD_MAJOR_VERSION;
    55 }
    57 JSD_PUBLIC_API(unsigned)
    58 JSD_GetMinorVersion(void)
    59 {
    60     return JSD_MINOR_VERSION;
    61 }
    63 JSD_PUBLIC_API(JSObject*)
    64 JSD_GetDefaultGlobal(JSDContext* jsdc)
    65 {
    66     JSD_ASSERT_VALID_CONTEXT(jsdc);
    67     return jsdc->glob;
    68 }
    70 JSD_PUBLIC_API(JSRuntime*)
    71 JSD_GetJSRuntime(JSDContext* jsdc)
    72 {
    73     JSD_ASSERT_VALID_CONTEXT(jsdc);
    74     return jsdc->jsrt;
    75 }
    77 JSD_PUBLIC_API(void)
    78 JSD_SetUserCallbacks(JSRuntime* jsrt, JSD_UserCallbacks* callbacks, void* user)
    79 {
    80     jsd_SetUserCallbacks(jsrt, callbacks, user);
    81 }
    83 JSD_PUBLIC_API(void)
    84 JSD_JSContextInUse(JSDContext* jsdc, JSContext* context)
    85 {
    86     JSD_ASSERT_VALID_CONTEXT(jsdc);
    87     /* we no longer need this information - may need it again in the future */
    88 }
    90 JSD_PUBLIC_API(void *)
    91 JSD_SetContextPrivate(JSDContext *jsdc, void *data)
    92 {
    93     JSD_ASSERT_VALID_CONTEXT(jsdc);
    94     return jsd_SetContextPrivate (jsdc, data);
    95 }
    97 JSD_PUBLIC_API(void *)
    98 JSD_GetContextPrivate(JSDContext *jsdc)
    99 {
   100     JSD_ASSERT_VALID_CONTEXT(jsdc);
   101     return jsd_GetContextPrivate (jsdc);
   102 }
   104 JSD_PUBLIC_API(void)
   105 JSD_ClearAllProfileData(JSDContext *jsdc)
   106 {
   107     JSD_ASSERT_VALID_CONTEXT(jsdc);
   108     jsd_ClearAllProfileData(jsdc);    
   109 }
   111 JSD_PUBLIC_API(void)
   112 JSD_SetContextFlags(JSDContext *jsdc, uint32_t flags)
   113 {
   114     JSD_ASSERT_VALID_CONTEXT(jsdc);
   115     jsdc->flags = flags;
   116     if (flags & JSD_COLLECT_PROFILE_DATA) {
   117         /* Need to reenable our call hooks now */
   118         JS_SetExecuteHook(jsdc->jsrt, jsd_TopLevelCallHook, jsdc);
   119         JS_SetCallHook(jsdc->jsrt, jsd_FunctionCallHook, jsdc);
   120     }
   121 }
   123 JSD_PUBLIC_API(uint32_t)
   124 JSD_GetContextFlags(JSDContext *jsdc)
   125 {
   126     JSD_ASSERT_VALID_CONTEXT(jsdc);
   127     return jsdc->flags;
   128 }
   130 JSD_PUBLIC_API(JSDContext*)
   131 JSD_JSDContextForJSContext(JSContext* context)
   132 {
   133     return jsd_JSDContextForJSContext(context);
   134 }
   136 /***************************************************************************/
   137 /* Script functions */
   139 JSD_PUBLIC_API(void)
   140 JSD_LockScriptSubsystem(JSDContext* jsdc)
   141 {
   142     JSD_ASSERT_VALID_CONTEXT(jsdc);
   143     JSD_LOCK_SCRIPTS(jsdc);
   144 }
   146 JSD_PUBLIC_API(void)
   147 JSD_UnlockScriptSubsystem(JSDContext* jsdc)
   148 {
   149     JSD_ASSERT_VALID_CONTEXT(jsdc);
   150     JSD_UNLOCK_SCRIPTS(jsdc);
   151 }
   153 JSD_PUBLIC_API(JSDScript*)
   154 JSD_IterateScripts(JSDContext* jsdc, JSDScript **iterp)
   155 {
   156     JSD_ASSERT_VALID_CONTEXT(jsdc);
   157     return jsd_IterateScripts(jsdc, iterp);
   158 }
   160 JSD_PUBLIC_API(uint32_t)
   161 JSD_GetScriptFlags(JSDContext *jsdc, JSDScript *script)
   162 {
   163     JSD_ASSERT_VALID_CONTEXT(jsdc);
   164     return jsd_GetScriptFlags(jsdc, script);
   165 }
   167 JSD_PUBLIC_API(void)
   168 JSD_SetScriptFlags(JSDContext *jsdc, JSDScript *script, uint32_t flags)
   169 {
   170     JSD_ASSERT_VALID_CONTEXT(jsdc);
   171     jsd_SetScriptFlags(jsdc, script, flags);
   172 }
   174 JSD_PUBLIC_API(unsigned)
   175 JSD_GetScriptCallCount(JSDContext* jsdc, JSDScript *script)
   176 {
   177     JSD_ASSERT_VALID_CONTEXT(jsdc);
   178     return jsd_GetScriptCallCount(jsdc, script);
   179 }
   181 JSD_PUBLIC_API(unsigned)
   182 JSD_GetScriptMaxRecurseDepth(JSDContext* jsdc, JSDScript *script)
   183 {
   184     JSD_ASSERT_VALID_CONTEXT(jsdc);
   185     return jsd_GetScriptMaxRecurseDepth(jsdc, script);
   186 }
   189 JSD_PUBLIC_API(double)
   190 JSD_GetScriptMinExecutionTime(JSDContext* jsdc, JSDScript *script)
   191 {
   192     JSD_ASSERT_VALID_CONTEXT(jsdc);
   193     return jsd_GetScriptMinExecutionTime(jsdc, script);
   194 }
   196 JSD_PUBLIC_API(double)
   197 JSD_GetScriptMaxExecutionTime(JSDContext* jsdc, JSDScript *script)
   198 {
   199     JSD_ASSERT_VALID_CONTEXT(jsdc);
   200     return jsd_GetScriptMaxExecutionTime(jsdc, script);
   201 }
   203 JSD_PUBLIC_API(double)
   204 JSD_GetScriptTotalExecutionTime(JSDContext* jsdc, JSDScript *script)
   205 {
   206     JSD_ASSERT_VALID_CONTEXT(jsdc);
   207     return jsd_GetScriptTotalExecutionTime(jsdc, script);
   208 }
   210 JSD_PUBLIC_API(double)
   211 JSD_GetScriptMinOwnExecutionTime(JSDContext* jsdc, JSDScript *script)
   212 {
   213     JSD_ASSERT_VALID_CONTEXT(jsdc);
   214     return jsd_GetScriptMinOwnExecutionTime(jsdc, script);
   215 }
   217 JSD_PUBLIC_API(double)
   218 JSD_GetScriptMaxOwnExecutionTime(JSDContext* jsdc, JSDScript *script)
   219 {
   220     JSD_ASSERT_VALID_CONTEXT(jsdc);
   221     return jsd_GetScriptMaxOwnExecutionTime(jsdc, script);
   222 }
   224 JSD_PUBLIC_API(double)
   225 JSD_GetScriptTotalOwnExecutionTime(JSDContext* jsdc, JSDScript *script)
   226 {
   227     JSD_ASSERT_VALID_CONTEXT(jsdc);
   228     return jsd_GetScriptTotalOwnExecutionTime(jsdc, script);
   229 }
   231 JSD_PUBLIC_API(void)
   232 JSD_ClearScriptProfileData(JSDContext* jsdc, JSDScript *script)
   233 {
   234     JSD_ASSERT_VALID_CONTEXT(jsdc);
   235     jsd_ClearScriptProfileData(jsdc, script);
   236 }
   238 JSD_PUBLIC_API(JSScript*)
   239 JSD_GetJSScript(JSDContext* jsdc, JSDScript *script)
   240 {
   241     return jsd_GetJSScript(jsdc, script);
   242 }
   244 JSD_PUBLIC_API(JSFunction*)
   245 JSD_GetJSFunction(JSDContext* jsdc, JSDScript *script)
   246 {
   247     return jsd_GetJSFunction (jsdc, script);
   248 }
   250 JSD_PUBLIC_API(void *)
   251 JSD_SetScriptPrivate(JSDScript *jsdscript, void *data)
   252 {
   253     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   254     return jsd_SetScriptPrivate (jsdscript, data);
   255 }
   257 JSD_PUBLIC_API(void *)
   258 JSD_GetScriptPrivate(JSDScript *jsdscript)
   259 {
   260     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   261     return jsd_GetScriptPrivate (jsdscript);
   262 }
   265 JSD_PUBLIC_API(bool)
   266 JSD_IsActiveScript(JSDContext* jsdc, JSDScript *jsdscript)
   267 {
   268     JSD_ASSERT_VALID_CONTEXT(jsdc);
   269     return jsd_IsActiveScript(jsdc, jsdscript);
   270 }
   272 JSD_PUBLIC_API(const char*)
   273 JSD_GetScriptFilename(JSDContext* jsdc, JSDScript *jsdscript)
   274 {
   275     JSD_ASSERT_VALID_CONTEXT(jsdc);
   276     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   277     return jsd_GetScriptFilename(jsdc, jsdscript);
   278 }
   280 JSD_PUBLIC_API(JSString *)
   281 JSD_GetScriptFunctionId(JSDContext* jsdc, JSDScript *jsdscript)
   282 {
   283     JSD_ASSERT_VALID_CONTEXT(jsdc);
   284     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   285     return jsd_GetScriptFunctionId(jsdc, jsdscript);
   286 }
   288 JSD_PUBLIC_API(unsigned)
   289 JSD_GetScriptBaseLineNumber(JSDContext* jsdc, JSDScript *jsdscript)
   290 {
   291     JSD_ASSERT_VALID_CONTEXT(jsdc);
   292     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   293     return jsd_GetScriptBaseLineNumber(jsdc, jsdscript);
   294 }
   296 JSD_PUBLIC_API(unsigned)
   297 JSD_GetScriptLineExtent(JSDContext* jsdc, JSDScript *jsdscript)
   298 {
   299     JSD_ASSERT_VALID_CONTEXT(jsdc);
   300     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   301     return jsd_GetScriptLineExtent(jsdc, jsdscript);
   302 }
   304 JSD_PUBLIC_API(bool)
   305 JSD_SetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc hook, void* callerdata)
   306 {
   307     JSD_ASSERT_VALID_CONTEXT(jsdc);
   308     return jsd_SetScriptHook(jsdc, hook, callerdata);
   309 }
   311 JSD_PUBLIC_API(bool)
   312 JSD_GetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc* hook, void** callerdata)
   313 {
   314     JSD_ASSERT_VALID_CONTEXT(jsdc);
   315     return jsd_GetScriptHook(jsdc, hook, callerdata);
   316 }
   318 JSD_PUBLIC_API(uintptr_t)
   319 JSD_GetClosestPC(JSDContext* jsdc, JSDScript* jsdscript, unsigned line)
   320 {
   321     JSD_ASSERT_VALID_CONTEXT(jsdc);
   322     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   323     return jsd_GetClosestPC(jsdc, jsdscript, line);
   324 }
   326 JSD_PUBLIC_API(unsigned)
   327 JSD_GetClosestLine(JSDContext* jsdc, JSDScript* jsdscript, uintptr_t pc)
   328 {
   329     JSD_ASSERT_VALID_CONTEXT(jsdc);
   330     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   331     return jsd_GetClosestLine(jsdc, jsdscript, pc);
   332 }
   334 JSD_PUBLIC_API(bool)
   335 JSD_GetLinePCs(JSDContext* jsdc, JSDScript* jsdscript,
   336                unsigned startLine, unsigned maxLines,
   337                unsigned* count, unsigned** lines, uintptr_t** pcs)
   338 {
   339     JSD_ASSERT_VALID_CONTEXT(jsdc);
   340     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   341     return jsd_GetLinePCs(jsdc, jsdscript, startLine, maxLines, count, lines, pcs);
   342 }
   344 JSD_PUBLIC_API(void)
   345 JSD_ScriptCreated(JSDContext* jsdc,
   346                   JSContext   *cx,
   347                   const char  *filename,    /* URL this script loads from */
   348                   unsigned       lineno,       /* line where this script starts */
   349                   JSScript    *script,
   350                   JSFunction  *fun)
   351 {
   352     JSD_ASSERT_VALID_CONTEXT(jsdc);
   353     jsd_ScriptCreated(jsdc, cx, filename, lineno, script, fun);
   354 }
   356 JSD_PUBLIC_API(void)
   357 JSD_ScriptDestroyed(JSDContext* jsdc,
   358                     JSFreeOp    *fop,
   359                     JSScript    *script)
   360 {
   361     JSD_ASSERT_VALID_CONTEXT(jsdc);
   362     jsd_ScriptDestroyed(jsdc, fop, script);
   363 }
   365 /***************************************************************************/
   366 /* Source Text functions */
   368 JSD_PUBLIC_API(void)
   369 JSD_LockSourceTextSubsystem(JSDContext* jsdc)
   370 {
   371     JSD_ASSERT_VALID_CONTEXT(jsdc);
   372     JSD_LOCK_SOURCE_TEXT(jsdc);
   373 }
   375 JSD_PUBLIC_API(void)
   376 JSD_UnlockSourceTextSubsystem(JSDContext* jsdc)
   377 {
   378     JSD_ASSERT_VALID_CONTEXT(jsdc);
   379     JSD_UNLOCK_SOURCE_TEXT(jsdc);
   380 }
   382 JSD_PUBLIC_API(JSDSourceText*)
   383 JSD_IterateSources(JSDContext* jsdc, JSDSourceText **iterp)
   384 {
   385     JSD_ASSERT_VALID_CONTEXT(jsdc);
   386     return jsd_IterateSources(jsdc, iterp);
   387 }
   389 JSD_PUBLIC_API(JSDSourceText*)
   390 JSD_FindSourceForURL(JSDContext* jsdc, const char* url)
   391 {
   392     JSD_ASSERT_VALID_CONTEXT(jsdc);
   393     MOZ_ASSERT(url);
   394     return jsd_FindSourceForURL(jsdc, url);
   395 }
   397 JSD_PUBLIC_API(const char*)
   398 JSD_GetSourceURL(JSDContext* jsdc, JSDSourceText* jsdsrc)
   399 {
   400     JSD_ASSERT_VALID_CONTEXT(jsdc);
   401     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   402     return jsd_GetSourceURL(jsdc,jsdsrc);
   403 }
   405 JSD_PUBLIC_API(bool)
   406 JSD_GetSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc,
   407                   const char** ppBuf, int* pLen)
   408 {
   409     JSD_ASSERT_VALID_CONTEXT(jsdc);
   410     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   411     MOZ_ASSERT(ppBuf);
   412     MOZ_ASSERT(pLen);
   413     return jsd_GetSourceText(jsdc, jsdsrc, ppBuf, pLen);
   414 }
   416 JSD_PUBLIC_API(void)
   417 JSD_ClearSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc)
   418 {
   419     JSD_ASSERT_VALID_CONTEXT(jsdc);
   420     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   421     jsd_ClearSourceText(jsdc, jsdsrc);
   422 }
   425 JSD_PUBLIC_API(JSDSourceStatus)
   426 JSD_GetSourceStatus(JSDContext* jsdc, JSDSourceText* jsdsrc)
   427 {
   428     JSD_ASSERT_VALID_CONTEXT(jsdc);
   429     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   430     return jsd_GetSourceStatus(jsdc, jsdsrc);
   431 }
   433 JSD_PUBLIC_API(bool)
   434 JSD_IsSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc)
   435 {
   436     JSD_ASSERT_VALID_CONTEXT(jsdc);
   437     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   438     return jsd_IsSourceDirty(jsdc, jsdsrc);
   439 }
   441 JSD_PUBLIC_API(void)
   442 JSD_SetSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc, bool dirty)
   443 {
   444     JSD_ASSERT_VALID_CONTEXT(jsdc);
   445     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   446     jsd_SetSourceDirty(jsdc, jsdsrc, dirty);
   447 }
   449 JSD_PUBLIC_API(unsigned)
   450 JSD_GetSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc)
   451 {
   452     JSD_ASSERT_VALID_CONTEXT(jsdc);
   453     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   454     return jsd_GetSourceAlterCount(jsdc, jsdsrc);
   455 }
   457 JSD_PUBLIC_API(unsigned)
   458 JSD_IncrementSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc)
   459 {
   460     JSD_ASSERT_VALID_CONTEXT(jsdc);
   461     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   462     return jsd_IncrementSourceAlterCount(jsdc, jsdsrc);
   463 }
   465 JSD_PUBLIC_API(void)
   466 JSD_DestroyAllSources( JSDContext* jsdc )
   467 {
   468     JSD_ASSERT_VALID_CONTEXT(jsdc);
   469     jsd_DestroyAllSources(jsdc);
   470 }
   472 JSD_PUBLIC_API(JSDSourceText*)
   473 JSD_NewSourceText(JSDContext* jsdc, const char* url)
   474 {
   475     JSD_ASSERT_VALID_CONTEXT(jsdc);
   476     MOZ_ASSERT(url);
   477     return jsd_NewSourceText(jsdc, url);
   478 }
   480 JSD_PUBLIC_API(JSDSourceText*)
   481 JSD_AppendSourceText(JSDContext* jsdc,
   482                      JSDSourceText* jsdsrc,
   483                      const char* text,       /* *not* zero terminated */
   484                      size_t length,
   485                      JSDSourceStatus status)
   486 {
   487     JSD_ASSERT_VALID_CONTEXT(jsdc);
   488     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   489     return jsd_AppendSourceText(jsdc, jsdsrc, text, length, status);
   490 }
   492 extern JSD_PUBLIC_API(JSDSourceText*)
   493 JSD_AppendUCSourceText(JSDContext*     jsdc,
   494                        JSDSourceText*  jsdsrc,
   495                        const jschar*   text,       /* *not* zero terminated */
   496                        size_t          length,
   497                        JSDSourceStatus status)
   498 {
   499     JSD_ASSERT_VALID_CONTEXT(jsdc);
   500     JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
   501     return jsd_AppendUCSourceText(jsdc, jsdsrc, text, length, status);
   502 }
   504 JSD_PUBLIC_API(bool)
   505 JSD_AddFullSourceText(JSDContext* jsdc,
   506                       const char* text,       /* *not* zero terminated */
   507                       size_t      length,
   508                       const char* url)
   509 {
   510     JSD_ASSERT_VALID_CONTEXT(jsdc);
   511     MOZ_ASSERT(url);
   512     return jsd_AddFullSourceText(jsdc, text, length, url);
   513 }
   515 /***************************************************************************/
   516 /* Execution/Interrupt Hook functions */
   518 JSD_PUBLIC_API(bool)
   519 JSD_SetExecutionHook(JSDContext*           jsdc,
   520                      JSDScript*            jsdscript,
   521                      uintptr_t             pc,
   522                      JSD_ExecutionHookProc hook,
   523                      void*                 callerdata)
   524 {
   525     JSD_ASSERT_VALID_CONTEXT(jsdc);
   526     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   527     return jsd_SetExecutionHook(jsdc, jsdscript, pc, hook, callerdata);
   528 }
   530 JSD_PUBLIC_API(bool)
   531 JSD_ClearExecutionHook(JSDContext*           jsdc,
   532                        JSDScript*            jsdscript,
   533                        uintptr_t             pc)
   534 {
   535     JSD_ASSERT_VALID_CONTEXT(jsdc);
   536     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   537     return jsd_ClearExecutionHook(jsdc, jsdscript, pc);
   538 }
   540 JSD_PUBLIC_API(bool)
   541 JSD_ClearAllExecutionHooksForScript(JSDContext* jsdc, JSDScript* jsdscript)
   542 {
   543     JSD_ASSERT_VALID_CONTEXT(jsdc);
   544     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   545     return jsd_ClearAllExecutionHooksForScript(jsdc, jsdscript);
   546 }
   548 JSD_PUBLIC_API(bool)
   549 JSD_ClearAllExecutionHooks(JSDContext* jsdc)
   550 {
   551     JSD_ASSERT_VALID_CONTEXT(jsdc);
   552     return jsd_ClearAllExecutionHooks(jsdc);
   553 }
   555 JSD_PUBLIC_API(bool)
   556 JSD_SetInterruptHook(JSDContext*           jsdc,
   557                      JSD_ExecutionHookProc hook,
   558                      void*                 callerdata)
   559 {
   560     JSD_ASSERT_VALID_CONTEXT(jsdc);
   561     return jsd_SetInterruptHook(jsdc, hook, callerdata);
   562 }
   564 JSD_PUBLIC_API(bool)
   565 JSD_EnableSingleStepInterrupts(JSDContext* jsdc, JSDScript* jsdscript, bool enable)
   566 {
   567     JSD_ASSERT_VALID_CONTEXT(jsdc);
   568     JSD_ASSERT_VALID_SCRIPT(jsdscript);
   569     return jsd_EnableSingleStepInterrupts(jsdc, jsdscript, enable);
   570 }
   572 JSD_PUBLIC_API(bool)
   573 JSD_ClearInterruptHook(JSDContext* jsdc)
   574 {
   575     JSD_ASSERT_VALID_CONTEXT(jsdc);
   576     return jsd_ClearInterruptHook(jsdc);
   577 }
   579 JSD_PUBLIC_API(bool)
   580 JSD_SetDebugBreakHook(JSDContext*           jsdc,
   581                       JSD_ExecutionHookProc hook,
   582                       void*                 callerdata)
   583 {
   584     JSD_ASSERT_VALID_CONTEXT(jsdc);
   585     return jsd_SetDebugBreakHook(jsdc, hook, callerdata);
   586 }
   588 JSD_PUBLIC_API(bool)
   589 JSD_ClearDebugBreakHook(JSDContext* jsdc)
   590 {
   591     JSD_ASSERT_VALID_CONTEXT(jsdc);
   592     return jsd_ClearDebugBreakHook(jsdc);
   593 }
   595 JSD_PUBLIC_API(bool)
   596 JSD_SetDebuggerHook(JSDContext*           jsdc,
   597                     JSD_ExecutionHookProc hook,
   598                     void*                 callerdata)
   599 {
   600     JSD_ASSERT_VALID_CONTEXT(jsdc);
   601     return jsd_SetDebuggerHook(jsdc, hook, callerdata);
   602 }
   604 JSD_PUBLIC_API(bool)
   605 JSD_ClearDebuggerHook(JSDContext* jsdc)
   606 {
   607     JSD_ASSERT_VALID_CONTEXT(jsdc);
   608     return jsd_ClearDebuggerHook(jsdc);
   609 }
   611 JSD_PUBLIC_API(bool)
   612 JSD_SetThrowHook(JSDContext*           jsdc,
   613                  JSD_ExecutionHookProc hook,
   614                  void*                 callerdata)
   615 {
   616     JSD_ASSERT_VALID_CONTEXT(jsdc);
   617     return jsd_SetThrowHook(jsdc, hook, callerdata);
   618 }
   620 JSD_PUBLIC_API(bool)
   621 JSD_ClearThrowHook(JSDContext* jsdc)
   622 {
   623     JSD_ASSERT_VALID_CONTEXT(jsdc);
   624     return jsd_ClearThrowHook(jsdc);
   625 }
   627 JSD_PUBLIC_API(bool)
   628 JSD_SetTopLevelHook(JSDContext*      jsdc,
   629                     JSD_CallHookProc hook,
   630                     void*            callerdata)
   631 {
   632     JSD_ASSERT_VALID_CONTEXT(jsdc);
   633     return jsd_SetTopLevelHook(jsdc, hook, callerdata);
   634 }
   636 JSD_PUBLIC_API(bool)
   637 JSD_ClearTopLevelHook(JSDContext* jsdc)
   638 {
   639     JSD_ASSERT_VALID_CONTEXT(jsdc);
   640     return jsd_ClearTopLevelHook(jsdc);
   641 }
   643 JSD_PUBLIC_API(bool)
   644 JSD_SetFunctionHook(JSDContext*      jsdc,
   645                     JSD_CallHookProc hook,
   646                     void*            callerdata)
   647 {
   648     JSD_ASSERT_VALID_CONTEXT(jsdc);
   649     return jsd_SetFunctionHook(jsdc, hook, callerdata);
   650 }
   652 JSD_PUBLIC_API(bool)
   653 JSD_ClearFunctionHook(JSDContext* jsdc)
   654 {
   655     JSD_ASSERT_VALID_CONTEXT(jsdc);
   656     return jsd_ClearFunctionHook(jsdc);
   657 }
   659 /***************************************************************************/
   660 /* Stack Frame functions */
   662 JSD_PUBLIC_API(unsigned)
   663 JSD_GetCountOfStackFrames(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
   664 {
   665     JSD_ASSERT_VALID_CONTEXT(jsdc);
   666     return jsd_GetCountOfStackFrames(jsdc, jsdthreadstate);
   667 }
   669 JSD_PUBLIC_API(JSDStackFrameInfo*)
   670 JSD_GetStackFrame(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
   671 {
   672     JSD_ASSERT_VALID_CONTEXT(jsdc);
   673     return jsd_GetStackFrame(jsdc, jsdthreadstate);
   674 }
   676 JSD_PUBLIC_API(JSContext*)
   677 JSD_GetJSContext(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
   678 {
   679     JSD_ASSERT_VALID_CONTEXT(jsdc);
   680     return jsd_GetJSContext(jsdc, jsdthreadstate);
   681 }
   683 JSD_PUBLIC_API(JSDStackFrameInfo*)
   684 JSD_GetCallingStackFrame(JSDContext* jsdc,
   685                          JSDThreadState* jsdthreadstate,
   686                          JSDStackFrameInfo* jsdframe)
   687 {
   688     JSD_ASSERT_VALID_CONTEXT(jsdc);
   689     return jsd_GetCallingStackFrame(jsdc, jsdthreadstate, jsdframe);
   690 }
   692 JSD_PUBLIC_API(JSDScript*)
   693 JSD_GetScriptForStackFrame(JSDContext* jsdc,
   694                            JSDThreadState* jsdthreadstate,
   695                            JSDStackFrameInfo* jsdframe)
   696 {
   697     JSD_ASSERT_VALID_CONTEXT(jsdc);
   698     return jsd_GetScriptForStackFrame(jsdc, jsdthreadstate, jsdframe);
   699 }
   701 JSD_PUBLIC_API(uintptr_t)
   702 JSD_GetPCForStackFrame(JSDContext* jsdc,
   703                        JSDThreadState* jsdthreadstate,
   704                        JSDStackFrameInfo* jsdframe)
   705 {
   706     JSD_ASSERT_VALID_CONTEXT(jsdc);
   707     return jsd_GetPCForStackFrame(jsdc, jsdthreadstate, jsdframe);
   708 }
   710 JSD_PUBLIC_API(JSDValue*)
   711 JSD_GetCallObjectForStackFrame(JSDContext* jsdc,
   712                                JSDThreadState* jsdthreadstate,
   713                                JSDStackFrameInfo* jsdframe)
   714 {
   715     JSD_ASSERT_VALID_CONTEXT(jsdc);
   716     return jsd_GetCallObjectForStackFrame(jsdc, jsdthreadstate, jsdframe);
   717 }
   719 JSD_PUBLIC_API(JSDValue*)
   720 JSD_GetScopeChainForStackFrame(JSDContext* jsdc,
   721                                JSDThreadState* jsdthreadstate,
   722                                JSDStackFrameInfo* jsdframe)
   723 {
   724     JSD_ASSERT_VALID_CONTEXT(jsdc);
   725     return jsd_GetScopeChainForStackFrame(jsdc, jsdthreadstate, jsdframe);
   726 }
   728 JSD_PUBLIC_API(JSDValue*)
   729 JSD_GetThisForStackFrame(JSDContext* jsdc,
   730                          JSDThreadState* jsdthreadstate,
   731                          JSDStackFrameInfo* jsdframe)
   732 {
   733     JSD_ASSERT_VALID_CONTEXT(jsdc);
   734     return jsd_GetThisForStackFrame(jsdc, jsdthreadstate, jsdframe);
   735 }
   737 JSD_PUBLIC_API(JSString *)
   738 JSD_GetIdForStackFrame(JSDContext* jsdc,
   739                        JSDThreadState* jsdthreadstate,
   740                        JSDStackFrameInfo* jsdframe)
   741 {
   742     JSD_ASSERT_VALID_CONTEXT(jsdc);
   743     return jsd_GetIdForStackFrame(jsdc, jsdthreadstate, jsdframe);
   744 }
   746 JSD_PUBLIC_API(bool)
   747 JSD_IsStackFrameDebugger(JSDContext* jsdc,
   748                          JSDThreadState* jsdthreadstate,
   749                          JSDStackFrameInfo* jsdframe)
   750 {
   751     JSD_ASSERT_VALID_CONTEXT(jsdc);
   752     return jsd_IsStackFrameDebugger(jsdc, jsdthreadstate, jsdframe);
   753 }
   755 JSD_PUBLIC_API(bool)
   756 JSD_IsStackFrameConstructing(JSDContext* jsdc,
   757                              JSDThreadState* jsdthreadstate,
   758                              JSDStackFrameInfo* jsdframe)
   759 {
   760     JSD_ASSERT_VALID_CONTEXT(jsdc);
   761     return jsd_IsStackFrameConstructing(jsdc, jsdthreadstate, jsdframe);
   762 }
   764 JSD_PUBLIC_API(bool)
   765 JSD_EvaluateUCScriptInStackFrame(JSDContext* jsdc,
   766                                  JSDThreadState* jsdthreadstate,
   767                                  JSDStackFrameInfo* jsdframe,
   768                                  const jschar *bytes, unsigned length,
   769                                  const char *filename, unsigned lineno, JS::MutableHandleValue rval)
   770 {
   771     JSD_ASSERT_VALID_CONTEXT(jsdc);
   772     MOZ_ASSERT(bytes);
   773     MOZ_ASSERT(length);
   774     MOZ_ASSERT(filename);
   776     return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
   777                                             bytes, length, filename, lineno,
   778                                             true, rval);
   779 }
   781 JSD_PUBLIC_API(bool)
   782 JSD_AttemptUCScriptInStackFrame(JSDContext* jsdc,
   783                                 JSDThreadState* jsdthreadstate,
   784                                 JSDStackFrameInfo* jsdframe,
   785                                 const jschar *bytes, unsigned length,
   786                                 const char *filename, unsigned lineno,
   787                                 JS::MutableHandleValue rval)
   788 {
   789     JSD_ASSERT_VALID_CONTEXT(jsdc);
   790     MOZ_ASSERT(bytes);
   791     MOZ_ASSERT(length);
   792     MOZ_ASSERT(filename);
   794     return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
   795                                             bytes, length, filename, lineno,
   796                                             false, rval);
   797 }
   799 JSD_PUBLIC_API(bool)
   800 JSD_EvaluateScriptInStackFrame(JSDContext* jsdc,
   801                                JSDThreadState* jsdthreadstate,
   802                                JSDStackFrameInfo* jsdframe,
   803                                const char *bytes, unsigned length,
   804                                const char *filename, unsigned lineno, JS::MutableHandleValue rval)
   805 {
   806     JSD_ASSERT_VALID_CONTEXT(jsdc);
   807     MOZ_ASSERT(bytes);
   808     MOZ_ASSERT(length);
   809     MOZ_ASSERT(filename);
   811     return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
   812                                           bytes, length,
   813                                           filename, lineno, true, rval);
   814 }
   816 JSD_PUBLIC_API(bool)
   817 JSD_AttemptScriptInStackFrame(JSDContext* jsdc,
   818                               JSDThreadState* jsdthreadstate,
   819                               JSDStackFrameInfo* jsdframe,
   820                               const char *bytes, unsigned length,
   821                               const char *filename, unsigned lineno, JS::MutableHandleValue rval)
   822 {
   823     JSD_ASSERT_VALID_CONTEXT(jsdc);
   824     MOZ_ASSERT(bytes);
   825     MOZ_ASSERT(length);
   826     MOZ_ASSERT(filename);
   828     return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
   829                                           bytes, length,
   830                                           filename, lineno, false, rval);
   831 }
   833 JSD_PUBLIC_API(JSString*)
   834 JSD_ValToStringInStackFrame(JSDContext* jsdc,
   835                             JSDThreadState* jsdthreadstate,
   836                             JSDStackFrameInfo* jsdframe,
   837                             jsval val)
   838 {
   839     JSD_ASSERT_VALID_CONTEXT(jsdc);
   840     return jsd_ValToStringInStackFrame(jsdc, jsdthreadstate, jsdframe, val);
   841 }
   843 JSD_PUBLIC_API(JSDValue*)
   844 JSD_GetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
   845 {
   846     JSD_ASSERT_VALID_CONTEXT(jsdc);
   847     return jsd_GetException(jsdc, jsdthreadstate);
   848 }
   850 extern JSD_PUBLIC_API(bool)
   851 JSD_SetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate,
   852                  JSDValue* jsdval)
   853 {
   854     JSD_ASSERT_VALID_CONTEXT(jsdc);
   855     return jsd_SetException(jsdc, jsdthreadstate, jsdval);
   856 }
   858 /***************************************************************************/
   860 JSD_PUBLIC_API(bool)
   861 JSD_SetErrorReporter(JSDContext*       jsdc,
   862                      JSD_ErrorReporter reporter,
   863                      void*             callerdata)
   864 {
   865     JSD_ASSERT_VALID_CONTEXT(jsdc);
   866     return jsd_SetErrorReporter(jsdc, reporter, callerdata);
   867 }
   869 JSD_PUBLIC_API(bool)
   870 JSD_GetErrorReporter(JSDContext*        jsdc,
   871                      JSD_ErrorReporter* reporter,
   872                      void**             callerdata)
   873 {
   874     JSD_ASSERT_VALID_CONTEXT(jsdc);
   875     return jsd_GetErrorReporter(jsdc, reporter, callerdata);
   876 }
   878 /***************************************************************************/
   880 JSD_PUBLIC_API(bool)
   881 JSD_IsLockingAndThreadIdSupported()
   882 {
   883 #ifdef JSD_THREADSAFE
   884     return true;
   885 #else
   886     return false;
   887 #endif
   888 }
   890 JSD_PUBLIC_API(JSDStaticLock*)
   891 JSD_CreateLock()
   892 {
   893 #ifdef JSD_THREADSAFE
   894     return jsd_CreateLock();
   895 #else
   896     return (void*)1;
   897 #endif
   898 }
   900 JSD_PUBLIC_API(void)
   901 JSD_Lock(JSDStaticLock* lock)
   902 {
   903 #ifdef JSD_THREADSAFE
   904     jsd_Lock(lock);
   905 #endif
   906 }
   908 JSD_PUBLIC_API(void)
   909 JSD_Unlock(JSDStaticLock* lock)
   910 {
   911 #ifdef JSD_THREADSAFE
   912     jsd_Unlock(lock);
   913 #endif
   914 }
   916 JSD_PUBLIC_API(bool)
   917 JSD_IsLocked(JSDStaticLock* lock)
   918 {
   919 #if defined(JSD_THREADSAFE) && defined(DEBUG)
   920     return jsd_IsLocked(lock);
   921 #else
   922     return true;
   923 #endif
   924 }
   926 JSD_PUBLIC_API(bool)
   927 JSD_IsUnlocked(JSDStaticLock* lock)
   928 {
   929 #if defined(JSD_THREADSAFE) && defined(DEBUG)
   930     return ! jsd_IsLocked(lock);
   931 #else
   932     return true;
   933 #endif
   934 }
   936 JSD_PUBLIC_API(void*)
   937 JSD_CurrentThread()
   938 {
   939     return JSD_CURRENT_THREAD();
   940 }
   942 /***************************************************************************/
   943 /* Value and Property Functions */
   945 JSD_PUBLIC_API(JSDValue*)
   946 JSD_NewValue(JSDContext* jsdc, jsval val)
   947 {
   948     JSD_ASSERT_VALID_CONTEXT(jsdc);
   949     return jsd_NewValue(jsdc, val);
   950 }
   952 JSD_PUBLIC_API(void)
   953 JSD_DropValue(JSDContext* jsdc, JSDValue* jsdval)
   954 {
   955     JSD_ASSERT_VALID_CONTEXT(jsdc);
   956     JSD_ASSERT_VALID_VALUE(jsdval);
   957     jsd_DropValue(jsdc, jsdval);
   958 }
   960 JSD_PUBLIC_API(jsval)
   961 JSD_GetValueWrappedJSVal(JSDContext* jsdc, JSDValue* jsdval)
   962 {
   963     JSD_ASSERT_VALID_CONTEXT(jsdc);
   964     JSD_ASSERT_VALID_VALUE(jsdval);
   965     return jsd_GetValueWrappedJSVal(jsdc, jsdval);
   966 }
   968 JSD_PUBLIC_API(void)
   969 JSD_RefreshValue(JSDContext* jsdc, JSDValue* jsdval)
   970 {
   971     JSD_ASSERT_VALID_CONTEXT(jsdc);
   972     JSD_ASSERT_VALID_VALUE(jsdval);
   973     jsd_RefreshValue(jsdc, jsdval);
   974 }
   976 /**************************************************/
   978 JSD_PUBLIC_API(bool)
   979 JSD_IsValueObject(JSDContext* jsdc, JSDValue* jsdval)
   980 {
   981     JSD_ASSERT_VALID_CONTEXT(jsdc);
   982     JSD_ASSERT_VALID_VALUE(jsdval);
   983     return jsd_IsValueObject(jsdc, jsdval);
   984 }
   986 JSD_PUBLIC_API(bool)
   987 JSD_IsValueNumber(JSDContext* jsdc, JSDValue* jsdval)
   988 {
   989     JSD_ASSERT_VALID_CONTEXT(jsdc);
   990     JSD_ASSERT_VALID_VALUE(jsdval);
   991     return jsd_IsValueNumber(jsdc, jsdval);
   992 }
   994 JSD_PUBLIC_API(bool)
   995 JSD_IsValueInt(JSDContext* jsdc, JSDValue* jsdval)
   996 {
   997     JSD_ASSERT_VALID_CONTEXT(jsdc);
   998     JSD_ASSERT_VALID_VALUE(jsdval);
   999     return jsd_IsValueInt(jsdc, jsdval);
  1002 JSD_PUBLIC_API(bool)
  1003 JSD_IsValueDouble(JSDContext* jsdc, JSDValue* jsdval)
  1005     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1006     JSD_ASSERT_VALID_VALUE(jsdval);
  1007     return jsd_IsValueDouble(jsdc, jsdval);
  1010 JSD_PUBLIC_API(bool)
  1011 JSD_IsValueString(JSDContext* jsdc, JSDValue* jsdval)
  1013     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1014     JSD_ASSERT_VALID_VALUE(jsdval);
  1015     return jsd_IsValueString(jsdc, jsdval);
  1018 JSD_PUBLIC_API(bool)
  1019 JSD_IsValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
  1021     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1022     JSD_ASSERT_VALID_VALUE(jsdval);
  1023     return jsd_IsValueBoolean(jsdc, jsdval);
  1026 JSD_PUBLIC_API(bool)
  1027 JSD_IsValueNull(JSDContext* jsdc, JSDValue* jsdval)
  1029     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1030     JSD_ASSERT_VALID_VALUE(jsdval);
  1031     return jsd_IsValueNull(jsdc, jsdval);
  1034 JSD_PUBLIC_API(bool)
  1035 JSD_IsValueVoid(JSDContext* jsdc, JSDValue* jsdval)
  1037     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1038     JSD_ASSERT_VALID_VALUE(jsdval);
  1039     return jsd_IsValueVoid(jsdc, jsdval);
  1042 JSD_PUBLIC_API(bool)
  1043 JSD_IsValuePrimitive(JSDContext* jsdc, JSDValue* jsdval)
  1045     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1046     JSD_ASSERT_VALID_VALUE(jsdval);
  1047     return jsd_IsValuePrimitive(jsdc, jsdval);
  1050 JSD_PUBLIC_API(bool)
  1051 JSD_IsValueFunction(JSDContext* jsdc, JSDValue* jsdval)
  1053     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1054     JSD_ASSERT_VALID_VALUE(jsdval);
  1055     return jsd_IsValueFunction(jsdc, jsdval);
  1058 JSD_PUBLIC_API(bool)
  1059 JSD_IsValueNative(JSDContext* jsdc, JSDValue* jsdval)
  1061     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1062     JSD_ASSERT_VALID_VALUE(jsdval);
  1063     return jsd_IsValueNative(jsdc, jsdval);
  1066 /**************************************************/
  1068 JSD_PUBLIC_API(bool)
  1069 JSD_GetValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
  1071     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1072     JSD_ASSERT_VALID_VALUE(jsdval);
  1073     return jsd_GetValueBoolean(jsdc, jsdval);
  1076 JSD_PUBLIC_API(int32_t)
  1077 JSD_GetValueInt(JSDContext* jsdc, JSDValue* jsdval)
  1079     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1080     JSD_ASSERT_VALID_VALUE(jsdval);
  1081     return jsd_GetValueInt(jsdc, jsdval);
  1084 JSD_PUBLIC_API(double)
  1085 JSD_GetValueDouble(JSDContext* jsdc, JSDValue* jsdval)
  1087     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1088     JSD_ASSERT_VALID_VALUE(jsdval);
  1089     return jsd_GetValueDouble(jsdc, jsdval);
  1092 JSD_PUBLIC_API(JSString*)
  1093 JSD_GetValueString(JSDContext* jsdc, JSDValue* jsdval)
  1095     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1096     JSD_ASSERT_VALID_VALUE(jsdval);
  1097     return jsd_GetValueString(jsdc, jsdval);
  1100 JSD_PUBLIC_API(JSString *)
  1101 JSD_GetValueFunctionId(JSDContext* jsdc, JSDValue* jsdval)
  1103     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1104     JSD_ASSERT_VALID_VALUE(jsdval);
  1105     return jsd_GetValueFunctionId(jsdc, jsdval);
  1108 JSD_PUBLIC_API(JSFunction*)
  1109 JSD_GetValueFunction(JSDContext* jsdc, JSDValue* jsdval)
  1111     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1112     JSD_ASSERT_VALID_VALUE(jsdval);
  1113     return jsd_GetValueFunction(jsdc, jsdval);
  1116 /**************************************************/
  1118 JSD_PUBLIC_API(unsigned)
  1119 JSD_GetCountOfProperties(JSDContext* jsdc, JSDValue* jsdval)
  1121     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1122     JSD_ASSERT_VALID_VALUE(jsdval);
  1123     return jsd_GetCountOfProperties(jsdc, jsdval);
  1126 JSD_PUBLIC_API(JSDProperty*)
  1127 JSD_IterateProperties(JSDContext* jsdc, JSDValue* jsdval, JSDProperty **iterp)
  1129     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1130     JSD_ASSERT_VALID_VALUE(jsdval);
  1131     MOZ_ASSERT(iterp);
  1132     return jsd_IterateProperties(jsdc, jsdval, iterp);
  1135 JSD_PUBLIC_API(JSDProperty*)
  1136 JSD_GetValueProperty(JSDContext* jsdc, JSDValue* jsdval, JSString* name)
  1138     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1139     JSD_ASSERT_VALID_VALUE(jsdval);
  1140     MOZ_ASSERT(name);
  1141     return jsd_GetValueProperty(jsdc, jsdval, name);
  1144 JSD_PUBLIC_API(JSDValue*)
  1145 JSD_GetValuePrototype(JSDContext* jsdc, JSDValue* jsdval)
  1147     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1148     JSD_ASSERT_VALID_VALUE(jsdval);
  1149     return jsd_GetValuePrototype(jsdc, jsdval);
  1152 JSD_PUBLIC_API(JSDValue*)
  1153 JSD_GetValueParent(JSDContext* jsdc, JSDValue* jsdval)
  1155     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1156     JSD_ASSERT_VALID_VALUE(jsdval);
  1157     return jsd_GetValueParent(jsdc, jsdval);
  1160 JSD_PUBLIC_API(JSDValue*)
  1161 JSD_GetValueConstructor(JSDContext* jsdc, JSDValue* jsdval)
  1163     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1164     JSD_ASSERT_VALID_VALUE(jsdval);
  1165     return jsd_GetValueConstructor(jsdc, jsdval);
  1168 JSD_PUBLIC_API(const char*)
  1169 JSD_GetValueClassName(JSDContext* jsdc, JSDValue* jsdval)
  1171     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1172     JSD_ASSERT_VALID_VALUE(jsdval);
  1173     return jsd_GetValueClassName(jsdc, jsdval);
  1176 JSD_PUBLIC_API(JSDScript*)
  1177 JSD_GetScriptForValue(JSDContext* jsdc, JSDValue* jsdval)
  1179     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1180     return jsd_GetScriptForValue(jsdc, jsdval);
  1182 /**************************************************/
  1184 JSD_PUBLIC_API(void)
  1185 JSD_DropProperty(JSDContext* jsdc, JSDProperty* jsdprop)
  1187     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1188     JSD_ASSERT_VALID_PROPERTY(jsdprop);
  1189     jsd_DropProperty(jsdc, jsdprop);
  1193 JSD_PUBLIC_API(JSDValue*)
  1194 JSD_GetPropertyName(JSDContext* jsdc, JSDProperty* jsdprop)
  1196     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1197     JSD_ASSERT_VALID_PROPERTY(jsdprop);
  1198     return jsd_GetPropertyName(jsdc, jsdprop);
  1201 JSD_PUBLIC_API(JSDValue*)
  1202 JSD_GetPropertyValue(JSDContext* jsdc, JSDProperty* jsdprop)
  1204     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1205     JSD_ASSERT_VALID_PROPERTY(jsdprop);
  1206     return jsd_GetPropertyValue(jsdc, jsdprop);
  1209 JSD_PUBLIC_API(JSDValue*)
  1210 JSD_GetPropertyAlias(JSDContext* jsdc, JSDProperty* jsdprop)
  1212     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1213     JSD_ASSERT_VALID_PROPERTY(jsdprop);
  1214     return jsd_GetPropertyAlias(jsdc, jsdprop);
  1217 JSD_PUBLIC_API(unsigned)
  1218 JSD_GetPropertyFlags(JSDContext* jsdc, JSDProperty* jsdprop)
  1220     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1221     JSD_ASSERT_VALID_PROPERTY(jsdprop);
  1222     return jsd_GetPropertyFlags(jsdc, jsdprop);
  1225 /**************************************************/
  1226 /* Object Functions */
  1228 JSD_PUBLIC_API(void)
  1229 JSD_LockObjectSubsystem(JSDContext* jsdc)
  1231     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1232     JSD_LOCK_OBJECTS(jsdc);
  1235 JSD_PUBLIC_API(void)
  1236 JSD_UnlockObjectSubsystem(JSDContext* jsdc)
  1238     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1239     JSD_UNLOCK_OBJECTS(jsdc);
  1242 JSD_PUBLIC_API(JSDObject*)
  1243 JSD_IterateObjects(JSDContext* jsdc, JSDObject** iterp)
  1245     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1246     return jsd_IterateObjects(jsdc, iterp);
  1249 JSD_PUBLIC_API(JSObject*)
  1250 JSD_GetWrappedObject(JSDContext* jsdc, JSDObject* jsdobj)
  1252     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1253     JSD_ASSERT_VALID_OBJECT(jsdobj);
  1254     return jsd_GetWrappedObject(jsdc, jsdobj);
  1258 JSD_PUBLIC_API(const char*)
  1259 JSD_GetObjectNewURL(JSDContext* jsdc, JSDObject* jsdobj)
  1261     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1262     JSD_ASSERT_VALID_OBJECT(jsdobj);
  1263     return jsd_GetObjectNewURL(jsdc, jsdobj);
  1266 JSD_PUBLIC_API(unsigned)
  1267 JSD_GetObjectNewLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
  1269     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1270     JSD_ASSERT_VALID_OBJECT(jsdobj);
  1271     return jsd_GetObjectNewLineNumber(jsdc, jsdobj);
  1274 JSD_PUBLIC_API(const char*)
  1275 JSD_GetObjectConstructorURL(JSDContext* jsdc, JSDObject* jsdobj)
  1277     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1278     JSD_ASSERT_VALID_OBJECT(jsdobj);
  1279     return jsd_GetObjectConstructorURL(jsdc, jsdobj);
  1282 JSD_PUBLIC_API(unsigned)
  1283 JSD_GetObjectConstructorLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
  1285     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1286     JSD_ASSERT_VALID_OBJECT(jsdobj);
  1287     return jsd_GetObjectConstructorLineNumber(jsdc, jsdobj);
  1290 JSD_PUBLIC_API(const char*)
  1291 JSD_GetObjectConstructorName(JSDContext* jsdc, JSDObject* jsdobj)
  1293     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1294     JSD_ASSERT_VALID_OBJECT(jsdobj);
  1295     return jsd_GetObjectConstructorName(jsdc, jsdobj);
  1298 JSD_PUBLIC_API(JSDObject*)
  1299 JSD_GetJSDObjectForJSObject(JSDContext* jsdc, JSObject* jsobj)
  1301     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1302     MOZ_ASSERT(jsobj);
  1303     return jsd_GetJSDObjectForJSObject(jsdc, jsobj);
  1306 JSD_PUBLIC_API(JSDObject*)
  1307 JSD_GetObjectForValue(JSDContext* jsdc, JSDValue* jsdval)
  1309     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1310     JSD_ASSERT_VALID_VALUE(jsdval);
  1311     return jsd_GetObjectForValue(jsdc, jsdval);
  1314 JSD_PUBLIC_API(JSDValue*)
  1315 JSD_GetValueForObject(JSDContext* jsdc, JSDObject* jsdobj)
  1317     JSD_ASSERT_VALID_CONTEXT(jsdc);
  1318     JSD_ASSERT_VALID_OBJECT(jsdobj);
  1319     return jsd_GetValueForObject(jsdc, jsdobj);

mercurial