js/jsd/jsdebug.cpp

branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
equal deleted inserted replaced
-1:000000000000 0:d8b5ade2b4ca
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/. */
6
7 /*
8 * JavaScript Debugging support - All public functions
9 */
10
11 #include "jsd.h"
12
13 /***************************************************************************/
14 /* High Level calls */
15
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 }
23
24 JSD_PUBLIC_API(JSDContext*)
25 JSD_DebuggerOn(void)
26 {
27 return jsd_DebuggerOn();
28 }
29
30 JSD_PUBLIC_API(void)
31 JSD_DebuggerOff(JSDContext* jsdc)
32 {
33 JSD_ASSERT_VALID_CONTEXT(jsdc);
34 jsd_DebuggerOff(jsdc);
35 }
36
37 JSD_PUBLIC_API(void)
38 JSD_DebuggerPause(JSDContext* jsdc)
39 {
40 JSD_ASSERT_VALID_CONTEXT(jsdc);
41 jsd_DebuggerPause(jsdc, false);
42 }
43
44 JSD_PUBLIC_API(void)
45 JSD_DebuggerUnpause(JSDContext* jsdc)
46 {
47 JSD_ASSERT_VALID_CONTEXT(jsdc);
48 jsd_DebuggerUnpause(jsdc);
49 }
50
51 JSD_PUBLIC_API(unsigned)
52 JSD_GetMajorVersion(void)
53 {
54 return JSD_MAJOR_VERSION;
55 }
56
57 JSD_PUBLIC_API(unsigned)
58 JSD_GetMinorVersion(void)
59 {
60 return JSD_MINOR_VERSION;
61 }
62
63 JSD_PUBLIC_API(JSObject*)
64 JSD_GetDefaultGlobal(JSDContext* jsdc)
65 {
66 JSD_ASSERT_VALID_CONTEXT(jsdc);
67 return jsdc->glob;
68 }
69
70 JSD_PUBLIC_API(JSRuntime*)
71 JSD_GetJSRuntime(JSDContext* jsdc)
72 {
73 JSD_ASSERT_VALID_CONTEXT(jsdc);
74 return jsdc->jsrt;
75 }
76
77 JSD_PUBLIC_API(void)
78 JSD_SetUserCallbacks(JSRuntime* jsrt, JSD_UserCallbacks* callbacks, void* user)
79 {
80 jsd_SetUserCallbacks(jsrt, callbacks, user);
81 }
82
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 }
89
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 }
96
97 JSD_PUBLIC_API(void *)
98 JSD_GetContextPrivate(JSDContext *jsdc)
99 {
100 JSD_ASSERT_VALID_CONTEXT(jsdc);
101 return jsd_GetContextPrivate (jsdc);
102 }
103
104 JSD_PUBLIC_API(void)
105 JSD_ClearAllProfileData(JSDContext *jsdc)
106 {
107 JSD_ASSERT_VALID_CONTEXT(jsdc);
108 jsd_ClearAllProfileData(jsdc);
109 }
110
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 }
122
123 JSD_PUBLIC_API(uint32_t)
124 JSD_GetContextFlags(JSDContext *jsdc)
125 {
126 JSD_ASSERT_VALID_CONTEXT(jsdc);
127 return jsdc->flags;
128 }
129
130 JSD_PUBLIC_API(JSDContext*)
131 JSD_JSDContextForJSContext(JSContext* context)
132 {
133 return jsd_JSDContextForJSContext(context);
134 }
135
136 /***************************************************************************/
137 /* Script functions */
138
139 JSD_PUBLIC_API(void)
140 JSD_LockScriptSubsystem(JSDContext* jsdc)
141 {
142 JSD_ASSERT_VALID_CONTEXT(jsdc);
143 JSD_LOCK_SCRIPTS(jsdc);
144 }
145
146 JSD_PUBLIC_API(void)
147 JSD_UnlockScriptSubsystem(JSDContext* jsdc)
148 {
149 JSD_ASSERT_VALID_CONTEXT(jsdc);
150 JSD_UNLOCK_SCRIPTS(jsdc);
151 }
152
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 }
159
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 }
166
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 }
173
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 }
180
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 }
187
188
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 }
195
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 }
202
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 }
209
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 }
216
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 }
223
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 }
230
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 }
237
238 JSD_PUBLIC_API(JSScript*)
239 JSD_GetJSScript(JSDContext* jsdc, JSDScript *script)
240 {
241 return jsd_GetJSScript(jsdc, script);
242 }
243
244 JSD_PUBLIC_API(JSFunction*)
245 JSD_GetJSFunction(JSDContext* jsdc, JSDScript *script)
246 {
247 return jsd_GetJSFunction (jsdc, script);
248 }
249
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 }
256
257 JSD_PUBLIC_API(void *)
258 JSD_GetScriptPrivate(JSDScript *jsdscript)
259 {
260 JSD_ASSERT_VALID_SCRIPT(jsdscript);
261 return jsd_GetScriptPrivate (jsdscript);
262 }
263
264
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 }
271
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 }
279
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 }
287
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 }
295
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 }
303
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 }
310
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 }
317
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 }
325
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 }
333
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 }
343
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 }
355
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 }
364
365 /***************************************************************************/
366 /* Source Text functions */
367
368 JSD_PUBLIC_API(void)
369 JSD_LockSourceTextSubsystem(JSDContext* jsdc)
370 {
371 JSD_ASSERT_VALID_CONTEXT(jsdc);
372 JSD_LOCK_SOURCE_TEXT(jsdc);
373 }
374
375 JSD_PUBLIC_API(void)
376 JSD_UnlockSourceTextSubsystem(JSDContext* jsdc)
377 {
378 JSD_ASSERT_VALID_CONTEXT(jsdc);
379 JSD_UNLOCK_SOURCE_TEXT(jsdc);
380 }
381
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 }
388
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 }
396
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 }
404
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 }
415
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 }
423
424
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 }
432
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 }
440
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 }
448
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 }
456
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 }
464
465 JSD_PUBLIC_API(void)
466 JSD_DestroyAllSources( JSDContext* jsdc )
467 {
468 JSD_ASSERT_VALID_CONTEXT(jsdc);
469 jsd_DestroyAllSources(jsdc);
470 }
471
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 }
479
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 }
491
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 }
503
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 }
514
515 /***************************************************************************/
516 /* Execution/Interrupt Hook functions */
517
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 }
529
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 }
539
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 }
547
548 JSD_PUBLIC_API(bool)
549 JSD_ClearAllExecutionHooks(JSDContext* jsdc)
550 {
551 JSD_ASSERT_VALID_CONTEXT(jsdc);
552 return jsd_ClearAllExecutionHooks(jsdc);
553 }
554
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 }
563
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 }
571
572 JSD_PUBLIC_API(bool)
573 JSD_ClearInterruptHook(JSDContext* jsdc)
574 {
575 JSD_ASSERT_VALID_CONTEXT(jsdc);
576 return jsd_ClearInterruptHook(jsdc);
577 }
578
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 }
587
588 JSD_PUBLIC_API(bool)
589 JSD_ClearDebugBreakHook(JSDContext* jsdc)
590 {
591 JSD_ASSERT_VALID_CONTEXT(jsdc);
592 return jsd_ClearDebugBreakHook(jsdc);
593 }
594
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 }
603
604 JSD_PUBLIC_API(bool)
605 JSD_ClearDebuggerHook(JSDContext* jsdc)
606 {
607 JSD_ASSERT_VALID_CONTEXT(jsdc);
608 return jsd_ClearDebuggerHook(jsdc);
609 }
610
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 }
619
620 JSD_PUBLIC_API(bool)
621 JSD_ClearThrowHook(JSDContext* jsdc)
622 {
623 JSD_ASSERT_VALID_CONTEXT(jsdc);
624 return jsd_ClearThrowHook(jsdc);
625 }
626
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 }
635
636 JSD_PUBLIC_API(bool)
637 JSD_ClearTopLevelHook(JSDContext* jsdc)
638 {
639 JSD_ASSERT_VALID_CONTEXT(jsdc);
640 return jsd_ClearTopLevelHook(jsdc);
641 }
642
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 }
651
652 JSD_PUBLIC_API(bool)
653 JSD_ClearFunctionHook(JSDContext* jsdc)
654 {
655 JSD_ASSERT_VALID_CONTEXT(jsdc);
656 return jsd_ClearFunctionHook(jsdc);
657 }
658
659 /***************************************************************************/
660 /* Stack Frame functions */
661
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 }
668
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 }
675
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 }
682
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 }
691
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 }
700
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 }
709
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 }
718
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 }
727
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 }
736
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 }
745
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 }
754
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 }
763
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);
775
776 return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
777 bytes, length, filename, lineno,
778 true, rval);
779 }
780
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);
793
794 return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
795 bytes, length, filename, lineno,
796 false, rval);
797 }
798
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);
810
811 return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
812 bytes, length,
813 filename, lineno, true, rval);
814 }
815
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);
827
828 return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
829 bytes, length,
830 filename, lineno, false, rval);
831 }
832
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 }
842
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 }
849
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 }
857
858 /***************************************************************************/
859
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 }
868
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 }
877
878 /***************************************************************************/
879
880 JSD_PUBLIC_API(bool)
881 JSD_IsLockingAndThreadIdSupported()
882 {
883 #ifdef JSD_THREADSAFE
884 return true;
885 #else
886 return false;
887 #endif
888 }
889
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 }
899
900 JSD_PUBLIC_API(void)
901 JSD_Lock(JSDStaticLock* lock)
902 {
903 #ifdef JSD_THREADSAFE
904 jsd_Lock(lock);
905 #endif
906 }
907
908 JSD_PUBLIC_API(void)
909 JSD_Unlock(JSDStaticLock* lock)
910 {
911 #ifdef JSD_THREADSAFE
912 jsd_Unlock(lock);
913 #endif
914 }
915
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 }
925
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 }
935
936 JSD_PUBLIC_API(void*)
937 JSD_CurrentThread()
938 {
939 return JSD_CURRENT_THREAD();
940 }
941
942 /***************************************************************************/
943 /* Value and Property Functions */
944
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 }
951
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 }
959
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 }
967
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 }
975
976 /**************************************************/
977
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 }
985
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 }
993
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);
1000 }
1001
1002 JSD_PUBLIC_API(bool)
1003 JSD_IsValueDouble(JSDContext* jsdc, JSDValue* jsdval)
1004 {
1005 JSD_ASSERT_VALID_CONTEXT(jsdc);
1006 JSD_ASSERT_VALID_VALUE(jsdval);
1007 return jsd_IsValueDouble(jsdc, jsdval);
1008 }
1009
1010 JSD_PUBLIC_API(bool)
1011 JSD_IsValueString(JSDContext* jsdc, JSDValue* jsdval)
1012 {
1013 JSD_ASSERT_VALID_CONTEXT(jsdc);
1014 JSD_ASSERT_VALID_VALUE(jsdval);
1015 return jsd_IsValueString(jsdc, jsdval);
1016 }
1017
1018 JSD_PUBLIC_API(bool)
1019 JSD_IsValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
1020 {
1021 JSD_ASSERT_VALID_CONTEXT(jsdc);
1022 JSD_ASSERT_VALID_VALUE(jsdval);
1023 return jsd_IsValueBoolean(jsdc, jsdval);
1024 }
1025
1026 JSD_PUBLIC_API(bool)
1027 JSD_IsValueNull(JSDContext* jsdc, JSDValue* jsdval)
1028 {
1029 JSD_ASSERT_VALID_CONTEXT(jsdc);
1030 JSD_ASSERT_VALID_VALUE(jsdval);
1031 return jsd_IsValueNull(jsdc, jsdval);
1032 }
1033
1034 JSD_PUBLIC_API(bool)
1035 JSD_IsValueVoid(JSDContext* jsdc, JSDValue* jsdval)
1036 {
1037 JSD_ASSERT_VALID_CONTEXT(jsdc);
1038 JSD_ASSERT_VALID_VALUE(jsdval);
1039 return jsd_IsValueVoid(jsdc, jsdval);
1040 }
1041
1042 JSD_PUBLIC_API(bool)
1043 JSD_IsValuePrimitive(JSDContext* jsdc, JSDValue* jsdval)
1044 {
1045 JSD_ASSERT_VALID_CONTEXT(jsdc);
1046 JSD_ASSERT_VALID_VALUE(jsdval);
1047 return jsd_IsValuePrimitive(jsdc, jsdval);
1048 }
1049
1050 JSD_PUBLIC_API(bool)
1051 JSD_IsValueFunction(JSDContext* jsdc, JSDValue* jsdval)
1052 {
1053 JSD_ASSERT_VALID_CONTEXT(jsdc);
1054 JSD_ASSERT_VALID_VALUE(jsdval);
1055 return jsd_IsValueFunction(jsdc, jsdval);
1056 }
1057
1058 JSD_PUBLIC_API(bool)
1059 JSD_IsValueNative(JSDContext* jsdc, JSDValue* jsdval)
1060 {
1061 JSD_ASSERT_VALID_CONTEXT(jsdc);
1062 JSD_ASSERT_VALID_VALUE(jsdval);
1063 return jsd_IsValueNative(jsdc, jsdval);
1064 }
1065
1066 /**************************************************/
1067
1068 JSD_PUBLIC_API(bool)
1069 JSD_GetValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
1070 {
1071 JSD_ASSERT_VALID_CONTEXT(jsdc);
1072 JSD_ASSERT_VALID_VALUE(jsdval);
1073 return jsd_GetValueBoolean(jsdc, jsdval);
1074 }
1075
1076 JSD_PUBLIC_API(int32_t)
1077 JSD_GetValueInt(JSDContext* jsdc, JSDValue* jsdval)
1078 {
1079 JSD_ASSERT_VALID_CONTEXT(jsdc);
1080 JSD_ASSERT_VALID_VALUE(jsdval);
1081 return jsd_GetValueInt(jsdc, jsdval);
1082 }
1083
1084 JSD_PUBLIC_API(double)
1085 JSD_GetValueDouble(JSDContext* jsdc, JSDValue* jsdval)
1086 {
1087 JSD_ASSERT_VALID_CONTEXT(jsdc);
1088 JSD_ASSERT_VALID_VALUE(jsdval);
1089 return jsd_GetValueDouble(jsdc, jsdval);
1090 }
1091
1092 JSD_PUBLIC_API(JSString*)
1093 JSD_GetValueString(JSDContext* jsdc, JSDValue* jsdval)
1094 {
1095 JSD_ASSERT_VALID_CONTEXT(jsdc);
1096 JSD_ASSERT_VALID_VALUE(jsdval);
1097 return jsd_GetValueString(jsdc, jsdval);
1098 }
1099
1100 JSD_PUBLIC_API(JSString *)
1101 JSD_GetValueFunctionId(JSDContext* jsdc, JSDValue* jsdval)
1102 {
1103 JSD_ASSERT_VALID_CONTEXT(jsdc);
1104 JSD_ASSERT_VALID_VALUE(jsdval);
1105 return jsd_GetValueFunctionId(jsdc, jsdval);
1106 }
1107
1108 JSD_PUBLIC_API(JSFunction*)
1109 JSD_GetValueFunction(JSDContext* jsdc, JSDValue* jsdval)
1110 {
1111 JSD_ASSERT_VALID_CONTEXT(jsdc);
1112 JSD_ASSERT_VALID_VALUE(jsdval);
1113 return jsd_GetValueFunction(jsdc, jsdval);
1114 }
1115
1116 /**************************************************/
1117
1118 JSD_PUBLIC_API(unsigned)
1119 JSD_GetCountOfProperties(JSDContext* jsdc, JSDValue* jsdval)
1120 {
1121 JSD_ASSERT_VALID_CONTEXT(jsdc);
1122 JSD_ASSERT_VALID_VALUE(jsdval);
1123 return jsd_GetCountOfProperties(jsdc, jsdval);
1124 }
1125
1126 JSD_PUBLIC_API(JSDProperty*)
1127 JSD_IterateProperties(JSDContext* jsdc, JSDValue* jsdval, JSDProperty **iterp)
1128 {
1129 JSD_ASSERT_VALID_CONTEXT(jsdc);
1130 JSD_ASSERT_VALID_VALUE(jsdval);
1131 MOZ_ASSERT(iterp);
1132 return jsd_IterateProperties(jsdc, jsdval, iterp);
1133 }
1134
1135 JSD_PUBLIC_API(JSDProperty*)
1136 JSD_GetValueProperty(JSDContext* jsdc, JSDValue* jsdval, JSString* name)
1137 {
1138 JSD_ASSERT_VALID_CONTEXT(jsdc);
1139 JSD_ASSERT_VALID_VALUE(jsdval);
1140 MOZ_ASSERT(name);
1141 return jsd_GetValueProperty(jsdc, jsdval, name);
1142 }
1143
1144 JSD_PUBLIC_API(JSDValue*)
1145 JSD_GetValuePrototype(JSDContext* jsdc, JSDValue* jsdval)
1146 {
1147 JSD_ASSERT_VALID_CONTEXT(jsdc);
1148 JSD_ASSERT_VALID_VALUE(jsdval);
1149 return jsd_GetValuePrototype(jsdc, jsdval);
1150 }
1151
1152 JSD_PUBLIC_API(JSDValue*)
1153 JSD_GetValueParent(JSDContext* jsdc, JSDValue* jsdval)
1154 {
1155 JSD_ASSERT_VALID_CONTEXT(jsdc);
1156 JSD_ASSERT_VALID_VALUE(jsdval);
1157 return jsd_GetValueParent(jsdc, jsdval);
1158 }
1159
1160 JSD_PUBLIC_API(JSDValue*)
1161 JSD_GetValueConstructor(JSDContext* jsdc, JSDValue* jsdval)
1162 {
1163 JSD_ASSERT_VALID_CONTEXT(jsdc);
1164 JSD_ASSERT_VALID_VALUE(jsdval);
1165 return jsd_GetValueConstructor(jsdc, jsdval);
1166 }
1167
1168 JSD_PUBLIC_API(const char*)
1169 JSD_GetValueClassName(JSDContext* jsdc, JSDValue* jsdval)
1170 {
1171 JSD_ASSERT_VALID_CONTEXT(jsdc);
1172 JSD_ASSERT_VALID_VALUE(jsdval);
1173 return jsd_GetValueClassName(jsdc, jsdval);
1174 }
1175
1176 JSD_PUBLIC_API(JSDScript*)
1177 JSD_GetScriptForValue(JSDContext* jsdc, JSDValue* jsdval)
1178 {
1179 JSD_ASSERT_VALID_CONTEXT(jsdc);
1180 return jsd_GetScriptForValue(jsdc, jsdval);
1181 }
1182 /**************************************************/
1183
1184 JSD_PUBLIC_API(void)
1185 JSD_DropProperty(JSDContext* jsdc, JSDProperty* jsdprop)
1186 {
1187 JSD_ASSERT_VALID_CONTEXT(jsdc);
1188 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1189 jsd_DropProperty(jsdc, jsdprop);
1190 }
1191
1192
1193 JSD_PUBLIC_API(JSDValue*)
1194 JSD_GetPropertyName(JSDContext* jsdc, JSDProperty* jsdprop)
1195 {
1196 JSD_ASSERT_VALID_CONTEXT(jsdc);
1197 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1198 return jsd_GetPropertyName(jsdc, jsdprop);
1199 }
1200
1201 JSD_PUBLIC_API(JSDValue*)
1202 JSD_GetPropertyValue(JSDContext* jsdc, JSDProperty* jsdprop)
1203 {
1204 JSD_ASSERT_VALID_CONTEXT(jsdc);
1205 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1206 return jsd_GetPropertyValue(jsdc, jsdprop);
1207 }
1208
1209 JSD_PUBLIC_API(JSDValue*)
1210 JSD_GetPropertyAlias(JSDContext* jsdc, JSDProperty* jsdprop)
1211 {
1212 JSD_ASSERT_VALID_CONTEXT(jsdc);
1213 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1214 return jsd_GetPropertyAlias(jsdc, jsdprop);
1215 }
1216
1217 JSD_PUBLIC_API(unsigned)
1218 JSD_GetPropertyFlags(JSDContext* jsdc, JSDProperty* jsdprop)
1219 {
1220 JSD_ASSERT_VALID_CONTEXT(jsdc);
1221 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1222 return jsd_GetPropertyFlags(jsdc, jsdprop);
1223 }
1224
1225 /**************************************************/
1226 /* Object Functions */
1227
1228 JSD_PUBLIC_API(void)
1229 JSD_LockObjectSubsystem(JSDContext* jsdc)
1230 {
1231 JSD_ASSERT_VALID_CONTEXT(jsdc);
1232 JSD_LOCK_OBJECTS(jsdc);
1233 }
1234
1235 JSD_PUBLIC_API(void)
1236 JSD_UnlockObjectSubsystem(JSDContext* jsdc)
1237 {
1238 JSD_ASSERT_VALID_CONTEXT(jsdc);
1239 JSD_UNLOCK_OBJECTS(jsdc);
1240 }
1241
1242 JSD_PUBLIC_API(JSDObject*)
1243 JSD_IterateObjects(JSDContext* jsdc, JSDObject** iterp)
1244 {
1245 JSD_ASSERT_VALID_CONTEXT(jsdc);
1246 return jsd_IterateObjects(jsdc, iterp);
1247 }
1248
1249 JSD_PUBLIC_API(JSObject*)
1250 JSD_GetWrappedObject(JSDContext* jsdc, JSDObject* jsdobj)
1251 {
1252 JSD_ASSERT_VALID_CONTEXT(jsdc);
1253 JSD_ASSERT_VALID_OBJECT(jsdobj);
1254 return jsd_GetWrappedObject(jsdc, jsdobj);
1255
1256 }
1257
1258 JSD_PUBLIC_API(const char*)
1259 JSD_GetObjectNewURL(JSDContext* jsdc, JSDObject* jsdobj)
1260 {
1261 JSD_ASSERT_VALID_CONTEXT(jsdc);
1262 JSD_ASSERT_VALID_OBJECT(jsdobj);
1263 return jsd_GetObjectNewURL(jsdc, jsdobj);
1264 }
1265
1266 JSD_PUBLIC_API(unsigned)
1267 JSD_GetObjectNewLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
1268 {
1269 JSD_ASSERT_VALID_CONTEXT(jsdc);
1270 JSD_ASSERT_VALID_OBJECT(jsdobj);
1271 return jsd_GetObjectNewLineNumber(jsdc, jsdobj);
1272 }
1273
1274 JSD_PUBLIC_API(const char*)
1275 JSD_GetObjectConstructorURL(JSDContext* jsdc, JSDObject* jsdobj)
1276 {
1277 JSD_ASSERT_VALID_CONTEXT(jsdc);
1278 JSD_ASSERT_VALID_OBJECT(jsdobj);
1279 return jsd_GetObjectConstructorURL(jsdc, jsdobj);
1280 }
1281
1282 JSD_PUBLIC_API(unsigned)
1283 JSD_GetObjectConstructorLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
1284 {
1285 JSD_ASSERT_VALID_CONTEXT(jsdc);
1286 JSD_ASSERT_VALID_OBJECT(jsdobj);
1287 return jsd_GetObjectConstructorLineNumber(jsdc, jsdobj);
1288 }
1289
1290 JSD_PUBLIC_API(const char*)
1291 JSD_GetObjectConstructorName(JSDContext* jsdc, JSDObject* jsdobj)
1292 {
1293 JSD_ASSERT_VALID_CONTEXT(jsdc);
1294 JSD_ASSERT_VALID_OBJECT(jsdobj);
1295 return jsd_GetObjectConstructorName(jsdc, jsdobj);
1296 }
1297
1298 JSD_PUBLIC_API(JSDObject*)
1299 JSD_GetJSDObjectForJSObject(JSDContext* jsdc, JSObject* jsobj)
1300 {
1301 JSD_ASSERT_VALID_CONTEXT(jsdc);
1302 MOZ_ASSERT(jsobj);
1303 return jsd_GetJSDObjectForJSObject(jsdc, jsobj);
1304 }
1305
1306 JSD_PUBLIC_API(JSDObject*)
1307 JSD_GetObjectForValue(JSDContext* jsdc, JSDValue* jsdval)
1308 {
1309 JSD_ASSERT_VALID_CONTEXT(jsdc);
1310 JSD_ASSERT_VALID_VALUE(jsdval);
1311 return jsd_GetObjectForValue(jsdc, jsdval);
1312 }
1313
1314 JSD_PUBLIC_API(JSDValue*)
1315 JSD_GetValueForObject(JSDContext* jsdc, JSDObject* jsdobj)
1316 {
1317 JSD_ASSERT_VALID_CONTEXT(jsdc);
1318 JSD_ASSERT_VALID_OBJECT(jsdobj);
1319 return jsd_GetValueForObject(jsdc, jsdobj);
1320 }

mercurial