Compare commits

..

992 Commits

Author SHA1 Message Date
(no author)
a9d98072a0 This commit was manufactured by cvs2svn to create tag
'SpiderMonkey140_RELEASE'.

git-svn-id: svn://10.0.0.236/tags/SpiderMonkey140_RELEASE@13785 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-31 02:58:42 +00:00
fur%netscape.com
3f5735fcf7 Added more compiler build flags so that we use the correct libc DLL and optimization settings
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13784 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-31 02:58:41 +00:00
mang%netscape.com
0ab0796234 Backed out use of fd_floor on IRIX. See bugsplat bug #332475.
IRIX system floor now fails this special case:
Infinity/Math.floor(-0) = Infinity  FAILED! expected: -Infinity


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13780 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-31 01:32:50 +00:00
jband%netscape.com
0e145d79c2 modified makefile and readme to more easily support tree structure in jsjava.jar
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13776 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-31 00:54:54 +00:00
jband%netscape.com
3e89c252c4 updated README
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13741 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-30 21:41:20 +00:00
jband%netscape.com
6e0204a004 improved comments
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13740 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-30 21:38:52 +00:00
shaver%netscape.com
4b9ed1baa8 allow additional flags to the linker, so we can specify soname and such; need variants for other Unix platforms, but do those later
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13728 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-30 18:09:50 +00:00
norris%netscape.com
b9f4c69e12 Update release string format.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13687 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 23:31:24 +00:00
bjorn%netscape.com
5f6a0b9c3a Patch which fixes a problem in the alignment code. I wasn't taking sizeof(JSString)
properly.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13683 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 22:38:41 +00:00
fur%netscape.com
f68735a6bb wtc sez': Get rid of use of obsolete NSPR20 build var.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13676 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 21:59:30 +00:00
fur%netscape.com
8616bd54f5 Removing obsolete file
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13675 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 21:51:46 +00:00
fur%netscape.com
09e0785f68 Removing obsolete/unused files.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13674 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 21:50:22 +00:00
fur%netscape.com
dd8953010a Removed uses of obsolete NSPR20 build variable
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13673 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 21:43:17 +00:00
fur%netscape.com
a67d8ed2fe + Updated build directions for all platforms.
+ Added table of contents.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13663 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 20:00:58 +00:00
shaver%netscape.com
935f0e5ac8 need to poke the GC when hitting the cache on a set
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13645 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 03:55:53 +00:00
fur%netscape.com
97aa1f7699 Ignore generated files
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13643 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 02:15:23 +00:00
fur%netscape.com
f399e21216 Reporting of uncaught exceptions should occur when JS_HAS_EXCEPTIONS is set,
even if JS_HAS_ERROR_EXCEPTIONS is not.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13642 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 02:09:34 +00:00
coop%netscape.com
823cb6e29e Made constructor for wrappedException private and removed deprecation warning.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13638 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 00:43:38 +00:00
fur%netscape.com
84e135cd01 Restore build prosperity for Mac LiveConnect after ref/src merge.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13637 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 00:24:05 +00:00
fur%netscape.com
ac3516411a No real change: Reorganized a few .c files that had fallen out of their folder.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13636 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 00:23:02 +00:00
mang%netscape.com
db237360fa Added section for AIX, thus fixing several bugs.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13634 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 00:16:38 +00:00
fur%netscape.com
92e443d317 Restore Mac-specific Java file, lost in the ref/src transition
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13633 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-29 00:12:41 +00:00
rogerl%netscape.com
87c9e8ae4d Changed references to stdout and stderr to generic file handles so that all
output can be redirected to a file. This is needed for the mac where shell
redirection is not an option.
Added MAC_TEST_HACK that uses this redirection and also parses a text file
to build the argv/argc values.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13632 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 22:12:01 +00:00
fur%netscape.com
3fa38c1d6a Added a workaround for a bug in AIX JDK1.1.6 (See #331620), in which
static initializers are not run when a static field is referenced from
native code.  The problem does not manifest itself if the field is
accessed from Java code, so we first call some Java code to access
the fields of interest before attempting to read them from native code.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13621 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 20:22:22 +00:00
norris%netscape.com
ce487f127c Fix 331720 Continue to label in for..in doesn't work
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13612 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 20:13:50 +00:00
fur%netscape.com
cc1651828e We allow conversion from NaN numbers to Java integral types, but not when
the NaN is the result of conversion from a non-number, e.g. a string.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13609 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 17:59:10 +00:00
fur%netscape.com
22f7fd9b4a Fixed two related bugs in overloaded method resolution:
+ The precedence of java.lang.String was higher than it should have been
  + When an ambiguous method match was reported, the best-matching method
    was being left off the list.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13605 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 17:06:01 +00:00
mccabe%netscape.com
ad72e12927 Added proposed methods Object.prototype.hasOwnProperty,
Object.prototype.propertyIsEnumerable,
Object.prototype.isPrototypeOf... all turned off for v140 in
jsconfig.h.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13603 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 06:31:55 +00:00
fur%netscape.com
b6ada3318c Fix for #331634: Inability to invoke Java method when a method and field have
the same name.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13598 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 05:26:58 +00:00
bjorn%netscape.com
82ac5c4e2f Fixes for AIX and SunOS. AIX now compiles and runs in optimized mode as well,
and SunOS now compiles for common architecture when JS_THREADSAFE is not set.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13595 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 04:07:35 +00:00
wynholds%netscape.com
5430e4b688 for use with creating source jar file. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13586 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 02:25:31 +00:00
wynholds%netscape.com
33219cbcb1 adding shipSource target which will, yep, you guessed it, ship the source. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13582 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 02:03:45 +00:00
mang%netscape.com
e10c7eb54b Replace native exp on Linux opt build.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13578 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-28 00:39:25 +00:00
mang%netscape.com
70bd48b576 Math.toSource() == 'Math'
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13577 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 23:56:19 +00:00
bjorn%netscape.com
6bc17963c7 *** empty log message ***
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13576 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 23:53:01 +00:00
mang%netscape.com
168c0f6f50 Want to use some fdlibm functions but fdlibm broken on OSF1/alpha.
See bugsplat bugs 331500, 332038


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13572 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 23:07:40 +00:00
fur%netscape.com
eef72a91bc More LC3 features:
+ The __proto__ property of JavaObjects can be assigned and the
  prototype chain of these objects is searched, just as the engine's
  built-in js_ObjectOps routines do.  This is a featurette for the
  NGLayout DOM.

+ Static Java methods and fields can now be accessed via LiveConnect
  through an instance of a Java class, just as in Java itself.

+ Instances of java.lang.String "inherit" the standard ECMA string
  methods of String.prototype.  (All of the ECMA string methods
  convert the Java string to a JS string before operating on it.)

+ Similarly, instances of Java arrays "inherit" the standard ECMA
  array methods of Array.prototype.  (Not all of these methods work
  properly on JavaArray objects, however, since the 'length' property
  is read-only.)


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13571 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 22:28:03 +00:00
rogerl%netscape.com
76e06e7e4d Bug from field - unicode handling messed up with 2 or more unicode literal
characters ("i" only) - missing multiply and endian problem.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13570 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 21:57:10 +00:00
rogerl%netscape.com
6d03a825d3 Bug #331349, previous fix to disallow object to function conversion was too
sweeping, screwing up closures. Now we proceed with the convert if a call op
exists in the class.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13567 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 18:45:54 +00:00
shaver%netscape.com
9a0cc72a2d quell (spurious) warnings
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13565 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 16:57:19 +00:00
norris%netscape.com
6139484b7e Fix warnings.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13548 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 04:53:40 +00:00
fur%netscape.com
b576db0575 Eliminated gcc warnings, some spurious, some indicative of real bugs:
Spurious warnings:
jsobj.c: In function `js_EnterSharpObject':
    jsobj.c: In function `js_obj_toSource':
    jsobj.c:365: warning: `nchars' might be used uninitialized in this function
    jsobj.c: In function `obj_eval':
    jsobj.c:588: warning: `implicitWith' might be used uninitialized in this function
    jsobj.c: In function `js_DefineProperty':
    jsobj.c:1323: warning: `_c' might be used uninitialized in this function
    jsobj.c: In function `js_LookupProperty':
    jsobj.c:1394: warning: `_c' might be used uninitialized in this function
    jsobj.c: In function `js_FindProperty':
    jsobj.c:1472: warning: `lastobj' might be used uninitialized in this function
    jsobj.c: In function `js_GetProperty':
    jsobj.c:1599: warning: `_c' might be used uninitialized in this function
    jsobj.c: In function `js_SetProperty':
    jsobj.c:1645: warning: `protoid' might be used uninitialized in this function
    jsobj.c:1646: warning: `protogetter' might be used uninitialized in this function
    jsobj.c:1646: warning: `protosetter' might be used uninitialized in this function
    jsobj.c:1647: warning: `protoattrs' might be used uninitialized in this function
    jsobj.c:1665: warning: `_c' might be used uninitialized in this function
    jsobj.c: In function `js_DeleteProperty':
    jsobj.c:1939: warning: `_c' might be used uninitialized in this function

Warnings indicating real bugs:
jsobj.c: In function `js_EnterSharpObject':
    jsobj.c:252: warning: `sharpid' might be used uninitialized in this function


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13547 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 04:35:50 +00:00
fur%netscape.com
1858d69e49 Fixed gcc warnings (and real bugs indicated by warnings)
Spurious warnings:
jsdtoa.c: In function `JS_strtod':
    jsdtoa.c:1210: warning: `bb' might be used uninitialized in this function
    jsdtoa.c:1210: warning: `bd' might be used uninitialized in this function
    jsdtoa.c:1210: warning: `bs' might be used uninitialized in this function
    jsdtoa.c:1210: warning: `delta' might be used uninitialized in this function
    jsdtoa.c: In function `JS_dtoa':
    jsdtoa.c:1913: warning: `ilim1' might be used uninitialized in this function

Real errors:
    jsdtoa.c: In function `JS_dtoa':
    jsdtoa.c:1913: warning: `ilim' might be used uninitialized in this function
    jsdtoa.c:1915: warning: `spec_case' might be used uninitialized in this function
    jsdtoa.c:1921: warning: `mlo' might be used uninitialized in this function


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13539 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 03:10:55 +00:00
mccabe%netscape.com
76326b2efb Warning fix to 331245.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13536 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 02:53:22 +00:00
fur%netscape.com
06a7abeacf Fix allocation bug caused by use of initialized variable, discovered via gcc warning
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13531 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 01:21:16 +00:00
mang%netscape.com
2ae04afc70 Added section for OSF1. Fixes lots of ecma math bugs.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13526 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-27 00:18:43 +00:00
norris%netscape.com
754415d2a7 Fix "js -f x.js" for Christine.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13496 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 22:59:10 +00:00
norris%netscape.com
d719a6f851 Fix warnings, and clean up memory leak.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13482 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 21:23:56 +00:00
waldemar%netscape.com
cdcef88024 Fixed Mac warnings
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13479 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 21:16:28 +00:00
jband%netscape.com
34fd322859 adding READMEs
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13478 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 21:09:49 +00:00
jband%netscape.com
d848312079 adding a doc
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13475 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 20:45:49 +00:00
mccabe%netscape.com
cdc32c49b5 Fix warnings:
jsstr.c: In function `str_escape':
jsstr.c💯 warning: `mask' might be used uninitialized in this function
jsstr.c: In function `str_split':
jsstr.c:1415: warning: `limit' might be used uninitialized in this function
jsstr.c: In function `tagify':
jsstr.c:1746: warning: `parlen' might be used uninitialized in this function


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13473 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 20:22:17 +00:00
jband%netscape.com
93a992bb20 fixed compile error when JS_THREADSAFE used
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13470 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 20:13:52 +00:00
mccabe%netscape.com
256ad44f6c Quiet these warnings:
jsarray.c: In function `IdIsIndex':
jsarray.c:81: warning: `c' might be used uninitialized in this function
jsarray.c: In function `array_splice':
jsarray.c:948: warning: `obj2' might be used uninitialized in this function


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13469 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 20:10:29 +00:00
jband%netscape.com
c76f45fb75 adding two helper batchfiles
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13468 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 20:09:33 +00:00
norris%netscape.com
a7a3555cc8 Fix warnings.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13466 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 19:39:13 +00:00
rogerl%netscape.com
3140821cd1 #318482, recursive death arising from defining valueOf to be the this object
is now a version 1.2 feature only.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13462 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 19:16:08 +00:00
rogerl%netscape.com
befd55d8ba #318482, recursive death arising from defining valueOf to be the this object
is now only a version 1.2 feature, but the error mechanism needed to be
protected from failure even so.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13460 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 19:15:01 +00:00
norris%netscape.com
3962bfda99 Fix warnings under gcc.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13458 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 18:39:01 +00:00
norris%netscape.com
faca6b626e "js -f foo.js" wasn't working correctly.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13455 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 18:13:40 +00:00
fur%netscape.com
8c1af11605 Eliminate gcc warnings
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13452 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 17:41:35 +00:00
fur%netscape.com
6c8f42225c + Eliminated unused JavaMemberVal struct/type
+ Tweaked JS->Java method overload resolution
   + Don't allow JavaArrays to be passed as arguments to Java methods
     that accept scalar numeric types, since there's no meaningful
     conversion available.
   + Permit JavaObjects and JavaArrays to be passed to Java methods
     that accept a boolean argument for backward-compatibility.

+ Added explicit overload-method resolution to override ambiguous cases, e.g.
  m = java.lang.String["valueOf(char[],int,int)"]
  return m(myCharArray, 3, 7);


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13443 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 07:03:41 +00:00
norris%netscape.com
847bebb065 Implement X.Y.Z implementation version.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13442 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 05:44:04 +00:00
norris%netscape.com
2c9b897958 Fix 330840 monkey - assertion failure in import expression decompilation
Wrong length for JSOP_IMPORTELEM.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13440 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-26 05:38:22 +00:00
bjorn%netscape.com
b01cc3080f Added volatile to avoid bug in gcc
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13434 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-25 22:45:22 +00:00
bjorn%netscape.com
9cd7750dd1 move_sym_to_front avoids aliasing problem on AIX
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13432 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-25 22:17:57 +00:00
mang%netscape.com
ed9c4d7ee1 Don't use fdlibm by default.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13408 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-24 01:49:17 +00:00
bjorn%netscape.com
ceb34941c8 Changed the typedef of JSCList to work around what seems to be a bug in gcc and xlc (AIX).
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13407 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 23:56:29 +00:00
mang%netscape.com
f20e53875b Don't use fdlibm by default.
There can be problems with endian-ness.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13406 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 23:53:45 +00:00
norris%netscape.com
7c8275aae3 Use %p to print out pointer values: works better on 64 bit machines.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13405 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 21:35:56 +00:00
jband%netscape.com
30e0d801a7 fix default target - msdev bug in writing out .mak file!
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13397 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 20:34:18 +00:00
fur%netscape.com
a899984e09 Added fdlibm
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13393 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 19:43:52 +00:00
coop%netscape.com
54e5a64304 Constructors are once again public, but have been marked as deprecated so
that people won't get too fond of using them.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13392 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 19:23:36 +00:00
fur%netscape.com
4016979d0d Added fdlibm
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13391 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 19:16:28 +00:00
fur%netscape.com
663693cafe Ignore .pdb files
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13388 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 18:24:44 +00:00
wynholds%netscape.com
aed4dd4310 fixing NT build with new fdlibm stuff and an old error gone unnoticed until now. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13379 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 17:30:41 +00:00
norris%netscape.com
6c7c73d822 Fix 330845 digital unix: arithmetic exception in string stuff:
Expression "argv[argc-1]", where argc == 0 and argc was a 32 bit unsigned quantity,
was causing a memory exception on the 64 bit machine because it was evaluating as
argv[0xffffffff] rather than argv[-1].


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13376 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 16:51:08 +00:00
wynholds%netscape.com
28c93d2218 fixing fdlibm stuff. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13374 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 16:35:58 +00:00
norris%netscape.com
ca95b9b63a Add patch number.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13373 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 15:35:41 +00:00
mang%netscape.com
67d738630a Landing of MANG_MATH_10231998
Replaces many system math routines with ECMA/IEEE compliant routines
from fdlibm.
These new routines are big and slow, so there are platform specific
defines in jslibmath.h that determine which fdlibm routines to use.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13372 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 10:16:50 +00:00
(no author)
f018a06aa7 This commit was manufactured by cvs2svn to create branch
'SpiderMonkey140_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13371 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 09:14:03 +00:00
norris%netscape.com
eb89b3d136 Fix 330071 Remove catch condition support from 1.4
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13364 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 05:51:29 +00:00
wynholds%netscape.com
6c156d7134 fixed ship target to correctly take into account any variation of JS_THREADSAFE and JS_LIVECONNECT. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13354 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 01:20:32 +00:00
mccabe%netscape.com
7f123a804d Sigh. Turn of reflection of runtime errors as exceptions.
Because the immediate demand for it in the client seems to have
lessened somewhat, and because it makes our cross-engine story make
more sense for external customers if we wait 'till it's implemented
for both engines.

Also, attempting to make exceptions work cleanly in a cross-context way
turned out to be difficult; it probably makes sense to take a step
back and look at how to find the best solution for the long term
development of the language.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13353 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 00:37:15 +00:00
wynholds%netscape.com
ec0edbcba0 adding HPUX 10.20 config makefiles. they are just copies of HPUX 10.10 makefiles. hope they work. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13351 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-23 00:30:46 +00:00
norris%netscape.com
2687debc8e Fix bug 330462 monkey: decompilation of comma op causes ASSERT/script failure
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13347 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-22 23:55:09 +00:00
mccabe%netscape.com
5fb184d473 Another fix to 329807.
Rather than nulling out the error reporter during the execution of
'load', replace it with a new error reporter that ignores all error
reports with the JSREPORT_EXCEPTION flag set.

Also fix a bug in jsexn.c where I was failing to actually set that
flag, and Eich-ify a few curly-brace placements.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13313 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-22 19:55:11 +00:00
mccabe%netscape.com
4885772ba8 Fix to 330589. Back out a tree-rewriting of foo[0] -> foo.0 because
the resulting code decompiles to foo.0.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13301 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-22 03:44:56 +00:00
rogerl%netscape.com
3d0da2df12 Bug #310514 - for eror report on calling toString on a not-function, was
calling toString to get the name of the object. Duh. Now calls getTypeName.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13290 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-22 00:05:16 +00:00
rogerl%netscape.com
030655be79 Bug #324451 - eval was bailing out early if the arg was not a string, and
so skipping the indirect-eval check.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13289 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-22 00:01:49 +00:00
fur%netscape.com
c21e3de07e Match changes in Makefile for auto-generating jsautocfg.h
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13279 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-21 21:43:59 +00:00
mccabe%netscape.com
f654a47a49 Fix to 329807.
'load' in the shell makes 'toplevel' calls to the js interpreter, so
the mechanism for detecting and reporting uncaught exceptions at the
top level kicks in prematurely.  To work around this problem, I set
the error reporter to NULL.  A better fix might be to use a custom
error reporter for load that knew to ignore exception error reports,
expecting that the javascript context calling load would catch or
report them.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13276 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-21 20:52:43 +00:00
norris%netscape.com
c11ef38890 Fix 330074 arguments object uses Array.prototype.toString
Unfortunately, I can see no way to version this behavior.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13275 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-21 20:45:41 +00:00
norris%netscape.com
d8f121d794 Better debugging code for printing objects.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13273 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-21 20:19:46 +00:00
rogerl%netscape.com
47f4088f27 Bug #330051 - previous fix for end of string with empty sep. should have
been 1.2 only and should have set the sep->length to 1 in order to break
out of the split loop.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13264 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-21 18:02:24 +00:00
rogerl%netscape.com
9d8444be44 Plugging a memory leak whenever an error is reported.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13261 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-21 17:54:30 +00:00
wynholds%netscape.com
0bd94e4384 CFLAGS needs to be +='ed, not ='ed. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13206 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 17:02:13 +00:00
wynholds%netscape.com
e0a486e300 need another include directory in liveconnect directory. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13205 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 16:47:16 +00:00
fur%netscape.com
4bf9c6a227 Fixed INCLUDES problem when JS_THREADSAFE is set
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13199 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 15:32:46 +00:00
fur%netscape.com
3277bdac18 Auto-generate jsautocfg.h instead of using checked-in jscpucfg.h file
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13192 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 07:32:26 +00:00
fur%netscape.com
87c868ffbe Improve clobber rule
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13191 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 07:31:21 +00:00
fur%netscape.com
5f6bbab561 Eliminate dependency on jscpucfg.h for Windows
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13186 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 05:00:16 +00:00
fur%netscape.com
55cebfe0cb It turns out that even though we were generating jscpucfg.h, we weren't
using it.  Rather the static, checked-in version was being used.  Fixed, now.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13185 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 04:42:33 +00:00
fur%netscape.com
26c815ff77 Generate jscpucfg.h on Unix platforms rather than relying on per-platform
static definitions.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13181 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 03:24:47 +00:00
fur%netscape.com
facfc365cb Ignore generated files
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13143 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-20 00:09:26 +00:00
fur%netscape.com
63ace590d6 Get rid of -D_SVID_GETTOD
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13142 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-19 23:59:29 +00:00
mccabe%netscape.com
31c250eee9 Fix from Joe Keane to avoid reiniting the scanner except when
necessary.  Thanks!

From: Joe Keane <jgk@jgk.org>  Fri 19:11
Subject:                       Re: JS_SetVersion not
To:                            Mike McCabe <mccabe@netscape.com>

The main caller i saw was libmocha.  In `win_run_timeout', it calls
`JS_SetVersion' twice every time there's a JavaScript timeout; it sets
the version before running the expression, then it sets it back when
it's done.  It looks like a couple times per second, not the worst
thing in the world, but nice to get rid of if it's easy enough.

I had some question about whether it's doing something dumb and it can
be improved.  This may be true, but there are some other callers, for
example it gets called indirectly by `PL_HandleEvent'.  Overall it
seems like a simple and pretty right thing to do anyway.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13134 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-19 22:15:39 +00:00
jband%netscape.com
60b5308f58 Added JSD support for DebugErrorHook
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13069 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-17 06:18:16 +00:00
jband%netscape.com
d2b9c6a168 - added 'DebugErrorHook' which (when present) is called before the ErrorReporter. And in cases where an error exception is raised but the ErrorReporter is not called. This allows for the debugger catching errors when they happen that the ErrorReporter will not now see until they become uncaught errors. This also simplifies the debugger by not having it try to track an ErrorReporter chain. This now works more like the Rhino system.
- #if 0'd js_ReportCompileError which is no longer used (replaced by js_ReportCompileErrorNumber). I'm all for cutting this out of the codebase. Shall we just do that?


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13061 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-17 02:26:19 +00:00
jband%netscape.com
b6525cde8b fix script leakage if !JS_HAS_ERROR_EXCEPTIONS
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13060 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-17 02:11:27 +00:00
bjorn%netscape.com
c4741a81fe Made cc be the default.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13022 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 21:47:52 +00:00
bjorn%netscape.com
0649a670ac Moved declaration of FAR to satisfy 'cc' on Dec Unix.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@13020 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 21:45:44 +00:00
bjorn%netscape.com
d418df2eb7 Extra config stuff for cc on OSF.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12998 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 18:16:26 +00:00
bjorn%netscape.com
e86bd6fd57 switch for OSF1.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12997 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 18:13:53 +00:00
jband%netscape.com
6d79b5ec64 fix 'typedef struct' redefinition - problem for jsd too before it becomes a build issue
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12992 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 10:36:20 +00:00
jband%netscape.com
46800959c2 fix build bustage on Unix due to 'typedef struct' redefinition - the Windows compiler didn't mind
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12991 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 10:26:22 +00:00
mccabe%netscape.com
e29596b37b Fix the javascript-visible Exception constructor to make objects of
jsclass Exception.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12987 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 09:34:29 +00:00
mccabe%netscape.com
1419ca574a Make the toSource stuff #if JS_HAS_TOSOURCE
Viva jsconfig.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12985 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 09:21:22 +00:00
jband%netscape.com
e5892b8370 Added support for throw hook. Added locals() and args() to jsdb to demonstrate/test JSDValue/JSDProperty stuff
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12972 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 04:07:41 +00:00
jband%netscape.com
60fe37f18d added save/restore/drop of JSExceptionState. This allows opaque scheme for doing evals and stuff on a context without screwing up the state of the exception information. This helps now with rooting the saved exception and will help more later if additional hidden exception information is added to the context; e.g. source location of thrown exception, etc. Also added throw hook. This is necessary since the relationship between the exceptions and error reporter changed
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12971 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 04:03:46 +00:00
fur%netscape.com
98c0f47746 Fix AIX build bustage
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12970 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 03:58:25 +00:00
fur%netscape.com
55a926e2c4 Fix gcc warning
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12969 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 03:58:07 +00:00
fur%netscape.com
f7387ecdae Fix gettimeofday() on Solaris for the umpteenth time
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12968 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 03:51:56 +00:00
fur%netscape.com
ecf83e4f36 + HAVE_LONG_LONG ==> JS_HAVE_LONG_LONG, so as to avoid conflict with NSPR
macro of the same name.
+ Changed JS_HAVE_LONG_LONG to be defined on Linux, since we compile with
  gcc on that platform.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12963 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-16 03:42:06 +00:00
bjorn%netscape.com
7d02cdd1c2 changed from int to unsigned int in alignment code.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12921 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-15 21:06:57 +00:00
mang%netscape.com
0bd5df16b7 Include jsfile.h only when building with JS_HAS_FILE_OBJECT
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12917 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-15 20:55:02 +00:00
mccabe%netscape.com
145eb6f922 Toss the cx->exceptionProtos vector and go to looking up exception
prototypes by using the the constructor names in the current context.
This has some failure modes if users have overwritten the
constructors, but they seem tolerable:

js> sil
1: ReferenceError: sil is not defined
js> ReferenceError = 'foo'
foo
js> sil
3: Exception: sil is not defined
js> Exception = 'bar'
bar
js> sil
5: [object Exception]


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12878 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-15 08:46:59 +00:00
mccabe%netscape.com
f98b15d6d3 Update js.c from the previous behavior of ignoring errors tagged as
exceptions - this caused toplevel compile errors to be ignored.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12877 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-15 08:35:03 +00:00
fur%netscape.com
da9f65325b Propagated changes from JS_STABLE_10131998_BRANCH, required to build mozilla.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12861 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-15 03:07:09 +00:00
mang%netscape.com
25bbd958a9 Now duplicate string instead of trying to modify read-only memory on Unix
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12860 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-15 02:58:12 +00:00
bjorn%netscape.com
3e8f4b2074 Change so that the local structure used to represent a JS pointer is aligned
modulo 8 rather than 4.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12852 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-15 01:22:15 +00:00
mang%netscape.com
6547ff01ff Added NPL
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12834 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-14 22:04:23 +00:00
wynholds%netscape.com
dd55af2615 xlC_r on AIX seems to not be able to hand C++ comments. seems kinds stupid, but what the hell? so i changed it to a C-style comment. no hard no foul.
-mw


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12831 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-14 21:42:37 +00:00
wynholds%netscape.com
619f867c2d ship target now supports JS_LIVECONNECT to be defined or undefined. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12829 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-14 21:36:29 +00:00
rogerl%netscape.com
2ffc6eb8cf Bug #315139 - for character split and empty separator, return string length
for end of string.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12828 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-14 21:32:11 +00:00
rogerl%netscape.com
444ed356ed Fix precedence issue (inappropriate distributive use)
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12826 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-14 20:58:31 +00:00
mccabe%netscape.com
ad709b1cfa GC_MARK the pending exception as a GCTHING rather than as a jsval
during garbage collection.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12794 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-14 07:13:34 +00:00
mccabe%netscape.com
90dc42fec0 Fix warnings.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12714 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-13 19:44:39 +00:00
mccabe%netscape.com
7b3a25dde6 Further work on errors as exceptions -
Changes to js.c back out much of the error-checking code of the
previous checkin; proper exception handling now requires fewer changes
to the host.

Exception prototypes are per-context, with no way (yet) to have
instanceof work properly with exceptions from other contexts.
Per-runtime prototypes (to make instanceof work naturally) worked OK,
but sealing these objects to prevent leaking information between
threads turned out to be hairy.  (Because Exception.prototype.toString
needed sealing too...)

Errors for which a corresponding exception is thrown are suppressed,
and compile errors are always suppressed except at the top level.
Entry functions in jsapi.c now detect failure of calls to the
interpreter and call the error reporter if an exception was raised;
exception-savvy hosts may provide an error reporter that ignores these
reports by checking JSREPORT_EXCEPTION in the report flags.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12686 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-13 09:58:28 +00:00
mang%netscape.com
3b086e1130 JS File Object (not fully implemented yet)
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12662 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-13 03:20:37 +00:00
jband%netscape.com
43ea6c73ea Added reflection of JSDValue, JSDProperty, and JSDObject stuff to jsdb. Initial support for this in debugger.js
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12646 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-13 01:02:25 +00:00
jband%netscape.com
8b37303301 added a comment
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12644 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-13 00:57:53 +00:00
bjorn%netscape.com
a9d4091b08 Updated js_list_scope_lookup() to use void pointers for casting, instead
of JSSymbol. This removed a problem on AIX where the compiler shuffled
code around, thinking that it was safe to do so. Waldemar helped me
track this one down.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12638 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-13 00:17:36 +00:00
fur%netscape.com
0e74fd5849 Merge changes from trunk
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12621 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 22:32:49 +00:00
fur%netscape.com
9bbc9990a2 Fix JS_FRIEND_DATA for Mac
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12614 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 22:12:08 +00:00
fur%netscape.com
5cea729be2 Updated file for JS1.4
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12606 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 21:01:57 +00:00
fur%netscape.com
c7838f766a Get rid of obsolete files
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12588 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 18:40:42 +00:00
norris%netscape.com
d6adc823ec Fix bug 299903 Inheriting from a Date object causes crash
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12582 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 17:54:44 +00:00
fur%netscape.com
65fea2e956 Remove out-of-date MSVC5 project files
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12580 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 17:37:11 +00:00
fur%netscape.com
bc6d33a86b Get rid of isatty() warning on Windows
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12577 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 16:43:17 +00:00
(no author)
f9446c3323 This commit was manufactured by cvs2svn to create branch
'SpiderMonkey140_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12554 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 08:05:38 +00:00
fur%netscape.com
f2dde02af9 1) Fixed bug in which incorrect netscape.javascript.JSException constructor
was being called when wrapping JavaScript exception objects thrown as
   a result of evaluating JavaScript from Java.

2) Implemented improved LiveConnect overloaded method resolution as described
   in the spec: http://www.mozilla.org/js/liveconnect/lc3_method_overloading.html
   (Explicit method specification not yet implemented, however).


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12551 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 07:32:14 +00:00
jband%netscape.com
41ebf8c0e0 Added type info to handles to support automatic 'dropping' of JSDValues (to be supported soon). Added name prop to handles to avoid toString having to repeatedly create the name on the fly. Also misc cleanup.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12545 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-12 02:39:27 +00:00
fur%netscape.com
ab971b977f Changed files for building JS for Mac after js ref/src merge
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12499 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 03:17:19 +00:00
fur%netscape.com
9c77f182aa Fix use of uninitialized variable.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12498 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 03:16:23 +00:00
fur%netscape.com
b25aef6c55 Privatize some names that conflict with NSPR identifiers missed in the first round of js ref/src merging.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12497 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 03:13:38 +00:00
fur%netscape.com
a82b563a25 Kill Mac warnings
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12496 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 03:11:30 +00:00
jband%netscape.com
02314c78f6 turn off debug tracing output
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12490 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 02:23:56 +00:00
jband%netscape.com
425d07341a added JSObject tracking system that supports iterating all JSObjects with info about the source line that created them and the source line and name of their constructors
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12488 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 02:10:07 +00:00
fur%netscape.com
268dfb88cb Fix to make JSObject native methods load on unix
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12485 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 00:53:33 +00:00
fur%netscape.com
bc2ec58a7b Get rid of outdated Java implementation of JSObject.equals(). It was replaced by native code a long time ago.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12483 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 00:53:05 +00:00
fur%netscape.com
cf373daa53 Don't use deprecated PrintStream API
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12482 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-10 00:52:03 +00:00
coop%netscape.com
7fe8465ded Changed constructor JSException(Object) to public so that Java users can
throw exceptions to JS cleanly.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12427 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-09 15:38:08 +00:00
mccabe%netscape.com
37ec2963c9 Added NPL.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12421 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-09 08:11:32 +00:00
fur%netscape.com
5ea0bc5e25 Revert to my non-standard, but more tabular white-space formatting
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12385 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-09 01:17:24 +00:00
fur%netscape.com
a492c3a964 Fix for #328274 (Unable to pass JS objects to Java)
Thanks to coop for noticing the problem.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12384 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-09 01:16:45 +00:00
rogerl%netscape.com
a256793772 #324451 - disallow indirect calls to eval
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12367 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 23:51:18 +00:00
rogerl%netscape.com
fa7759865b #324451 - if eval not invoked with CALLSPECIAL, then complain that it was
called indirectly, not allowed for new ECMA.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12366 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 23:50:06 +00:00
rogerl%netscape.com
7a57c4b47a #324451 - CALLSPECIAL opcode for detecting indirect calls to eval
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12365 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 23:48:57 +00:00
rogerl%netscape.com
a2ebae060e #324451 - detect direct call of eval and use CALLSPECIAl opcode instead
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12364 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 23:48:14 +00:00
rogerl%netscape.com
a8dc44aaa9 #324451 - Added callSpecial opcode to identify indirect eval calls
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12363 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 23:46:29 +00:00
rogerl%netscape.com
3c18b0c3ba #324451 Added eval to atomState so that we can detect indirect calls to eval
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12362 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 23:42:03 +00:00
coop%netscape.com
c122de69b8 Made all constructors private.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12347 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 21:57:30 +00:00
coop%netscape.com
4a3d57e324 Changed references to JSWrappedException to point to JSException instead.
Fixed nesting for vreport_java_error that prevented pending exception from
being set or cleared properly.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12306 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 20:16:51 +00:00
coop%netscape.com
a3f846bbf0 Changed references to JSWrappedException to point to JSException instead.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12305 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 20:12:36 +00:00
coop%netscape.com
189fd42355 JSWrappedException: removed
JSException: now extends RuntimeException
	     added Object wrappedException
	     added new constructor that takes an Object
	     added instance method getWrappedException(), returns wrappedException.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12304 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-08 20:08:01 +00:00
jband%netscape.com
63410ef469 added debug hook for notification of JSObject new and finalize
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12229 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 22:07:37 +00:00
norris%netscape.com
7f25afca90 Sigh. Back out fix that caused regressions.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12224 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 21:34:44 +00:00
jband%netscape.com
81d08cb271 support for resume with returnVal or throwVal
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12148 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 01:55:53 +00:00
jband%netscape.com
deefcc6b8d support for throwing from hook, prep for client checkin: fix locks, mods to makefile.win
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12147 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 01:52:25 +00:00
jband%netscape.com
e9b1c82736 added JSTRAP_THROW -- support for throwing an exception from any of the three kinds of interpreter hooks: interrupt, pc trap, debugger keyword
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12146 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 01:39:30 +00:00
wynholds%netscape.com
27a80cf6d2 some hacky stuff to get NT building right with gmake -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12141 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 01:15:11 +00:00
mccabe%netscape.com
1022f9e0ce Initialize cx->throwing to JS_FALSE #if JS_HAS_EXCEPTIONS!
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12139 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 00:54:26 +00:00
jband%netscape.com
c9bb9195dd only call JS_DestroyScript on non-NULL script in shell Load
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12138 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 00:43:20 +00:00
wynholds%netscape.com
095999e32b getting NT stuff build build EXEs correctly/at all -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12136 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-07 00:40:51 +00:00
wynholds%netscape.com
d76a5a9080 oops, typo for HP package. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12127 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:52:55 +00:00
wynholds%netscape.com
a70e9a2aaa NT executables end in .exe ! -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12126 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:51:33 +00:00
wynholds%netscape.com
e359fd71fc HP uses libnspr21.sl -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12124 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:47:50 +00:00
wynholds%netscape.com
04e1b5c3d1 NT uses a different nsinstall (built into shmsdos.exe) -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12122 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:44:53 +00:00
wynholds%netscape.com
fa2407ee2e don't forget this header file. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12121 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:32:06 +00:00
wynholds%netscape.com
49bb4bd95c package the right files on NT. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12120 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:30:18 +00:00
wynholds%netscape.com
3c49adc57b packaging libnspr21.so now. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12116 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:26:34 +00:00
wynholds%netscape.com
3f7cdf786b only use EXPORT_JS_API while building libjs.dll -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12113 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:07:41 +00:00
wynholds%netscape.com
78fba657bd LOOP_OVER_DIRS now can go only one level deep at a time -m
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12112 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 23:05:04 +00:00
wynholds%netscape.com
5b6a656e48 now NT's link line will create the right .lib and .pdb -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12091 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 21:42:00 +00:00
wynholds%netscape.com
fbbe5d2674 we need to use a JDK built especially for HP-UX10 (not 11) because on 11 it links with libm.sl.2, and on 10 it links with libm.sl.1. anyway, on 10, we don't have libm.2 so we obviously need the right one. i put it in /share/builds/components/jdk/1.1.5/HP-UX10/... -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12086 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 21:23:42 +00:00
wynholds%netscape.com
d9d717001f using cc instead of gcc (stupid gcc on HP). -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12085 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 21:21:08 +00:00
wynholds%netscape.com
1dde42d623 HP has to use native c compiler now, but hey, gcc just wasn't cutting it. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12049 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 19:39:46 +00:00
wynholds%netscape.com
1ed0446da5 get the link line right for NT. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12046 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 16:29:47 +00:00
wynholds%netscape.com
3fd73fdffd jsref_opt.jar and jsref_dbg.jar -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12045 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 16:18:16 +00:00
wynholds%netscape.com
cfa1a86909 a fix for UNIX on LOOP_OVER_DIRS -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12044 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 15:53:36 +00:00
coop%netscape.com
6b78529f1f Removed references to getWrappedException java method.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12043 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 14:46:50 +00:00
norris%netscape.com
4fd0fc55ca Fix bug 327540 "monkey: crash in some negative tests"
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@12025 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 04:08:25 +00:00
norris%netscape.com
b1e460a74a Fix 325843 "function f(a){var a,b;} asserts/crashes"
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11980 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 00:26:15 +00:00
wynholds%netscape.com
a5a20628a0 HP 10.10 stuff -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11977 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 00:19:22 +00:00
wynholds%netscape.com
d9eb58cdec need this to get HP linking. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11976 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-06 00:18:34 +00:00
wynholds%netscape.com
037c43596e uses reltools now
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11974 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:59:25 +00:00
wynholds%netscape.com
79b38ca130 get liveconnect building on NT
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11973 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:52:02 +00:00
wynholds%netscape.com
2f59039158 NT specific stuff
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11972 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:50:12 +00:00
wynholds%netscape.com
d32e31eda5 make DIRS NT friendly
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11971 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:49:23 +00:00
wynholds%netscape.com
ccf4b130af links correctly with NSPR on NT
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11970 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:46:20 +00:00
coop%netscape.com
c66acfa187 JSWrappedException wraps a JavaScript exception in a java.lang.Object wrapper.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11968 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:39:09 +00:00
coop%netscape.com
89d32f85be Removed "if 0"s referencing JSWrappedException code.
Changed references to JSWrappedException to reflect changes to that objects
structure, ie. JSWrappedException now contains a java.lang.Object instead
of an integer.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11967 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:35:22 +00:00
coop%netscape.com
0f8d890868 Removed "if 0"s referencing JSWrappedException code.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11966 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:32:28 +00:00
coop%netscape.com
3c8ae5aafe Removed "if 0"s referencing JSWrapped exception code.
Changed throw_any_pending_js_error_as_a_java_exception to reflect the
new make-up/construction of JSWrappedException (contains an java.lang.Object
instead of an integer).


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11965 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:31:35 +00:00
coop%netscape.com
f909920e91 Removed "if 0"s for references to JSWrappedException.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11963 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 23:27:26 +00:00
wynholds%netscape.com
ad73f38c85 installing programs to dist/bin directory now, and giving the owner write permissions. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11945 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 21:58:28 +00:00
wynholds%netscape.com
e18fa8a56f added ship target for packaging. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11944 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 21:57:50 +00:00
wynholds%netscape.com
e81b4d3657 this is the right config file for DEC, not dgux.mk. i dunno what version of uname that comes from. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11940 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 21:23:13 +00:00
wynholds%netscape.com
19c49a56be get DEC building -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11939 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 21:22:33 +00:00
wynholds%netscape.com
3e2489f92c point to java stuff for HP. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11934 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 20:55:29 +00:00
wynholds%netscape.com
b9e217c7e8 get HP 11 to link shared libraries. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11933 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 20:53:57 +00:00
wynholds%netscape.com
940ee6966f using /share/builds/components/jdk/1.1.6/IRIX instead of /usr/java so everybody can use it!. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11925 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 19:30:18 +00:00
wynholds%netscape.com
13337f0a89 using /share/builds/components/jdk/1.1.6/IRIX instead of /usr/java so we can all use it! -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11924 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 19:29:04 +00:00
wynholds%netscape.com
aabb8920ae need to hack AIX 4.1 to grab 4.2 because 4.1 doesn't exist. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11918 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 19:15:11 +00:00
wynholds%netscape.com
bd32e33753 trying to get AIX 4.1 to build, but no real luck yet. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11917 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 19:13:14 +00:00
wynholds%netscape.com
c68e984b99 link with libdl.a when doing threadsafe builds (NSPR needs it). -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11912 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 18:34:01 +00:00
wynholds%netscape.com
35b4a8183d get AIX 4.1.5 building. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11911 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 18:33:22 +00:00
wynholds%netscape.com
f746d5d6c5 added SunOS5.6.mk file to get it building. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11910 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 18:07:21 +00:00
wynholds%netscape.com
dccd95eeaa new target to grab NSPR from /share/builds/components. for use with JS_THREADSAFE standalone builds. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11909 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 17:46:30 +00:00
mccabe%netscape.com
0dc9a5a868 Be more paranoid in various ways about properly handling exceptions,
from compilation or execution.  Load is now somewhat more exception-savvy.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11899 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 09:56:06 +00:00
mccabe%netscape.com
f46f66eea8 Change some engine semantics to propagate exceptions better.
js_DefaultValue and a few other places used js_TryMethod,
js_TryValueOf.  The return value of these functions was always ignored
(well, was void) even if they found a method to call and that method
raised an exception.  As a result, functions like valueOf which might
have been user-defined to throw an exception didn't end up propagating
the exception.

I changed js_TryMethod, js_TryValueOf, and JS_ConvertStub (which calls
js_TryValueOf) to propagate failure.  Note that they'll still succeed
if they fail to find an appropriate method value to call.  (so 'Try'
still means something in this context.)  js_DefaultValue now uses
these return values to decide how to proceed.

As a result js_DefaultValue and obj->convert now may fail in a few
places where they previously did not.  I think that this is best in
terms of making the engine interpret a consistent language, but it
might trip us up on old code.  Fingers now crossed.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11898 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 09:40:59 +00:00
mccabe%netscape.com
8ade5f78d3 If compiletime errors are already reflected as exceptions, suppress
any compiletime errors that don't occur at the top level.  The intent
is to retain as much as possible the existing behavior of giving
multiple compile error messages for toplevel compiles.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11897 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 09:16:07 +00:00
mccabe%netscape.com
58a8a3d984 Only look for enclosing try/catch statements on abrupt frame exit when
returning failure with a pending exception, not just when there's a
pending exception.  (The pending exception could have been an
uncleared exception another script in the same context.)


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11896 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 09:07:48 +00:00
mccabe%netscape.com
e539af4e6f Fix to 318250. Disable an assert that was firing for a
default-value-throws-exn object used in an expression.  Code exists to
handle the case for which the assertion failed, but it was effectively
disabled in debug builds.  Anybody know the history of this one?


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11895 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 08:17:48 +00:00
norris%netscape.com
27e172913a Fix 299903 Inheriting from a Date object causes crash
and Actra global regexp problem (Function clone of regexp object because
it is of type Function).


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11894 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-05 06:32:34 +00:00
fur%netscape.com
b54505be31 Changed PR_* to JS_* names
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11890 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-04 23:18:51 +00:00
fur%netscape.com
2433dae015 Propagating README from js/ref
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11889 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-04 23:16:44 +00:00
mccabe%netscape.com
c2bcde8466 Only raise an exception for the first syntax error that's reported on
any given compile.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11843 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-03 03:27:13 +00:00
mccabe%netscape.com
90fb1dfb90 Comment fix.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11842 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-03 03:23:08 +00:00
val4%cornell.edu
132d1f5b26 Minor modification to readme reflecting the changes in the directory structure.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11791 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 19:42:37 +00:00
val4%cornell.edu
4c69c950da Looks like CRs on this file were scred up, which didn't allow MSDEV to
open them properly. Hopefully, it will work now.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11781 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 18:35:59 +00:00
coop%netscape.com
d5329cfd00 Added NPL.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11772 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 15:30:56 +00:00
coop%netscape.com
83cb0cf419 Added code to vreport_java_error that reports, sets and clears JS exceptions
based on the type of java exception encountered. Parts referencing
JSWrappedException are currently commented out.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11771 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 15:30:11 +00:00
coop%netscape.com
d3eee3f5c6 Added extern references for class JSWrappedException. Currently commented out.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11770 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 15:27:48 +00:00
coop%netscape.com
c78787a61a Added code to throw_any_pending_js_error_as_a_java_exception which
wraps an exception in a JSWrappedException wrapper. Currently commented
out.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11769 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 15:26:18 +00:00
coop%netscape.com
fd99e42a1e Added references (jclass, jmethodID, etc.) for JSWrappedException class.
Class does not currently exist, so references are commented out.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11768 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 15:23:46 +00:00
coop%netscape.com
f536714915 Added NPL for all classes.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11767 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 15:21:41 +00:00
shaver%netscape.com
16977a5881 fix Linux build of shared JS
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11740 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-02 02:02:23 +00:00
(no author)
d58d92ba30 This commit was manufactured by cvs2svn to create branch
'SpiderMonkey140_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11725 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-01 23:57:01 +00:00
bjorn%netscape.com
70aa311f1a Some final touches to the make system, just when you thought they
were all over... I got rid of the silly JS_STATIC. More pain than
pleasure, really.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11713 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-01 22:11:21 +00:00
wynholds%netscape.com
d6d4547e60 adding nsinstall-target target which will build the nsinstall executable needed for gmake export. -mw
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11678 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-01 19:32:00 +00:00
bjorn%netscape.com
cddb4bee49 Changed environment flag from JS_THREADSAFE to USE_NSPR.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11670 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-01 17:53:22 +00:00
bjorn%netscape.com
215e4f521a Added '+' to CFLAGS definition.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11649 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-01 04:52:28 +00:00
bjorn%netscape.com
b374ece734 Added JS_STATIC flag which, when set, links LiveConnect statically with JS.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11648 18797224-902f-48f8-a5cc-f745e15eee43
1998-10-01 04:47:20 +00:00
bjorn%netscape.com
db88d15e60 IRIX 6.2 support for LiveConnect.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11620 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 23:30:52 +00:00
bjorn%netscape.com
17a3a3fede IRIX6.2 support.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11619 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 23:30:14 +00:00
bjorn%netscape.com
802ea94da2 Changes to make export work from inside liveconnect.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11618 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 23:28:20 +00:00
bjorn%netscape.com
87987c22eb LC support for IRIX.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11617 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 23:24:05 +00:00
mccabe%netscape.com
92e75b047c Fix to 320443. Restructure jsinterp.c to always check a raised
exception against any enclosing try statement within the current frame
before attempting to return from the frame.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11612 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 22:34:13 +00:00
bjorn%netscape.com
d72d172d7a Fixes to properly generate the executable 'jsj'.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11611 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 22:33:44 +00:00
rogerl%netscape.com
8e7b173eef ErrorNumber handling changes to support UC
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11607 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 21:51:59 +00:00
rogerl%netscape.com
d898e8430d Fixed bug #104766. DecompileFunctionBody needs to set the scope in its
JSPrinter arg.
Changed error number handling code to support UC version as well.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11606 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 21:50:52 +00:00
rogerl%netscape.com
55edce6a15 Fixed bug #104766. DecompileFunctionBody needs to set the scope in its
JSPrinter arg.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11603 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 21:48:00 +00:00
rogerl%netscape.com
f962f59ccc Fixing bugs #310514, 310502 - calling function.toString, .call & .apply
on non-function objects now results in a runtime error.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11599 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 21:30:26 +00:00
bjorn%netscape.com
75187e5e57 DIST is now a variable set in Makefile.ref so that the export rule
can be made to export to a chosen directory.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11572 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 18:13:50 +00:00
bjorn%netscape.com
3522f2112e Removed JDK include.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11566 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 17:14:29 +00:00
bjorn%netscape.com
b2bc5afac7 New support for AIX.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11565 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 17:14:12 +00:00
bjorn%netscape.com
1b857628d4 AIX 4.2 make support.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11564 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 16:59:47 +00:00
fur%netscape.com
4034d6af4c Added MKSHLIB macro
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11528 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 03:45:54 +00:00
bjorn%netscape.com
1d5e647e2c Added includes.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11527 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 03:10:19 +00:00
bjorn%netscape.com
2aabababd7 New support for standalone make system.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11526 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 03:08:00 +00:00
fur%netscape.com
024311a2ab Fixed an incorrect assertion that I believe was intended to confirm that
all JS roots pointed into the GC'able JS arena, but which wasn't coded correctly.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11525 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 03:03:15 +00:00
mccabe%netscape.com
55fcddec90 Changed some remaining messages from js_ReportCompileError(<hardcoded
string>) to js_ReportCompileErrorNumber(<error number>).  To make
runtime exceptions work for lexical errors, because the mechanism
piggybacks off of js_ReportCompileErrorNumber.

Also propagated a free->JS_free change.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11522 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-30 01:53:45 +00:00
bjorn%netscape.com
0c95c94909 Fixes to the assembly for SPARC v8, and to accommodate for new source
tree.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11478 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 23:32:29 +00:00
bjorn%netscape.com
8da98334c6 Fixed the test when the pointer is busy (tst -> cmp)
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11474 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 23:18:26 +00:00
shaver%netscape.com
defa10fc43 added Linux config file
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11469 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 22:54:37 +00:00
bjorn%netscape.com
f0cdddb20c Changed assertion in CompareAndSwap to look for nv != -1.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11465 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 22:47:27 +00:00
fur%netscape.com
a17e03c381 Re-fixed comment
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11419 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 20:35:44 +00:00
shaver%netscape.com
595794ecfe don't overwrite catchall jump with rethrow address
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11414 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 19:14:36 +00:00
shaver%netscape.com
1a0b1b8a29 fix catchall-after-catchguard spurious error
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11347 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 09:50:04 +00:00
fur%netscape.com
670d4d69fa Moved from js/ref to js/src
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11326 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 05:56:30 +00:00
fur%netscape.com
c5a6bb1af7 Migrated LiveConnect from js/ref to js/src.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11325 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-29 05:55:25 +00:00
jband%netscape.com
00a574acf2 added call to new JSD unicode function JSD_AppendUCSourceText to simplify shell and remove truncation hackery (which really just got pushed into JSD)
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11257 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-28 20:37:22 +00:00
jband%netscape.com
68900225d1 - removed MY_XP junk, abandon Win16, assume that realloc works
- removed HACK_FOR_OLD_JS
- made JS_LOWLEVEL_SOURCE work in jsdb
- added Unicode JSD_AppendUCSourceText to simplify shells
- some gratuitous whitespace reformatting


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11256 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-28 20:34:46 +00:00
mccabe%netscape.com
97a1eacae2 Propagate mcafee fix: Added Rhapsody to the long list of OS's that
can't handle localtime_r().


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11235 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-28 19:41:17 +00:00
jband%netscape.com
1061a7961a Source notes for line numbers are generated at the top of js_EmitTree. The code generation in the TOK_TRY case was bypassing this code (i.e. emitting code for source lines before recursing into js_EmitTree). So, I brokeout that linenumber code into a macro to be inlined at the top of js_EmitTree and also into a static function that can be called elsewhere -- I didn't want to force an extra (and often unneeded) function call at the top of each invocation of js_EmitTree, nor inline 15 lines of code in a bunch of places, so this seemed a good compromise. This substantially fixes lineno errors in try/catch/finally code. There are still non-lineno problems in that code that shaver and coop are looking at - so this code in not final.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11210 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-28 08:02:43 +00:00
jband%netscape.com
95f197f31a function mis-declared as JS_FRIEND_DATA. changed to JS_FRIEND_API
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11209 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-28 07:51:21 +00:00
jband%netscape.com
aeb19b804e fix CompileTokenStream to always call js_CloseTokenStream. It was not doing so on syntax errors. This caused .js files loaded in the shell to be left open and would also fail to have JSPRINCIPALS_DROP be called in cases where principles are used.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11069 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-25 21:15:49 +00:00
norris%netscape.com
22b83ef992 Back out breaking change.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11017 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-25 04:36:13 +00:00
mccabe%netscape.com
cf89f9dbea Fix to xp problem on solaris. Use 1-argument form of gettimeofday #if
defined( SOLARIS ) - hack borrowed from ref/prtime.c.  Why wasn't it
needed in src/prmjtime.c previously?


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@11006 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-25 00:58:26 +00:00
norris%netscape.com
b9f52d961c Fix bug 299903 Inheriting from a Date object causes crash.
The test code is

     function MyDate() { this.foo = "bar"; }
     MyDate.prototype = new Date();
     x = new MyDate();
     print(x.toString())

The problem is that object x is created with an associated class of date_class, but with an undefined value in the private slot. Then when
date_getProlog is called on x, the JS_InstanceOf test passes since the class of the object is date_class, but then a bogus pointer is returned
since there isn't really a double in the private data slot.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10983 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 23:30:36 +00:00
jband%netscape.com
b9b66713eb added build() to js.c to display date/time of build in shell. Uses __DATE__ and __TIME__ which are supposed to be ansi C -- tested on Windows and Linux
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10975 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 22:52:07 +00:00
fur%netscape.com
3287009b56 Added/deleted files to accomodate ref/src merge.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10903 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 07:44:22 +00:00
jband%netscape.com
d0ad9c946c last automatic conversion of js/ref/jsd to js/jsd based on fur's conversion system of js/ref to js/src
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10900 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 07:22:17 +00:00
jband%netscape.com
b3c707fd61 removed NETSCAPE_INTERNAL. Made JS_IsAssigning a JS_FRIEND_API with a warning in jsapi.h that the function might be removed in the future
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10899 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 07:17:59 +00:00
fur%netscape.com
03332fd3ac Final changes merged from js/ref
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10897 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 05:40:16 +00:00
fur%netscape.com
ef97812295 + Make JS1.4 build in Mozilla
+ Get rid of all uses of NSPR20 macro


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10893 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 04:16:35 +00:00
fur%netscape.com
ca0614a7b6 Converted README to README.html
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10892 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 04:15:15 +00:00
fur%netscape.com
4c1594b677 Changes for merged js ref/src.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10886 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 03:55:11 +00:00
fur%netscape.com
914637bd3e Fixed JS_FRIEND_* macros
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10882 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 03:18:10 +00:00
fur%netscape.com
91dbe3c171 Added extern C declarations for inclusion into C++
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10881 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 03:17:55 +00:00
fur%netscape.com
c3bd0c5f7d Fix PR_EXTERN
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10878 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-24 02:41:11 +00:00
jband%netscape.com
cff140c431 adding a PR_PUBLIC_XXX conversions back in
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10809 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 18:45:12 +00:00
fur%netscape.com
923990dd99 Updated dependencies
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10785 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 07:44:40 +00:00
fur%netscape.com
45291c870a More name substitutions for ref/src merge
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10784 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 07:40:51 +00:00
jband%netscape.com
33d0d8a72b improved makefiles. added javawrap
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10768 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 04:01:03 +00:00
fur%netscape.com
2066c6b9ce Got rid of OS-dependent header files. Everything is in jsosdep.h now
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10765 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 02:37:53 +00:00
jband%netscape.com
46e77ac0e1 change path make standalone debugger work
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10735 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 01:42:03 +00:00
jband%netscape.com
7507e060b5 moved from ref/samples. work with ref/src merged js. ripped out jsd and jsdebugger build stuff
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10734 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 01:23:33 +00:00
jband%netscape.com
1cc86f1b54 jsd to go with ref/src merge. first checkin of new java stuff and jsdb
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10733 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-23 01:22:09 +00:00
fur%netscape.com
a4156ea8c1 Fix windows compilation error
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10727 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-22 23:39:13 +00:00
fur%netscape.com
4e17e7d0b6 Updated dependencies
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10723 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-22 23:27:41 +00:00
fur%netscape.com
0b9f4a6066 Make it build on the Mac
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10669 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-22 02:57:17 +00:00
fur%netscape.com
88e2efb86c Make it build on the Mac
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10668 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-22 02:47:25 +00:00
fur%netscape.com
f70c006cd2 Strange...some initialization of prmjtime.c is actually done in NSPR.
I had to copy the routines out of prtime.c so that prmjtime.c would
not be dependent on NSPR.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10666 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-22 02:37:06 +00:00
fur%netscape.com
2d43318eeb Replace PR_snprintf's
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10655 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-22 02:07:32 +00:00
fur%netscape.com
464cfb0128 + Added missing conversion of PR_*printf functions to JS_*printf.
+ Changed jsopcode.def to jsopcode.tbl


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10653 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-22 01:52:52 +00:00
fur%netscape.com
ccd9fea75c *** empty log message ***
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10633 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 23:28:00 +00:00
fur%netscape.com
adbbf081d4 Changes to build ref/src merged files on Win32 platform.
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10607 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 20:04:13 +00:00
fur%netscape.com
087895e0d4 Standalone makefiles for js ref/src merge
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10606 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 20:03:11 +00:00
fur%netscape.com
f53236bbe5 Replaced with js*.h
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10598 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 18:58:46 +00:00
fur%netscape.com
4525a93346 Replaced with jsdtoa.c
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10597 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 18:57:51 +00:00
fur%netscape.com
92ce8e0953 This check-in is a first attempt at reducing JavaScript's dependency
on NSPR.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10589 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 17:54:36 +00:00
fur%netscape.com
4f506cbcbc prarena.c is now jsarena.c
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10586 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 17:47:37 +00:00
fur%netscape.com
53fed9d6ad This check-in is a first attempt at reducing JavaScript's dependency
on NSPR.  In fact, the JS C-engine no longer depends on NSPR at all in
a single-threaded environment and the multi-threaded version relies on
NSPR strictly for its threading primitives.  This change was made for
several reasons:

 + To merge the js/src and js/ref directories, which differ only in that
   the former is designed to link with NSPR2, but the latter makes use of
   an NSPR1 subset.  The automatic generation of src from ref often led
   to confusion and sometimes to merge-related errors.

 + To avoid the requirement to link against multiple versions of NSPR
   when delivering JS binaries. (Different internal customers of JS have
   standardized upon different NSPR releases.)

 + To shield JS from incompatible changes to NSPR.

Most of the changes involved simple renaming of types, macros,
identifiers and file names, i.e. from pr* to js*.  In some cases, this
transformation resulted in name collisions and a different name was
chosen.  One place where renaming was *not* performed was in the
definition of simple scalar types, i.e. int32, uint16, etc.  The
jsotypes.h header file was specially handled so as to avoid typename
collision with NSPR types of the same name.


git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10585 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 17:45:48 +00:00
fur%netscape.com
a7fb2e53b5 Removing dependency on NSPR
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10579 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-21 17:21:23 +00:00
(no author)
cddacc3fc7 This commit was manufactured by cvs2svn to create branch
'SpiderMonkey140_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10431 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-18 19:56:46 +00:00
fur%netscape.com
6f925ed79a We decided not to do mini-nspr
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10422 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-18 18:21:58 +00:00
fur%netscape.com
91ff9d9174 Checkpoint mini-nspr files, even though we're probably not going to use mini-nspr
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@10292 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-17 18:55:29 +00:00
fur%netscape.com
cb5c11135f Make it build on unix
git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@9520 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:58:23 +00:00
(no author)
d02f29a398 This commit was manufactured by cvs2svn to create branch
'SpiderMonkey140_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/SpiderMonkey140_BRANCH@9511 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:08:10 +00:00
fur%netscape.com
5b2c2e76fb Added Mac-specific defines.
git-svn-id: svn://10.0.0.236/trunk@9203 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 03:52:13 +00:00
fur%netscape.com
2d3f594b08 *** empty log message ***
git-svn-id: svn://10.0.0.236/trunk@9202 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 03:51:38 +00:00
fur%netscape.com
eed8c3afc6 Ignore generated files
git-svn-id: svn://10.0.0.236/trunk@9201 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 03:47:13 +00:00
fur%netscape.com
512995a690 Checked in wrong version of project by mistake. This is the right one.
git-svn-id: svn://10.0.0.236/trunk@9200 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 03:46:25 +00:00
fur%netscape.com
b983a196aa Added comments and declaration of PR_Abort().
git-svn-id: svn://10.0.0.236/trunk@9198 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 03:40:50 +00:00
thom%netscape.com
3717641c6c File names change HTMLFoo changed to HTMLFooElement
git-svn-id: svn://10.0.0.236/trunk@9197 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 02:54:46 +00:00
thom%netscape.com
39b855dfd3 Copy and paste error (SomethingClassWin needed to change to somethingClassMac)
git-svn-id: svn://10.0.0.236/trunk@9196 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 02:54:11 +00:00
thom%netscape.com
77361183d1 Fixed an XP change that wasn't XP (_MAX_PATH is already defined on the mac)
git-svn-id: svn://10.0.0.236/trunk@9195 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 02:53:25 +00:00
joki%netscape.com
d2023dac41 Fix typo
git-svn-id: svn://10.0.0.236/trunk@9194 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:58:54 +00:00
cmanske%netscape.com
24789aba9f Removed unused string
git-svn-id: svn://10.0.0.236/trunk@9193 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:32:09 +00:00
joki%netscape.com
9628820de0 This useragent code is wrong anyway but change it to at least send a backwards compat string.
git-svn-id: svn://10.0.0.236/trunk@9192 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:24:59 +00:00
joki%netscape.com
728fea362d Moving script event listener registration back to SetAttributes out of SetDocument
git-svn-id: svn://10.0.0.236/trunk@9191 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:23:59 +00:00
joki%netscape.com
f0699eac56 Standardize order during content creation to be setDoc, addAttr, appendChild
git-svn-id: svn://10.0.0.236/trunk@9190 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:23:12 +00:00
joki%netscape.com
6fe10b9054 Cleaning up unused code
git-svn-id: svn://10.0.0.236/trunk@9189 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:21:48 +00:00
joki%netscape.com
899ed70268 Adding event.cancelBubble
git-svn-id: svn://10.0.0.236/trunk@9188 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:20:29 +00:00
joki%netscape.com
968d59a50f Adding window.opener, window.focus, window.blur, event.cancelBubble, and modifying window.open
git-svn-id: svn://10.0.0.236/trunk@9187 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:19:58 +00:00
cmanske%netscape.com
4853d699d7 Added new strings for Composer I18N work
git-svn-id: svn://10.0.0.236/trunk@9186 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:18:48 +00:00
karnaze%netscape.com
b413a9ba42 frameset/frame border resizing via mouse; NORESIZE, BORDERCOLOR
git-svn-id: svn://10.0.0.236/trunk@9185 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:16:27 +00:00
cmanske%netscape.com
de39922342 Fixed problems with PA_Block and busted file loading into Composer
git-svn-id: svn://10.0.0.236/trunk@9184 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:10:13 +00:00
cyeh%netscape.com
443c21dc15 change version number to reflect ALPHA stage
git-svn-id: svn://10.0.0.236/trunk@9183 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:08:47 +00:00
kipp%netscape.com
e29bad58eb Added new files to the build
git-svn-id: svn://10.0.0.236/trunk@9182 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:04:04 +00:00
kipp%netscape.com
c39cd1d7a2 new
git-svn-id: svn://10.0.0.236/trunk@9181 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:03:33 +00:00
danm%netscape.com
3c22121f48 about: wasn't working. is now.
git-svn-id: svn://10.0.0.236/trunk@9180 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:02:27 +00:00
cyeh%netscape.com
7f08256f2f added changed warning text for absolute timebombs. WARNING: ugly short lived hack.
git-svn-id: svn://10.0.0.236/trunk@9179 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 01:01:19 +00:00
terry%netscape.com
c8fc80fb77 Send mail to Christopher Seawood's machine, so that he can run his own Bonsai.
git-svn-id: svn://10.0.0.236/trunk@9178 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 00:57:23 +00:00
cyeh%netscape.com
1c891d2dd6 set timebombs to always warn. not a part of the build, so okay to check-in
git-svn-id: svn://10.0.0.236/trunk@9177 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 00:31:39 +00:00
kipp%netscape.com
8151679e48 Updated to build new source
git-svn-id: svn://10.0.0.236/trunk@9176 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 00:05:52 +00:00
kipp%netscape.com
a0783a4a5a Fixed SetAttribute where the leaf classes StringToAttribute wasn't being called
git-svn-id: svn://10.0.0.236/trunk@9175 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 00:03:58 +00:00
kipp%netscape.com
a75c02b0f1 Use new element ctors
git-svn-id: svn://10.0.0.236/trunk@9174 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:53:49 +00:00
kipp%netscape.com
af61e4b99f Spanked
git-svn-id: svn://10.0.0.236/trunk@9173 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:53:16 +00:00
kipp%netscape.com
9a826752e8 Renamed element creation routines
git-svn-id: svn://10.0.0.236/trunk@9172 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:52:38 +00:00
kipp%netscape.com
5a6d57899a Added new atoms
git-svn-id: svn://10.0.0.236/trunk@9171 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:52:24 +00:00
cyeh%netscape.com
6aa7d36e69 do the right thing and parameterize calls to SetTimeBomb
git-svn-id: svn://10.0.0.236/trunk@9170 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:31:57 +00:00
cyeh%netscape.com
1e31df0004 removing debugging statements, support timebombs of 0
git-svn-id: svn://10.0.0.236/trunk@9169 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:22:59 +00:00
cyeh%netscape.com
de4253f385 set timebombs to have 0 warning days by default, so that the user
is presented with the warning dialog on every launch


git-svn-id: svn://10.0.0.236/trunk@9168 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:20:17 +00:00
buster%netscape.com
68a912b36d put "quickdraw" in an #ifdef NS_MAC
git-svn-id: svn://10.0.0.236/trunk@9167 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 23:01:35 +00:00
despotdaemon%netscape.com
651e6b46d0 Pseudo-automatic update of changes made by mang@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9166 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:58:43 +00:00
buster%netscape.com
f5e2a5ce2f fixed a space leak for tables with rowspans
git-svn-id: svn://10.0.0.236/trunk@9165 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:55:37 +00:00
cyeh%netscape.com
179b369fde after speaking to scc, moving utility functions to Moz.pm where they belong.
git-svn-id: svn://10.0.0.236/trunk@9164 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:52:49 +00:00
fur%netscape.com
815859a7bb Project files to build standalone JS using mini-NSPR
git-svn-id: svn://10.0.0.236/trunk@9163 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:38:20 +00:00
fur%netscape.com
d9185a5a7e Minimal NSPR subset required to build JS engine
git-svn-id: svn://10.0.0.236/trunk@9161 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:37:14 +00:00
fur%netscape.com
d1c09d04ff ignore generated files
git-svn-id: svn://10.0.0.236/trunk@9160 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:36:05 +00:00
terry%netscape.com
87de70d7ac Oops; mention nomail and maillock. (Thanks to
Sam Ziegler <ziegler@mediaguaranty.com> for pointing out their lack.)


git-svn-id: svn://10.0.0.236/trunk@9159 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:31:50 +00:00
buster%netscape.com
08dcf151a6 nsBrowserWindow.cpp,h
added filter name param to DumpFrames
nsViewerApp.cpp
  added -o <outputDirPath> for specifying where output files should go
  added -filter <filterName> for specifying that <filterName> should be used in an automated fashion for
dumping frames for every URL visited.
nsWebCrawler.cpp,h
  added  support methods to handle output dirs, output file name building from URL, and filter names
  added DumpFrames to ::OnStopBinding when the right state is set (from -filter option)
  added dependancies on:  nsIPresShell.h, nsIPresContext.h, and nsIFrame.h


git-svn-id: svn://10.0.0.236/trunk@9158 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:07:42 +00:00
dcone%netscape.com
96ef1297af mac fixes
git-svn-id: svn://10.0.0.236/trunk@9157 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 22:01:18 +00:00
buster%netscape.com
9a7b48eb26 expanded nsIFrame::List to include nsIListFilter *aFilter param, by default nsnull.
aFilter is useful for determining if a frame should output itself during
a List().  In any event, the children of the frame are always processed.
added nsIListFilter, an interface for any object that wants to act like a filter for frame dumps
added   static NS_LAYOUT nsIListFilter * GetFilter(nsString *aFilterName);
currently, only TableListFilter implements nsIListFilter.
in response to List(...TableListFilter), the frame model is dumped in a way that is useful
for table layout regression testing.  Currently this is controlled by command line switches on the viewer app.


git-svn-id: svn://10.0.0.236/trunk@9156 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:59:54 +00:00
dcone%netscape.com
e8732ba214 add the macradiobutton
git-svn-id: svn://10.0.0.236/trunk@9155 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:54:14 +00:00
dcone%netscape.com
c985cb4b0e made it a mac version
git-svn-id: svn://10.0.0.236/trunk@9154 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:53:49 +00:00
buster%netscape.com
51b30845c1 fixed a space leak caused by incorrect ~nsCellMap iteration through
the new data structures.


git-svn-id: svn://10.0.0.236/trunk@9153 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:51:01 +00:00
dcone%netscape.com
c1f3f02117 enabled the nsRadiobutton factory
git-svn-id: svn://10.0.0.236/trunk@9152 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:48:05 +00:00
dcone%netscape.com
364b725c28 Mac implementation, first pass
git-svn-id: svn://10.0.0.236/trunk@9151 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:47:47 +00:00
dcone%netscape.com
3799ccc7b8 used my own mousemoved tracking for better speed
git-svn-id: svn://10.0.0.236/trunk@9150 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:47:25 +00:00
dcone%netscape.com
b1a6f655d7 added better tracking
git-svn-id: svn://10.0.0.236/trunk@9149 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:46:53 +00:00
spider%netscape.com
18df3a3df2 Fix for modifier key state on keyboard messages
git-svn-id: svn://10.0.0.236/trunk@9148 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 21:14:45 +00:00
despotdaemon%netscape.com
7df5e2ec9a Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@9147 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 20:03:42 +00:00
rods%netscape.com
8aafdcac95 Removed nsDeviceCOntextUnix header file and replaced it with nsIDeviceContext
git-svn-id: svn://10.0.0.236/trunk@9146 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 20:01:41 +00:00
mccabe%netscape.com
c918d7df77 Further exception work - added 'message' to the js_ErrorToException
call, and experimented with copying the original JSErrorReport into
private data.  Much of this to support a toString method for exception
objects.

It's not polished, but I wanted to get toString available quickly.


git-svn-id: svn://10.0.0.236/trunk@9145 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 20:01:34 +00:00
rods%netscape.com
53df78b377 Fixed a bug in ConvertPixel
git-svn-id: svn://10.0.0.236/trunk@9144 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:51:32 +00:00
rods%netscape.com
65e3dacb58 Implemented ConvertPixel
git-svn-id: svn://10.0.0.236/trunk@9143 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:33:01 +00:00
rods%netscape.com
9db59e2782 Implemented ConvertPixel
git-svn-id: svn://10.0.0.236/trunk@9142 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:26:43 +00:00
rods%netscape.com
3f2149f1d8 Added ConvertPixel to nsIDeviceContext
git-svn-id: svn://10.0.0.236/trunk@9141 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:24:05 +00:00
sar%netscape.com
fc0025b59b Smartupdate landing. Added autoinstl to project.
git-svn-id: svn://10.0.0.236/trunk@9140 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:19:51 +00:00
raman%netscape.com
ad49532330 Build Smartupdate when MOZ_SMARTUPDATE is defined
git-svn-id: svn://10.0.0.236/trunk@9139 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:16:07 +00:00
cyeh%netscape.com
b562308535 change version number to reflect reality
git-svn-id: svn://10.0.0.236/trunk@9138 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:12:26 +00:00
raman%netscape.com
baba7c683c Added CPPSRCS
git-svn-id: svn://10.0.0.236/trunk@9137 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:11:06 +00:00
raman%netscape.com
8a29b1f0b1 Added getSigners API for SmartUpate
git-svn-id: svn://10.0.0.236/trunk@9136 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:10:57 +00:00
cyeh%netscape.com
c9567944e7 change version number to reflect alpha reality
git-svn-id: svn://10.0.0.236/trunk@9135 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:10:53 +00:00
raman%netscape.com
4215e79a8b Merging 4.5 softupdate changes and converting Java code into C++ code and making smartupdate build when MOZ_SMARTUPDATE is defined
git-svn-id: svn://10.0.0.236/trunk@9134 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:09:53 +00:00
raman%netscape.com
6342a98244 Merging 4.5 Libreg changes
git-svn-id: svn://10.0.0.236/trunk@9133 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:09:30 +00:00
raman%netscape.com
03a634f27d removing smartupdate related code, because it is not dependent on Java
git-svn-id: svn://10.0.0.236/trunk@9132 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:09:03 +00:00
raman%netscape.com
fa2721bd60 Added a background/autoupdate pulling of URLs
git-svn-id: svn://10.0.0.236/trunk@9131 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:08:32 +00:00
raman%netscape.com
803782c140 Added a background, autoupdate pulling of URLs
git-svn-id: svn://10.0.0.236/trunk@9130 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:08:00 +00:00
raman%netscape.com
37d6196690 Added SmartUpdate related strings
git-svn-id: svn://10.0.0.236/trunk@9129 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:05:49 +00:00
raman%netscape.com
5db8e09c17 Added SmartUpdate related strings
git-svn-id: svn://10.0.0.236/trunk@9128 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:05:48 +00:00
raman%netscape.com
6b27df86ca Merging 4.5 SmartUpdate changes
git-svn-id: svn://10.0.0.236/trunk@9127 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:05:33 +00:00
raman%netscape.com
bfa28a9e3a Build SmartUpdate when MOZ_SMARTUPDATE is defined
git-svn-id: svn://10.0.0.236/trunk@9126 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:05:13 +00:00
cyeh%netscape.com
20de3f4004 disable setting the agent for right now
git-svn-id: svn://10.0.0.236/trunk@9125 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:04:13 +00:00
terry%netscape.com
8695c64724 Patch by Sam Ziegler <ziegler@mediaguaranty.com> -- allow querying for
empty resolution.


git-svn-id: svn://10.0.0.236/trunk@9124 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 19:02:30 +00:00
terry%netscape.com
67e772ba10 Changelog of important Bugzilla changes.
git-svn-id: svn://10.0.0.236/trunk@9123 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 18:56:48 +00:00
cls%seawood.org
f1b39ff147 Sync'd with Makefile.
git-svn-id: svn://10.0.0.236/trunk@9122 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 18:56:17 +00:00
terry%netscape.com
978e4f71bb Changed the way password validation works. We now keep a
crypt'd version of the password in the database, and check against
that.  (This is silly, because we're also keeping the plaintext
version there, but I have plans...)  Stop passing the plaintext
password around as a cookie; instead, we have a cookie that references
a record in a new database table, logincookies.

IMPORTANT: if updating from an older version of Bugzilla, you must run
the following commands to keep things working:

 ./makelogincookiestable.sh
 echo "alter table profiles add column cryptpassword varchar(64);" | mysql bugs
 echo "update profiles set cryptpassword = encrypt(password,substring(rand(),3, 4));" | mysql bugs


git-svn-id: svn://10.0.0.236/trunk@9121 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 18:54:54 +00:00
cls%seawood.org
c36a681815 Removed OJI ifdef from LO_GetBuiltInAttribute() as the LO_BuiltinStruct is the same for both cases.
git-svn-id: svn://10.0.0.236/trunk@9120 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 18:54:53 +00:00
cls%seawood.org
bdceeef8ff Added check for HAVE_SYSERRLIST to get rid of redefinition warning when using autoconf.
git-svn-id: svn://10.0.0.236/trunk@9119 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 18:52:56 +00:00
kipp%netscape.com
ffd0bfbf4a Added new atoms
git-svn-id: svn://10.0.0.236/trunk@9118 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 18:40:08 +00:00
terry%netscape.com
c59042bc00 Mention the "comments" file.
git-svn-id: svn://10.0.0.236/trunk@9117 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 18:34:04 +00:00
kostello%netscape.com
137860a951 Add nsILookAndFeel.h MANIFEST
git-svn-id: svn://10.0.0.236/trunk@9116 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 17:58:37 +00:00
pinkerton%netscape.com
db81b82093 fix build bustage on mac (rev mjudge).
git-svn-id: svn://10.0.0.236/trunk@9115 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 16:15:43 +00:00
cmanske%netscape.com
291759bd6f Fixed build bustage for Mac
git-svn-id: svn://10.0.0.236/trunk@9114 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 16:08:46 +00:00
ramiro%netscape.com
b1712051f1 Add support for -config-dir command line flag. That means mozilla can now
use a configdir other that ~/.netscape without having to do HOME environment
hacks.
Thanks to Aleksey Nogin (ayn2@cornell.edu) for doing all the work and being
patient for me to actually check the stuff in.


git-svn-id: svn://10.0.0.236/trunk@9113 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 14:29:42 +00:00
cmanske%netscape.com
a1fc084b4f Composer work: Check for valid charset in metatag, paste character style, split table cell, optimization for table cell layout (not turned on), remove P_MENU, P_DIRECTORY support for UIs
git-svn-id: svn://10.0.0.236/trunk@9112 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 14:21:41 +00:00
cmanske%netscape.com
4146681d02 Fixed comflicts with mjudge changes for Ender toolbar
git-svn-id: svn://10.0.0.236/trunk@9111 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 13:22:13 +00:00
cmanske%netscape.com
ded4aa73f8 Composer work: Menus, paste style, paragraph properties dialog improvements, remove P_MENU, P_DIRECTORY
git-svn-id: svn://10.0.0.236/trunk@9110 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 13:12:58 +00:00
cmanske%netscape.com
4f6a05c971 Added strings for new I18N features in Composer: correct bad charset param in tag
git-svn-id: svn://10.0.0.236/trunk@9109 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 13:12:40 +00:00
cmanske%netscape.com
ad98d60489 Added strings for new I18N features in Composer: correct bad charset param in tag
git-svn-id: svn://10.0.0.236/trunk@9108 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 13:12:39 +00:00
ramiro%netscape.com
99d378c03f Add support for OpenBSD. Thanks to Marco S Hyman <marc@snafu.org>.
git-svn-id: svn://10.0.0.236/trunk@9107 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 12:36:18 +00:00
mcafee%netscape.com
b04526e650 Moving getBuiltInAttribute() from winfe to layout, it's now LO_GetBuiltInAttribute(). a+r=nisheeth
git-svn-id: svn://10.0.0.236/trunk@9106 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 09:13:50 +00:00
mccabe%netscape.com
09183e892f Another platform!
Thanks go to Marc Fraioli <fraioli@dg-rtp.dg.com> for
the initial port of the js/ref standalone javascript
engine to DG/UX.


git-svn-id: svn://10.0.0.236/trunk@9105 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 08:19:31 +00:00
mccabe%netscape.com
5274fdddfe Fixes for NetBSD and OpenBSD.
Thanks Marco S Hyman <marc@snafu.org>.


git-svn-id: svn://10.0.0.236/trunk@9104 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 07:56:50 +00:00
rickg%netscape.com
061a6cb718 added new EnableParser() routine for kipp; WIP
git-svn-id: svn://10.0.0.236/trunk@9103 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 07:12:49 +00:00
cls%seawood.org
c46c240ec5 Tweaks to remove XFE dependencies from other parts of the tree. Approved by {gagan,malmer,ramiro}%netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9102 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 07:02:04 +00:00
morse%netscape.com
e7f07b3856 enable trust labels for unix
git-svn-id: svn://10.0.0.236/trunk@9101 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 05:06:15 +00:00
tomw%netscape.com
324119b646 Whoops. Use NETSCAPE_OFFICIAL, not BUILD_OFFICIAL
git-svn-id: svn://10.0.0.236/trunk@9100 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 03:20:44 +00:00
valeski%netscape.com
e753d19e38 added net_xp_file.h to #include
git-svn-id: svn://10.0.0.236/trunk@9099 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 03:01:14 +00:00
tomw%netscape.com
5da415cc22 Generate exports table for Cartman. This stuff needs to get moved out of
mozilla at some point.


git-svn-id: svn://10.0.0.236/trunk@9098 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:25:40 +00:00
peterl%netscape.com
ceda89bcfc reversed doc style sheet ordering in the style set
git-svn-id: svn://10.0.0.236/trunk@9097 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:13:37 +00:00
peterl%netscape.com
4ed0ab4604 fixed unit assumptions in map attributes into
git-svn-id: svn://10.0.0.236/trunk@9096 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:12:41 +00:00
peterl%netscape.com
9b0743f19a COMified interface
made first attribute local
added support for attr uniquing


git-svn-id: svn://10.0.0.236/trunk@9095 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:10:44 +00:00
peterl%netscape.com
c285c5e211 COMified style rule interface
git-svn-id: svn://10.0.0.236/trunk@9094 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:09:43 +00:00
peterl%netscape.com
5c26a357cc sync to attribute container api change
git-svn-id: svn://10.0.0.236/trunk@9093 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:08:14 +00:00
peterl%netscape.com
c1e4733c3b added DTD mode
git-svn-id: svn://10.0.0.236/trunk@9092 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:07:42 +00:00
peterl%netscape.com
60f33a4ff1 reversed style sheet order in the set
added DTD mode


git-svn-id: svn://10.0.0.236/trunk@9091 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:06:39 +00:00
peterl%netscape.com
4c10477c7c added support for uniquing attr containers
git-svn-id: svn://10.0.0.236/trunk@9090 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:05:53 +00:00
peterl%netscape.com
61a871690c added support for uniquing attribute containers
git-svn-id: svn://10.0.0.236/trunk@9089 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:05:13 +00:00
peterl%netscape.com
f4f7396cb9 COMified some interfaces
git-svn-id: svn://10.0.0.236/trunk@9088 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:03:24 +00:00
peterl%netscape.com
48058fdd77 turned around doc style sheet order
git-svn-id: svn://10.0.0.236/trunk@9087 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:02:53 +00:00
peterl%netscape.com
704c2ac772 comment about style sheet ordering
git-svn-id: svn://10.0.0.236/trunk@9086 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:02:30 +00:00
peterl%netscape.com
9ff39fd8a4 reversed style sheet ordering in the set
git-svn-id: svn://10.0.0.236/trunk@9085 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:02:14 +00:00
peterl%netscape.com
6a5da9f5b6 comments on sheet/rule ordering
git-svn-id: svn://10.0.0.236/trunk@9084 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:00:24 +00:00
peterl%netscape.com
cdc1c65a3d COMified
git-svn-id: svn://10.0.0.236/trunk@9083 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 02:00:05 +00:00
peterl%netscape.com
65f20a2d5a changed HashCode to HashValue and fixed return type
git-svn-id: svn://10.0.0.236/trunk@9082 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 01:59:30 +00:00
akkana%netscape.com
7c2b2d86a6 new FE_EncodingDialog to match new API in edtutil.cpp
git-svn-id: svn://10.0.0.236/trunk@9081 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 01:39:39 +00:00
mcafee%netscape.com
ed5c09e2ca Solaris wants EOF character, added comment for #endif.
git-svn-id: svn://10.0.0.236/trunk@9080 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 01:35:54 +00:00
kipp%netscape.com
a19b11738f Added new atoms
git-svn-id: svn://10.0.0.236/trunk@9079 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 01:08:32 +00:00
kipp%netscape.com
ea7ccf3372 New content spanking to use new impl macros for attributes
git-svn-id: svn://10.0.0.236/trunk@9078 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 01:08:23 +00:00
kipp%netscape.com
03e3476df4 Added new source to the build
git-svn-id: svn://10.0.0.236/trunk@9077 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 01:08:15 +00:00
valeski%netscape.com
80669eb600 Adding layer of abstraction (via #defines) between netlib and file code (XP_File*). This will allow raptor to build with a different file implementation (nsINetFile) and no longer rely on XP_File*(). All XP_File*() routines were renamed to NET_XP_File*(). The #define to do the masking is mozilla/network/main/net_xp_file.h .
Aleks told me all I had to do in order to export net_xp_file.h on the mac was to include it in mozilla/network/main/manifest. I did that, so, if mac builds break in netlib, it's likely the exporting of the file isn't happening (I'm not sure of the state of manifest files anymore) and I don't have a mac. So if MAC BREAKS, please add the file to the mac project and check it in (thank you).

I'll be at 408.867.2701 or cell - 415.307.7101 tonight.


git-svn-id: svn://10.0.0.236/trunk@9076 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 01:00:42 +00:00
kipp%netscape.com
17c6dc528b new
git-svn-id: svn://10.0.0.236/trunk@9075 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:56:01 +00:00
cls%seawood.org
4fadfde870 Sync'd Makefile.ins
git-svn-id: svn://10.0.0.236/trunk@9074 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:54:34 +00:00
cls%seawood.org
6ba7c9234f Added blizzard@appliedtheory.com's patches for gnomefe and enable-pthreads.
git-svn-id: svn://10.0.0.236/trunk@9073 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:52:55 +00:00
cls%seawood.org
dafe049ebd Sync'd and moved GARBAGE before rules.mk.
git-svn-id: svn://10.0.0.236/trunk@9072 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:34:07 +00:00
rpotts%netscape.com
ca9ef3c2e8 Fixed return value from PerformNastyWindowsAsyncDNSHack(...)
git-svn-id: svn://10.0.0.236/trunk@9071 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:27:54 +00:00
slamm%netscape.com
034db9db1f Dynamically add items (previously we rebuilt the whole thing).
git-svn-id: svn://10.0.0.236/trunk@9070 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:26:27 +00:00
slamm%netscape.com
9bee1c7ae6 Add support for FE commands from RDF.
git-svn-id: svn://10.0.0.236/trunk@9069 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:26:24 +00:00
slamm%netscape.com
bb5aa010d4 Get rid of unused notification.
git-svn-id: svn://10.0.0.236/trunk@9068 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:26:21 +00:00
slamm%netscape.com
be1460ac84 Add const'ness to function.
git-svn-id: svn://10.0.0.236/trunk@9067 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:26:18 +00:00
slamm%netscape.com
f0d2463f35 Translate 'stop' to xfeCmdStopLoading (in addition to 'abort'). This is used by the RDF command translation.
git-svn-id: svn://10.0.0.236/trunk@9066 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-02 00:26:15 +00:00
beard%netscape.com
dd8e829ab2 Added call to np_UnloadPluginClass in NPL_Shutdown.
git-svn-id: svn://10.0.0.236/trunk@9065 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:57:50 +00:00
kostello%netscape.com
2a60b87633 Removed nsHTMLParts.cpp
git-svn-id: svn://10.0.0.236/trunk@9064 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:56:40 +00:00
beard%netscape.com
45912ca0ac Added call to NPL_Shutdown.
git-svn-id: svn://10.0.0.236/trunk@9063 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:55:59 +00:00
terry%netscape.com
2be4d8d00a Tell people that they have to "create database bugs;".
git-svn-id: svn://10.0.0.236/trunk@9062 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:55:45 +00:00
ltabb%netscape.com
0ec2537a01 added CalendarClient
git-svn-id: svn://10.0.0.236/trunk@9061 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:48:27 +00:00
sdagley%netscape.com
f6180ffc6f Fix #316690. Reviewed/approved aoki (in veditz's absence). Fix hard coded reference to "Netscape Registry" so that Mozilla uses its own "Navigator Regsitry".
git-svn-id: svn://10.0.0.236/trunk@9060 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:44:31 +00:00
despotdaemon%netscape.com
c90e52b4c2 Pseudo-automatic update of changes made by ltabb@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9059 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:42:53 +00:00
kmcclusk%netscape.com
94082b87b8 More 8BIT visual support.
git-svn-id: svn://10.0.0.236/trunk@9058 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:22:49 +00:00
rods%netscape.com
04398eaf11 Cast mWidget to Widget
git-svn-id: svn://10.0.0.236/trunk@9057 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:21:38 +00:00
rods%netscape.com
5e494d6339 Fixed SetLabel and Get Label in nsDialog
git-svn-id: svn://10.0.0.236/trunk@9056 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 23:13:43 +00:00
rods%netscape.com
d2416e1378 Added Top 100
git-svn-id: svn://10.0.0.236/trunk@9055 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:49:58 +00:00
rods%netscape.com
119a854357 The statusbar is now sized via the LookAndFeel defaults
git-svn-id: svn://10.0.0.236/trunk@9054 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:49:16 +00:00
danm%netscape.com
d5e7ca614a save/restore toolbar collapsed state from RDF
git-svn-id: svn://10.0.0.236/trunk@9053 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:48:17 +00:00
rods%netscape.com
badc0769db Fixed an include and a few nsString defs
git-svn-id: svn://10.0.0.236/trunk@9052 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:48:08 +00:00
rods%netscape.com
566557a3f0 Added InstallColormap call to ConvertPixel
git-svn-id: svn://10.0.0.236/trunk@9051 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:44:17 +00:00
rods%netscape.com
05aeccd5ca Exported nsDeviceContentUnix.h its needed by nsWindow for SetForegroundColor
and SetBackgroundColor


git-svn-id: svn://10.0.0.236/trunk@9050 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:43:38 +00:00
guha%netscape.com
6332596a4d Fix extra comma problem --- (jgellman)
git-svn-id: svn://10.0.0.236/trunk@9049 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:43:32 +00:00
rods%netscape.com
76b95ee227 SetForegroundColor and SetBackground work properly
Enabled implemented


git-svn-id: svn://10.0.0.236/trunk@9048 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:42:13 +00:00
rods%netscape.com
9478439139 SetForegroundColor and SetBackground work properly
git-svn-id: svn://10.0.0.236/trunk@9047 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:41:39 +00:00
rpotts%netscape.com
d49946e886 Fixed build bustage due to NSRepository renaming...
git-svn-id: svn://10.0.0.236/trunk@9046 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:37:27 +00:00
pinkerton%netscape.com
d11dbb57ab Removing const on pass-by-value params.
git-svn-id: svn://10.0.0.236/trunk@9045 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:30:24 +00:00
akkana%netscape.com
08357fe683 Call new FE_EncodingDialog
git-svn-id: svn://10.0.0.236/trunk@9044 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:19:12 +00:00
guha%netscape.com
1f401e1f45 Bunch of bug fixes, etc. Reviewd by jgellman
git-svn-id: svn://10.0.0.236/trunk@9043 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:18:34 +00:00
clu%netscape.com
f5ddf2b63e I18N work for encoding menu (reviewed brade)
git-svn-id: svn://10.0.0.236/trunk@9042 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 22:15:46 +00:00
kmcclusk%netscape.com
c3aa4dba38 Add some 8-bit color support + removed bit conversion in nsImageUnix.cpp Draw.
git-svn-id: svn://10.0.0.236/trunk@9041 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 21:24:32 +00:00
cmanske%netscape.com
1b05ddb812 Added FE_EncodingDialog stub necessary for futher encoding work (and build won't crash!)
git-svn-id: svn://10.0.0.236/trunk@9040 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 21:09:30 +00:00
rods%netscape.com
05b008edf1 Added LookAndFeel
git-svn-id: svn://10.0.0.236/trunk@9039 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 21:08:32 +00:00
terry%netscape.com
110fe5a836 Patch inspired by Sam Ziegler <ziegler@mediaguaranty.com> -- deal
better with product names that have spaces or other weird stuff in them.


git-svn-id: svn://10.0.0.236/trunk@9038 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 21:01:44 +00:00
terry%netscape.com
8b1f3d52f9 Patch by Sam Ziegler <ziegler@mediaguaranty.com> -- add a handy link
to enter a new bug.


git-svn-id: svn://10.0.0.236/trunk@9037 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 21:01:10 +00:00
rods%netscape.com
acef905cbe Fixed small compiler error
git-svn-id: svn://10.0.0.236/trunk@9036 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:57:16 +00:00
rods%netscape.com
d4db10c832 Renamed the enums to be more compiliant with naming conventions,
Changed API to be XP_COM correct
Added eMetric_TextHeight enum


git-svn-id: svn://10.0.0.236/trunk@9035 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:54:39 +00:00
terry%netscape.com
eba879a8ca Use POST, not GET. Allow for boolean params.
git-svn-id: svn://10.0.0.236/trunk@9034 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:54:24 +00:00
danm%netscape.com
14d930dc6d add new toolbar properties, fix early freemem in HT_SetNodeData, bmkNotifFunc notifies for all unassertions regardless of property type. r:rjc
git-svn-id: svn://10.0.0.236/trunk@9033 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:51:45 +00:00
cyeh%netscape.com
f86d88868b Dates are implemented in the non-standard way of starting from 1904 instead of 1970. As a result, we must add back those lost years in order to get cross platform compatibility with other perl time implementations. Special thanks to Chris Nandor (pudge@pobox.com) for unsticking my brain and providing a rough conversion routine.
git-svn-id: svn://10.0.0.236/trunk@9032 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:41:45 +00:00
kmcclusk%netscape.com
e1725a42b9 Removed mouse debug printf.
git-svn-id: svn://10.0.0.236/trunk@9031 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:32:56 +00:00
pinkerton%netscape.com
593aba4abe back to the AM version.
git-svn-id: svn://10.0.0.236/trunk@9030 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:30:55 +00:00
kmcclusk%netscape.com
9a65fa5b1b Added support for 16-bit visuals.
git-svn-id: svn://10.0.0.236/trunk@9029 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:30:42 +00:00
dcone%netscape.com
11f76bfa6b Fixed mouseup messaging
git-svn-id: svn://10.0.0.236/trunk@9028 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:24:54 +00:00
cls%seawood.org
76268b0341 Sync'd.
git-svn-id: svn://10.0.0.236/trunk@9027 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:24:24 +00:00
pinkerton%netscape.com
96501b1fca turn on trust labels for mac.
git-svn-id: svn://10.0.0.236/trunk@9026 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:23:44 +00:00
cls%seawood.org
c20beab072 Added DOM changes.
git-svn-id: svn://10.0.0.236/trunk@9025 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:23:24 +00:00
pinkerton%netscape.com
71712134bd add mkaccess.h to dist
git-svn-id: svn://10.0.0.236/trunk@9024 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:22:23 +00:00
pinkerton%netscape.com
2214a2a3e7 turn on trust labels for mac and fix mac problem.
git-svn-id: svn://10.0.0.236/trunk@9023 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:22:11 +00:00
pinkerton%netscape.com
d9a4819ca7 turn on trust labels on mac.
git-svn-id: svn://10.0.0.236/trunk@9022 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:21:19 +00:00
bjorn%netscape.com
7b045fdab6 Added compare-and-swap patches for AIX (_check_lock) and Solaris (stbar).
git-svn-id: svn://10.0.0.236/trunk@9021 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:21:11 +00:00
pinkerton%netscape.com
3263b3a8ac use function to get at global image cache.
git-svn-id: svn://10.0.0.236/trunk@9020 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:20:29 +00:00
kostello%netscape.com
85648460a7 Added nsHTMLBody.cpp, nsHTMLDList.cpp, nsHTMLDel.cpp, nsHTMLDirectory.cpp, nsHTMLDiv.cpp
git-svn-id: svn://10.0.0.236/trunk@9019 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:20:06 +00:00
pinkerton%netscape.com
767b0ee7b1 pull out unused lines.
git-svn-id: svn://10.0.0.236/trunk@9018 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:19:53 +00:00
pinkerton%netscape.com
fb40581e50 making RefreshRowRange const.
git-svn-id: svn://10.0.0.236/trunk@9017 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:19:34 +00:00
pinkerton%netscape.com
61cec2f531 making stuff const, making other stuff non-virtual.
git-svn-id: svn://10.0.0.236/trunk@9016 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:19:14 +00:00
pinkerton%netscape.com
b34a4917dc use new function to get global.
git-svn-id: svn://10.0.0.236/trunk@9015 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:18:23 +00:00
pinkerton%netscape.com
828552e105 Renaming class to CImageCache because that's what it is.
git-svn-id: svn://10.0.0.236/trunk@9014 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:18:10 +00:00
pinkerton%netscape.com
887b5a178a Making some more stuff const.
git-svn-id: svn://10.0.0.236/trunk@9013 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:17:46 +00:00
pinkerton%netscape.com
8c86df56bf Added CProgressCaption
git-svn-id: svn://10.0.0.236/trunk@9012 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:17:11 +00:00
pinkerton%netscape.com
b257b57e1b updated for new CProgressCaption.
git-svn-id: svn://10.0.0.236/trunk@9011 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:16:59 +00:00
pinkerton%netscape.com
4e5e360aa2 updated for new CProgressCaption
git-svn-id: svn://10.0.0.236/trunk@9010 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:16:43 +00:00
pinkerton%netscape.com
4c0e52f3e9 fix some code for offline to use the new progress bar class.
git-svn-id: svn://10.0.0.236/trunk@9009 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:14:08 +00:00
pinkerton%netscape.com
b43dcc8fd2 New progress bar based on AM.
git-svn-id: svn://10.0.0.236/trunk@9008 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:13:48 +00:00
pinkerton%netscape.com
abcc2d45a0 Registering some AM classes for the progress bar and removing obsolete ones we wrong ourselves.
git-svn-id: svn://10.0.0.236/trunk@9007 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:13:10 +00:00
pinkerton%netscape.com
186be1466f Removed CProgressBar and CPatternProgressBar because CProgressCaption replaces it.
git-svn-id: svn://10.0.0.236/trunk@9006 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:12:34 +00:00
pinkerton%netscape.com
3c3fb4e000 splash screen to match windows.
git-svn-id: svn://10.0.0.236/trunk@9005 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:11:09 +00:00
pinkerton%netscape.com
a1a2c8e6de Redundant implementation (lib/mac/UserInterface is the good one).
git-svn-id: svn://10.0.0.236/trunk@9004 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:10:25 +00:00
gagan%netscape.com
4835fef626 Changes from NuCache. Should'nt affect the build.
git-svn-id: svn://10.0.0.236/trunk@9003 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 20:00:07 +00:00
cls%seawood.org
fd1035a222 Fixed problems with parallel make.
git-svn-id: svn://10.0.0.236/trunk@9002 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:50:28 +00:00
cls%seawood.org
f4db6709de Added ifdef OJI around JVMPlugin define
git-svn-id: svn://10.0.0.236/trunk@9001 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:45:35 +00:00
valeski%netscape.com
ed5f2fad9f xp_dir to pr_dir
git-svn-id: svn://10.0.0.236/trunk@8999 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:18:00 +00:00
vidur%netscape.com
9eb23637ff Proper shutdown of JS engine
git-svn-id: svn://10.0.0.236/trunk@8998 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:13:36 +00:00
kipp%netscape.com
ad009e1438 Added new source to build
git-svn-id: svn://10.0.0.236/trunk@8997 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:13:02 +00:00
kipp%netscape.com
dcc313a3b7 Added new methods
git-svn-id: svn://10.0.0.236/trunk@8996 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:10:14 +00:00
akkana%netscape.com
d1fff060c6 New FE encoding dialog
git-svn-id: svn://10.0.0.236/trunk@8995 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:09:28 +00:00
kipp%netscape.com
5db3c8ded9 Added new files to build
git-svn-id: svn://10.0.0.236/trunk@8994 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:08:44 +00:00
kipp%netscape.com
3f4b2f7d99 Fixed boolean handling in hr
git-svn-id: svn://10.0.0.236/trunk@8993 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:08:36 +00:00
kipp%netscape.com
c4f158b374 new
git-svn-id: svn://10.0.0.236/trunk@8992 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:07:50 +00:00
akkana%netscape.com
61e70e439f Type and prototype for new FE encoding dialog
git-svn-id: svn://10.0.0.236/trunk@8991 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 19:07:27 +00:00
valeski%netscape.com
c66827cc8b adding net_xp_file.h to the list of exports
git-svn-id: svn://10.0.0.236/trunk@8990 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:59:17 +00:00
valeski%netscape.com
f217d60eb4 this file adds a level of abstraction between netlib and xp_file routines.
git-svn-id: svn://10.0.0.236/trunk@8989 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:55:22 +00:00
mjudge%netscape.com
edb5d85d3c Ender reload and new toolbar code
git-svn-id: svn://10.0.0.236/trunk@8988 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:53:36 +00:00
mjudge%netscape.com
bcc969ba8d more Ender things... Reload ect.
git-svn-id: svn://10.0.0.236/trunk@8987 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:52:52 +00:00
mjudge%netscape.com
f774effd17 Reload for Ender
git-svn-id: svn://10.0.0.236/trunk@8986 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:52:11 +00:00
mjudge%netscape.com
b55d68ba95 Fixes for ender to beat 9-1 reviewed winfe specific changes from Bill Law
git-svn-id: svn://10.0.0.236/trunk@8985 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:51:22 +00:00
ftang%netscape.com
d40148503c check in RDF UTF8 drawing, reviewed by hyatt severl days ago
git-svn-id: svn://10.0.0.236/trunk@8984 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:50:05 +00:00
scc%netscape.com
7ec8f8f604 Added a constructor from SPaneInfo and SViewInfo instead of an LStream; factored behavior from constructors into |common_initialization()|
git-svn-id: svn://10.0.0.236/trunk@8983 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:42:52 +00:00
scc%netscape.com
4444e89bbc new method |AddBar| as with RDF, not all bars come from the construction stream; also fixed routines that expected all bars to exist instantly to be a little more forgiving
git-svn-id: svn://10.0.0.236/trunk@8982 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:41:28 +00:00
scc%netscape.com
d7f0325595 First Checked In.
git-svn-id: svn://10.0.0.236/trunk@8981 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 18:39:08 +00:00
buster%netscape.com
f79492b78c empty rows now handled properly
git-svn-id: svn://10.0.0.236/trunk@8980 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 17:49:05 +00:00
despotdaemon%netscape.com
925fbc076c Pseudo-automatic update of changes made by rogerl@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8979 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 17:34:16 +00:00
rods%netscape.com
6d66f71fcf Removed some windows specific code and changed to xp code.
git-svn-id: svn://10.0.0.236/trunk@8978 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 16:29:05 +00:00
rods%netscape.com
4543df6c4b Changed the Windows platform specific dialogs to cross platform dialogs
git-svn-id: svn://10.0.0.236/trunk@8977 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 16:15:16 +00:00
despotdaemon%netscape.com
4e885a8ae1 Pseudo-automatic update of changes made by shaver@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8976 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 16:05:55 +00:00
kostello%netscape.com
de53dbf358 Added new content objects to project file:
nsHTMLArea
nsHTMLBaseFont
nsHTMLInput
nsHTMLLink
nsHTMLParam
nsHTMLScript
nsHTMLStyle


git-svn-id: svn://10.0.0.236/trunk@8975 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 15:30:45 +00:00
rods%netscape.com
1e8647294a Added nsDialog
git-svn-id: svn://10.0.0.236/trunk@8974 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 15:29:47 +00:00
rods%netscape.com
25d3af84a1 Added the managed widget to make it work.
git-svn-id: svn://10.0.0.236/trunk@8973 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 15:28:40 +00:00
terry%netscape.com
72367ff251 Use the "urlbase" param. Make regeneration easier.
git-svn-id: svn://10.0.0.236/trunk@8972 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 14:02:13 +00:00
shaver%netscape.com
8b8a2d4790 don't call layout from the mocha thread, and other progress
git-svn-id: svn://10.0.0.236/trunk@8971 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 12:54:17 +00:00
shaver%netscape.com
eb8ec7d6d1 fix dumb typo (how embarrassing)
git-svn-id: svn://10.0.0.236/trunk@8970 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 12:52:30 +00:00
shaver%netscape.com
00bff720d0 if throwing, cx->exception is a valid root
git-svn-id: svn://10.0.0.236/trunk@8969 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 12:38:59 +00:00
ramiro%netscape.com
39c80534b0 Add XfeTopShadowColor() and XfeBottomShadowColor().
git-svn-id: svn://10.0.0.236/trunk@8968 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 08:26:03 +00:00
ramiro%netscape.com
5cf0cf98f7 Add virtual functions getFGPixel() getBGPixel() getTopShadowPixel()
getBottomShadowPixel().


git-svn-id: svn://10.0.0.236/trunk@8967 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 08:24:40 +00:00
ramiro%netscape.com
1a13e6103c Protect the usage of m_toplevel with XP_ASSERT().
git-svn-id: svn://10.0.0.236/trunk@8966 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 08:23:37 +00:00
rpotts%netscape.com
b1f6a2ce4b Added a new windows-only subdirectory called embed/AcviveX which contains an ActiveX wrapper control for NGLayout
git-svn-id: svn://10.0.0.236/trunk@8965 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 08:07:56 +00:00
nisheeth%netscape.com
8252421f26 Fix for bug# 313278. Random links on the page were unclickable.
The problem was that the width and height of the dummy floating element that gets appended to the line list were not being initialized to 0 in lo_AppendFloatToLineList() and was
fooling the selection code into thinking that the floating element is insanely large.
So, the link wasn't being returned to the FE when you moused over it.


git-svn-id: svn://10.0.0.236/trunk@8964 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 05:40:50 +00:00
terry%netscape.com
51c3eedb87 Oh, gee, djw doesn't work here anymore, and doesn't own the Layout
module anymore.  Whoops.

I gotta make all our "lists of owners" sync'd together...


git-svn-id: svn://10.0.0.236/trunk@8963 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 04:58:10 +00:00
terry%netscape.com
ad73b379e6 Fixed bug #541 -- sorting by "assignee" now works.
git-svn-id: svn://10.0.0.236/trunk@8962 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 04:41:58 +00:00
warren%netscape.com
0440512d07 Removed secstubn.h for mac build.
git-svn-id: svn://10.0.0.236/trunk@8961 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 04:35:11 +00:00
terry%netscape.com
865baefe82 Added parameters to specify the HTML that goes at the top of every
page.  The banner.html and blurb.html files are now obsolete!


git-svn-id: svn://10.0.0.236/trunk@8960 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 04:33:37 +00:00
terry%netscape.com
1732adfa07 Whine at people who haven't been checking their NEW bugs.
git-svn-id: svn://10.0.0.236/trunk@8959 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 04:22:32 +00:00
terry%netscape.com
fcf05717c4 Allow editing of parameters via a web page.
git-svn-id: svn://10.0.0.236/trunk@8958 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 04:21:45 +00:00
warren%netscape.com
6a09708500 Changed c++ comments for inclusion in c files.
git-svn-id: svn://10.0.0.236/trunk@8957 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 04:15:07 +00:00
warren%netscape.com
d3527a8a0b Added xpcom dependency.
git-svn-id: svn://10.0.0.236/trunk@8956 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 03:30:59 +00:00
jgellman%netscape.com
2f90c9532f remove bogus assertions
git-svn-id: svn://10.0.0.236/trunk@8955 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 03:26:16 +00:00
warren%netscape.com
937ce00468 Added requires for xpcom.
git-svn-id: svn://10.0.0.236/trunk@8954 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 02:45:39 +00:00
warren%netscape.com
8f61f8eb54 Added requires for oji and ojiimpl
git-svn-id: svn://10.0.0.236/trunk@8953 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:59:14 +00:00
terry%netscape.com
29bafb193c Fix up NPL and comments that cls%seawood.org horked.
git-svn-id: svn://10.0.0.236/trunk@8952 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:41:07 +00:00
terry%netscape.com
f2de337030 Fix up indentation that cls%seawood.org horked.
git-svn-id: svn://10.0.0.236/trunk@8951 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:40:24 +00:00
kipp%netscape.com
bcae082904 Added some style rules for new content objects
git-svn-id: svn://10.0.0.236/trunk@8950 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:37:43 +00:00
kipp%netscape.com
887320a8d2 Implement NS_CreateHTMLElement using same code that content sink uses; create various and sundry new content objects
git-svn-id: svn://10.0.0.236/trunk@8949 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:37:17 +00:00
kipp%netscape.com
bfcb0c92bc Stop building nsHTMLParts.cpp (obsolete)
git-svn-id: svn://10.0.0.236/trunk@8948 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:36:39 +00:00
kipp%netscape.com
9a73352750 Moved over more attribute parsing routines
git-svn-id: svn://10.0.0.236/trunk@8947 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:36:11 +00:00
kipp%netscape.com
8fe9b5e86a Added new source files
git-svn-id: svn://10.0.0.236/trunk@8946 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:35:34 +00:00
kipp%netscape.com
a716f18685 Revised factory method argument order (normalized)
git-svn-id: svn://10.0.0.236/trunk@8945 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:35:19 +00:00
kipp%netscape.com
2e717f67f3 Added missing atoms
git-svn-id: svn://10.0.0.236/trunk@8944 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:34:32 +00:00
kipp%netscape.com
ade8b21e54 Added factory method names for all the new content objects
git-svn-id: svn://10.0.0.236/trunk@8943 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:33:19 +00:00
kipp%netscape.com
a1599a84e2 added new atoms
git-svn-id: svn://10.0.0.236/trunk@8942 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:32:58 +00:00
kipp%netscape.com
0435e1c021 Unset boolean attributes (noshade)
git-svn-id: svn://10.0.0.236/trunk@8941 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:32:05 +00:00
kipp%netscape.com
7528331669 Twiddled object frame argument order
git-svn-id: svn://10.0.0.236/trunk@8940 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:31:50 +00:00
cyeh%netscape.com
42e5816d97 FTSO MacPerl. Dates are implemented in the non-standard way of starting from 1904 instead of 1970. As a result, we must add back those lost years in order to get cross platform compatibility with other perl time implementations. Please shoot me.
git-svn-id: svn://10.0.0.236/trunk@8939 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:31:32 +00:00
kipp%netscape.com
77788c00a0 new content version
git-svn-id: svn://10.0.0.236/trunk@8938 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:31:20 +00:00
kipp%netscape.com
663af9cca3 new
git-svn-id: svn://10.0.0.236/trunk@8937 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:27:08 +00:00
beard%netscape.com
2e03ecb2b3 Fixed nsRepository exports, and return type signature change for nsHashtable::Enumerate() which used to return int, and now returns void.
git-svn-id: svn://10.0.0.236/trunk@8936 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:23:54 +00:00
beard%netscape.com
752f4aefc8 Moved Checking nsServiceManager.cpp into the xpcom - src folder.
git-svn-id: svn://10.0.0.236/trunk@8935 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:22:23 +00:00
terry%netscape.com
0dbb7eb2fd Do some simple sanity checks.
git-svn-id: svn://10.0.0.236/trunk@8934 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:20:36 +00:00
warren%netscape.com
b6420f1ff6 Added ojiimpl requirement for jvmmgr.h
git-svn-id: svn://10.0.0.236/trunk@8933 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:19:59 +00:00
mccabe%netscape.com
cead6ec411 restore npl.
git-svn-id: svn://10.0.0.236/trunk@8932 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:16:45 +00:00
mccabe%netscape.com
f3c665324e More runtime errors now bound to exceptions.
Most of these will require a second look, but I wanted to get all of
them (that need exceptions) throwing something interesting.


git-svn-id: svn://10.0.0.236/trunk@8931 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:15:16 +00:00
cls%seawood.org
15cbb4eeb5 A few fixes to allow things to work relatively out of the box.
git-svn-id: svn://10.0.0.236/trunk@8930 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:14:20 +00:00
pierre%netscape.com
1892f9e030 enable debugger
git-svn-id: svn://10.0.0.236/trunk@8929 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:12:58 +00:00
pierre%netscape.com
716b9901a9 Make aliases of sample files.
(closed tree override: raptor checkin only)


git-svn-id: svn://10.0.0.236/trunk@8928 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:12:34 +00:00
cls%seawood.org
50516e8f79 Make a couple of tweaks to allow complete admin (expect setting passwd) via webpages.
git-svn-id: svn://10.0.0.236/trunk@8927 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:11:34 +00:00
cls%seawood.org
31a4d80bf5 Initial version
git-svn-id: svn://10.0.0.236/trunk@8926 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 01:09:43 +00:00
despotdaemon%netscape.com
6e43d75756 Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8925 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:59:46 +00:00
cyeh%netscape.com
7998ef60b2 we need a mac specific version of set-timebomb.pl. how annoying.
git-svn-id: svn://10.0.0.236/trunk@8923 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:30:17 +00:00
warren%netscape.com
d623edaca1 Renamed NSRepository to nsRepository.
git-svn-id: svn://10.0.0.236/trunk@8922 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:26:28 +00:00
warren%netscape.com
59dcb2a7df Added closure argument to nsHashtable::Enumerate. Renamed NSRepository to nsRepository.
git-svn-id: svn://10.0.0.236/trunk@8921 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:23:47 +00:00
warren%netscape.com
7730de5796 Changes for lazy java initialization.
git-svn-id: svn://10.0.0.236/trunk@8920 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:23:43 +00:00
warren%netscape.com
8fc72c0a4b Fixed Create to work with new nsAgg.h
git-svn-id: svn://10.0.0.236/trunk@8919 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:17:49 +00:00
warren%netscape.com
226ae1a7bb Changed NSServiceManager to nsServiceManager.
git-svn-id: svn://10.0.0.236/trunk@8918 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:17:47 +00:00
warren%netscape.com
324484e756 Made QI try the current object delegating to outer. Removed QI for kISupportsIID (which returned Internal). Added nsIOuter interfacewhich allows for notification of child release.
git-svn-id: svn://10.0.0.236/trunk@8917 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:17:28 +00:00
warren%netscape.com
78dddd29b1 Added FindProxyForURL.
git-svn-id: svn://10.0.0.236/trunk@8916 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:17:25 +00:00
warren%netscape.com
c2d6c41bed Added PR_DestroyLogModule.
git-svn-id: svn://10.0.0.236/trunk@8915 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:17:18 +00:00
warren%netscape.com
da4ceaa4fd Made counts be unsigned.
git-svn-id: svn://10.0.0.236/trunk@8914 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:17:09 +00:00
warren%netscape.com
99cc319bb3 Fixed signature of Write method.
git-svn-id: svn://10.0.0.236/trunk@8913 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:17:01 +00:00
warren%netscape.com
ef858a1b5a Replaced some Java error strings with OJI error strings.
git-svn-id: svn://10.0.0.236/trunk@8912 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:16:57 +00:00
warren%netscape.com
62c0a73a69 Added AWT_11 to NSJVM builds.
git-svn-id: svn://10.0.0.236/trunk@8911 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:16:53 +00:00
warren%netscape.com
24b7d5e489 Added closure argument to nsHashtable::Enumerate.
git-svn-id: svn://10.0.0.236/trunk@8910 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:16:47 +00:00
warren%netscape.com
6f46cc2695 Changes for lazy java initialization.
git-svn-id: svn://10.0.0.236/trunk@8909 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:16:08 +00:00
cyeh%netscape.com
1a58709bfd updated examples that are cleaner and multiple platform friendly.
git-svn-id: svn://10.0.0.236/trunk@8908 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:08:02 +00:00
leaf%mozilla.org
711e1f40e4 Added timebomb setting for MOZILLA_OFFICIAL builds
git-svn-id: svn://10.0.0.236/trunk@8907 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:02:58 +00:00
leaf%mozilla.org
e25b1dc5b6 Included the config directory if MOZILLA_OFFICIAL is set
git-svn-id: svn://10.0.0.236/trunk@8906 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-01 00:02:11 +00:00
beard%netscape.com
ce8cf140f2 The equals method isn't native in the Mozilla tree.
git-svn-id: svn://10.0.0.236/trunk@8905 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 23:39:51 +00:00
beard%netscape.com
005646cae3 Changed JavaPackage_resolve so that it doesn't return immediately if quiet_resolve_failure is true. Otherwise, pre_define_java_packages fails.
git-svn-id: svn://10.0.0.236/trunk@8904 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 23:39:04 +00:00
cyeh%netscape.com
1dd4359338 i hate it when i fuck up
git-svn-id: svn://10.0.0.236/trunk@8903 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 23:27:51 +00:00
cyeh%netscape.com
c3c997183a added support for automagically setting timebombs in the build. only used for mozilla official builds, shouldn't affect anything. (famous last words i know)
git-svn-id: svn://10.0.0.236/trunk@8902 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:54:56 +00:00
cyeh%netscape.com
1e3714bd28 First Checked In.
git-svn-id: svn://10.0.0.236/trunk@8901 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:51:26 +00:00
shaver%netscape.com
e413d25e7d JS_InternString is volatile, so I'll avoid its use
git-svn-id: svn://10.0.0.236/trunk@8900 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:46:06 +00:00
dcone%netscape.com
5e8902c242 fixed the mouse enter and exit routines
git-svn-id: svn://10.0.0.236/trunk@8899 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:42:44 +00:00
dcone%netscape.com
35560b569a fixed update action
git-svn-id: svn://10.0.0.236/trunk@8898 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:42:06 +00:00
shaver%netscape.com
34f95bbbdd update NodeOps APIs
git-svn-id: svn://10.0.0.236/trunk@8897 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:32:57 +00:00
shaver%netscape.com
3c890f1602 avoid dangerous JS_InternString call, and update NodeOps APIs
git-svn-id: svn://10.0.0.236/trunk@8896 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:31:44 +00:00
kipp%netscape.com
cf548d3884 Make sure we don't run off the end of the string when translating entities in attribute values
git-svn-id: svn://10.0.0.236/trunk@8895 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 22:00:04 +00:00
rods%netscape.com
8c7e275201 Fixed several crash bugs in Find
git-svn-id: svn://10.0.0.236/trunk@8894 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:56:57 +00:00
rickg%netscape.com
31ccae0cec fixed a few infinite loops in new DTD code
git-svn-id: svn://10.0.0.236/trunk@8893 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:52:47 +00:00
dcone%netscape.com
f8fe2acdde tracking updates
git-svn-id: svn://10.0.0.236/trunk@8892 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:50:59 +00:00
dcone%netscape.com
f0e842dc4a fixed some update and drawing routines
git-svn-id: svn://10.0.0.236/trunk@8891 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:50:36 +00:00
dcone%netscape.com
726f629ae1 Re-wrote the drawing routines for this widget
git-svn-id: svn://10.0.0.236/trunk@8890 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:49:49 +00:00
cyeh%netscape.com
19a361f674 add timebomb perl script to mac pull
git-svn-id: svn://10.0.0.236/trunk@8889 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:28:39 +00:00
buster%netscape.com
cb664f26da reimplemented cell map in terms of nsVoidArrays for incremental building.
the cellmap is now built incrementally, driven by nsTableRowFrame::InitialReflow


git-svn-id: svn://10.0.0.236/trunk@8888 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:23:28 +00:00
cyeh%netscape.com
afe1ba95d3 change tool call from perl5 to perl, so that i can actually build
on my primary linux machine. this is purely a selfish change, and only
enabled for official type builds.

reviewed: cyeh. approved: cyeh


git-svn-id: svn://10.0.0.236/trunk@8887 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 21:19:04 +00:00
terry%netscape.com
145536c5fa Patch by Sam Ziegler <ziegler@mediaguaranty.com> -- was crashing if
you have exactly one product defined.  Oops!


git-svn-id: svn://10.0.0.236/trunk@8886 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 20:41:13 +00:00
terry%netscape.com
da880edc7c Patch by Sam Ziegler <ziegler@mediaguaranty.com> -- do some sanity
checking on the list of column names we're given.


git-svn-id: svn://10.0.0.236/trunk@8885 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 20:38:47 +00:00
warren%netscape.com
1ce76af0e9 Added jsj_JavaMember.c (Changes from SpiderMonkey131_BRANCH of js/ref/liveconnect.)
git-svn-id: svn://10.0.0.236/trunk@8884 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 20:17:31 +00:00
beard%netscape.com
72cd4eeaee Changes from SpiderMonkey131_BRANCH of ns/ref/liveconnect.
git-svn-id: svn://10.0.0.236/trunk@8883 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 20:15:32 +00:00
beard%netscape.com
721a9a478f Added jsj_JavaMember.c (Changes from SpiderMonkey131_BRANCH of ns/ref/liveconnect.)
git-svn-id: svn://10.0.0.236/trunk@8882 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 20:12:42 +00:00
spider%netscape.com
d5529afe80 Updates for new XPCOM interface changes to the font metrics
git-svn-id: svn://10.0.0.236/trunk@8881 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 20:11:08 +00:00
spider%netscape.com
44eb3af0f3 Adding netlib to the deps for nsIURL.h
git-svn-id: svn://10.0.0.236/trunk@8880 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 20:10:40 +00:00
kostello%netscape.com
08848b2e92 Added nsHTMLBR.cpp to project file
git-svn-id: svn://10.0.0.236/trunk@8879 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 19:53:21 +00:00
kostello%netscape.com
142620bced These changes match the Windows/Unix changes to methods to take a parameter instead of returning a value.
git-svn-id: svn://10.0.0.236/trunk@8876 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 19:09:55 +00:00
kostello%netscape.com
d599cef011 Add nsIDialog.h and nsILabel.h to MANIFEST
git-svn-id: svn://10.0.0.236/trunk@8875 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 19:00:38 +00:00
kipp%netscape.com
5bba47b39c Use new SetAttr API
git-svn-id: svn://10.0.0.236/trunk@8874 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:44:11 +00:00
kipp%netscape.com
bc26d54909 Use NS_NewHTMLBR to create BR content objects
git-svn-id: svn://10.0.0.236/trunk@8873 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:40:39 +00:00
kipp%netscape.com
6efc1700b6 Added NS_NewHTMLBR
git-svn-id: svn://10.0.0.236/trunk@8872 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:40:16 +00:00
kipp%netscape.com
fe9e562295 Removed old content code
git-svn-id: svn://10.0.0.236/trunk@8871 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:40:03 +00:00
kipp%netscape.com
fe08b8a496 Use new SetAttr API; implement (cheesy) version of new SetAttr entry points
git-svn-id: svn://10.0.0.236/trunk@8870 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:39:46 +00:00
kipp%netscape.com
a71e2703a2 Define new SetAttr api
git-svn-id: svn://10.0.0.236/trunk@8869 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:39:13 +00:00
kipp%netscape.com
255014182e Use new SetAttr API
git-svn-id: svn://10.0.0.236/trunk@8868 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:38:53 +00:00
kipp%netscape.com
e209c98eab Added new source file
git-svn-id: svn://10.0.0.236/trunk@8867 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:38:37 +00:00
kipp%netscape.com
6a4a0f9c36 new
git-svn-id: svn://10.0.0.236/trunk@8866 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 18:38:27 +00:00
kipp%netscape.com
5c7786f39f Added entity reduction for attributes; fixed a bug with incremental loading that would cause some content to seemingly disappear
git-svn-id: svn://10.0.0.236/trunk@8865 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 17:51:32 +00:00
ebina%netscape.com
2fd7cc20b7 Transfer encoded gzip streams were sent to this converter, but the
transfer-encoding was never removed from the URL structure, causing
infinite recursion.  This fixes that bug.


git-svn-id: svn://10.0.0.236/trunk@8864 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 16:31:12 +00:00
kipp%netscape.com
a7b4e24cf4 Fixed porting bug when porting to xpcom'd nsIContent API
git-svn-id: svn://10.0.0.236/trunk@8863 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 16:09:06 +00:00
dcone%netscape.com
4470edff4a fixed some updating problems
git-svn-id: svn://10.0.0.236/trunk@8862 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 15:14:48 +00:00
dcone%netscape.com
b33d20d927 update fix
git-svn-id: svn://10.0.0.236/trunk@8861 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 15:10:01 +00:00
dcone%netscape.com
85b4a44fb1 fixed updating
git-svn-id: svn://10.0.0.236/trunk@8860 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 15:08:46 +00:00
ramiro%netscape.com
8843e8b87e Replace duplicate functions fe_GravityCorrectForms() and fe_ScrollForms() with
XfeMoveChildrenByOffset().


git-svn-id: svn://10.0.0.236/trunk@8859 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 14:30:56 +00:00
ramiro%netscape.com
fcf525416f Make sure the debug event comments are printed only for slamm.
git-svn-id: svn://10.0.0.236/trunk@8858 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 14:14:59 +00:00
ramiro%netscape.com
768c0e1048 Workaround for broken automated browser tests.
git-svn-id: svn://10.0.0.236/trunk@8857 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 14:10:50 +00:00
mccabe%netscape.com
a7b8207a95 Further runtime error work... expose many new errors as catchable
exceptions.  Mostly syntax errors, so far.  Fixed missing #if
JS_HAS_ERROR_EXCEPTIONS


git-svn-id: svn://10.0.0.236/trunk@8856 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 09:49:43 +00:00
mccabe%netscape.com
1cf03b53f5 Added a call to js_ErrorToException to
the compile-error reporting mechanism,
providing a way to associate exceptions
(very likely SyntaxError exceptions)
with compile-time errors.

(Hopefully this is temporary, as I'd
prefer one central place in the
error-reporting process to put the
js_ErrorToException call.)

Also changed the error reporter in js.c
to only ignore error reports marked with
the JSREPORT_EXCEPTION advisory flag when
the error occurs during javascript execution.

If it's at the toplevel compilation
level, then the error is still reported
(and the exception discarded.)

The api is feeling slightly dirtier, but
it still seems like the best
compromise...


git-svn-id: svn://10.0.0.236/trunk@8855 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 08:17:40 +00:00
mccabe%netscape.com
d4a8ee886c Added jsmsg.def to the list of files used by the
'make tar' target.


git-svn-id: svn://10.0.0.236/trunk@8854 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 07:33:13 +00:00
mccabe%netscape.com
e02c67ff07 Made the enum JSErrNum into a typedef
enum JSErrNum, and changed a uintN
errorNumber declaration to JSErrNum.

It'd be nice to change the uintN
errorNumber field in JSErrorReport to
JSErrNum, but it's not clear that
JSErrNum is or should be exposed in the
API.  Any C esthetes want to offer their
opinions?

It made my debugger slightly happier.


git-svn-id: svn://10.0.0.236/trunk@8853 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 07:07:26 +00:00
cls%seawood.org
a10067bd62 More fixes.
git-svn-id: svn://10.0.0.236/trunk@8852 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 03:57:13 +00:00
cls%seawood.org
0aee1faed1 Fixed problem with file permissions not being set.
git-svn-id: svn://10.0.0.236/trunk@8851 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 03:33:55 +00:00
ddrinan%netscape.com
e365a381c6 Set NETSCAPE_OFFICIAL in order to trigger the perl script that generates the Cartman hooks
git-svn-id: svn://10.0.0.236/trunk@8850 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 02:49:51 +00:00
cls%seawood.org
2c89e09d03 Made the people:who field large enough for username%domain
git-svn-id: svn://10.0.0.236/trunk@8849 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-31 01:08:41 +00:00
troy%netscape.com
fd0d7ccb59 Changes nsIView and nsIScrollableView interfaces to conform to
XPCOM conventions


git-svn-id: svn://10.0.0.236/trunk@8848 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 19:16:11 +00:00
morse%netscape.com
e72a6e6400 fix bustage on all platforms
git-svn-id: svn://10.0.0.236/trunk@8847 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 16:42:20 +00:00
morse%netscape.com
7c4dc96e03 still trying to fix up mac
git-svn-id: svn://10.0.0.236/trunk@8846 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 15:59:53 +00:00
morse%netscape.com
0c4eb3452c one more attempt to clean up mac build
git-svn-id: svn://10.0.0.236/trunk@8845 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 15:43:56 +00:00
morse%netscape.com
9787972139 disable trust labels for mac
git-svn-id: svn://10.0.0.236/trunk@8844 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 13:55:38 +00:00
morse%netscape.com
2b8a3458a8 I give up, backing out trust labels
git-svn-id: svn://10.0.0.236/trunk@8843 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 08:49:56 +00:00
morse%netscape.com
ea58f0d336 giving up on mac for now, backing out some but not all of the changes
git-svn-id: svn://10.0.0.236/trunk@8842 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 07:09:27 +00:00
morse%netscape.com
e03f574b38 another attempt to fix linux bustage
git-svn-id: svn://10.0.0.236/trunk@8841 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 06:46:25 +00:00
morse%netscape.com
115715a1d8 attempt to fix build bustage on Sun in gromit tinderbox
git-svn-id: svn://10.0.0.236/trunk@8840 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 06:10:12 +00:00
morse%netscape.com
fbfaab83ad fix compile error
git-svn-id: svn://10.0.0.236/trunk@8839 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 06:01:22 +00:00
morse%netscape.com
ba2b3e9469 *** empty log message ***
git-svn-id: svn://10.0.0.236/trunk@8838 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 05:54:08 +00:00
morse%netscape.com
4768c7b5e1 second attempt to fix linux bustage on gromit
git-svn-id: svn://10.0.0.236/trunk@8837 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 05:47:25 +00:00
morse%netscape.com
66e6aa031c attempt to fix bustage on the mac
git-svn-id: svn://10.0.0.236/trunk@8836 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 05:09:35 +00:00
morse%netscape.com
5dcb038fa0 attempt to fix linux bustage on gromit
git-svn-id: svn://10.0.0.236/trunk@8835 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 04:49:13 +00:00
morse%netscape.com
6d2505f53f added trust labels
git-svn-id: svn://10.0.0.236/trunk@8834 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 03:40:51 +00:00
morse%netscape.com
4f44efb156 mkaccess.h
git-svn-id: svn://10.0.0.236/trunk@8833 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 03:23:42 +00:00
morse%netscape.com
1ad2e68e4b fixed background color on signon viewer
git-svn-id: svn://10.0.0.236/trunk@8832 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 03:22:40 +00:00
morse%netscape.com
e2077b95a4 added string for cookie management
git-svn-id: svn://10.0.0.236/trunk@8831 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 03:21:00 +00:00
leaf%mozilla.org
c18bed5a9b removed the offending _jri entry
git-svn-id: svn://10.0.0.236/trunk@8830 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-30 00:12:52 +00:00
shaver%netscape.com
bdaf9a8ddf don't use JS_InternString for now -- weird crash in JS_AtomizeString
git-svn-id: svn://10.0.0.236/trunk@8829 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 23:46:47 +00:00
cls%seawood.org
4a37c272a1 Tweaked clobber_all dependency for autoconf tinderbox build.
git-svn-id: svn://10.0.0.236/trunk@8828 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 22:37:34 +00:00
cls%seawood.org
6f9015b67e Needed for --enable-dom.
git-svn-id: svn://10.0.0.236/trunk@8827 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 22:28:46 +00:00
cls%seawood.org
664ce07f1a Fixed problem of autoconf not using ACCFLAGS when using --enable-debug.
git-svn-id: svn://10.0.0.236/trunk@8826 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 22:12:53 +00:00
kipp%netscape.com
54c474764c Fixed bug introduced during nsIContent porting
git-svn-id: svn://10.0.0.236/trunk@8825 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 20:44:42 +00:00
kipp%netscape.com
29e64a354f XPCOM'ized nsIContent and nsIHTMLContent
git-svn-id: svn://10.0.0.236/trunk@8824 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 20:20:38 +00:00
kipp%netscape.com
96b63db44c Added error module for the layout system
git-svn-id: svn://10.0.0.236/trunk@8823 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 20:20:00 +00:00
kipp%netscape.com
8a06d2f5c0 Port to updated nsIContent API
git-svn-id: svn://10.0.0.236/trunk@8822 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 20:19:32 +00:00
rickg%netscape.com
07289be70e improved script handling--required by changes to DTD
git-svn-id: svn://10.0.0.236/trunk@8821 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 19:32:30 +00:00
rickg%netscape.com
04d51e2437 improved script handling--required by changes to DTD
git-svn-id: svn://10.0.0.236/trunk@8820 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 19:31:00 +00:00
despotdaemon%netscape.com
a236f89786 Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8819 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 15:11:19 +00:00
despotdaemon%netscape.com
91269b50d0 Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8818 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 15:10:49 +00:00
rickg%netscape.com
bc1fcf5d5a added noembed support
git-svn-id: svn://10.0.0.236/trunk@8817 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:52:17 +00:00
briano%netscape.com
6e313c1a0a Not needed.
git-svn-id: svn://10.0.0.236/trunk@8816 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:31:58 +00:00
briano%netscape.com
311bf3dfb6 Added an optimization fix.
git-svn-id: svn://10.0.0.236/trunk@8815 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:31:18 +00:00
rpotts%netscape.com
f48912ead3 Changes to allow building when STRICT is defined.
git-svn-id: svn://10.0.0.236/trunk@8814 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:30:49 +00:00
rpotts%netscape.com
791769f2e4 Changes to allow building when STRICT is defined.
git-svn-id: svn://10.0.0.236/trunk@8813 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:21:50 +00:00
rpotts%netscape.com
e61cbfd632 Added casts to allow building with STRICT defined...
git-svn-id: svn://10.0.0.236/trunk@8812 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:19:23 +00:00
rpotts%netscape.com
f267a054e1 Added specific GDI casts to allow building when STRICT is defined
git-svn-id: svn://10.0.0.236/trunk@8811 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:18:17 +00:00
cls%seawood.org
58743f3d5d Only link against -ljsj if JAVA_OR_OJI.
git-svn-id: svn://10.0.0.236/trunk@8810 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:17:01 +00:00
cls%seawood.org
cf4fa97a21 Commented out outdated non-OJI section.
git-svn-id: svn://10.0.0.236/trunk@8809 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 06:12:03 +00:00
cls%seawood.org
09107f3813 Added ifdef JAVA_OR_OJI around jsjava.h include.
git-svn-id: svn://10.0.0.236/trunk@8808 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 05:50:45 +00:00
rickg%netscape.com
6b0996df7c lots of performance work, bug fixes, and tag handling upgrades
git-svn-id: svn://10.0.0.236/trunk@8807 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 05:08:20 +00:00
rickg%netscape.com
9923f54f7f added BinarySearch method for faster string searches
git-svn-id: svn://10.0.0.236/trunk@8806 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 05:06:50 +00:00
sdagley%netscape.com
d9a9d0c30c When you add a call to an external function, include the F**KING header!!
git-svn-id: svn://10.0.0.236/trunk@8805 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:45:23 +00:00
warren%netscape.com
d20f81781c Premature checkin of renamed nsRepository.
git-svn-id: svn://10.0.0.236/trunk@8804 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:42:29 +00:00
mcafee%netscape.com
9c9dabf8b6 Fixing build bustage on Linux
git-svn-id: svn://10.0.0.236/trunk@8803 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:33:31 +00:00
mcafee%netscape.com
b23a134de1 Fixing build bustage on Linux
git-svn-id: svn://10.0.0.236/trunk@8802 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:27:09 +00:00
troy%netscape.com
d68daf37b3 Added some comments
git-svn-id: svn://10.0.0.236/trunk@8801 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:26:33 +00:00
kipp%netscape.com
d44a503526 Create anchors using NS_NewHTMLAnchor
git-svn-id: svn://10.0.0.236/trunk@8800 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:17:02 +00:00
kipp%netscape.com
64ec20b0cd Use AddRef instead of mRefCnt++; make implementation classes implement HandleDOMEvent; provide HandleDOMEvent generic routine for base behavior; provide TriggerLink for link clicking behavior
git-svn-id: svn://10.0.0.236/trunk@8799 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:16:46 +00:00
kipp%netscape.com
a025e7517b Implement nsHTMLGenericContainerContent; removed anchor code from HandleDOMEvent; implement TriggerLink
git-svn-id: svn://10.0.0.236/trunk@8798 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:15:55 +00:00
kipp%netscape.com
fa7b263033 Stubbed out HandleDOMEvent; and initialized refcnt (doh!)
git-svn-id: svn://10.0.0.236/trunk@8797 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:14:46 +00:00
kipp%netscape.com
0e6478e9bb Added new source
git-svn-id: svn://10.0.0.236/trunk@8796 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:13:56 +00:00
kipp%netscape.com
4c85e1db08 new
git-svn-id: svn://10.0.0.236/trunk@8795 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:13:29 +00:00
kipp%netscape.com
4fdac61f25 Added NewHTMLAnchor
git-svn-id: svn://10.0.0.236/trunk@8794 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:13:15 +00:00
kipp%netscape.com
e247d39ff4 Added new atoms
git-svn-id: svn://10.0.0.236/trunk@8793 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:13:03 +00:00
fur%netscape.com
1ab259806c Shane's makefiles
git-svn-id: svn://10.0.0.236/trunk@8792 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:04:11 +00:00
fur%netscape.com
65bdc27683 New file to deal with case of Java field and method with same name.
git-svn-id: svn://10.0.0.236/trunk@8791 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:03:51 +00:00
fur%netscape.com
8a8bb3d77e Error messages, in separate file for internationalization purposes.
git-svn-id: svn://10.0.0.236/trunk@8790 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:03:05 +00:00
fur%netscape.com
4eb3df0d29 Transferred work from private ns tree back into mozilla.
git-svn-id: svn://10.0.0.236/trunk@8789 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 03:00:50 +00:00
shaver%netscape.com
5f49f22fb7 Move current_node and top_node to top_state, to protect them from tables.
Handle table and row and cell data.
(We do nested-table text now.)


git-svn-id: svn://10.0.0.236/trunk@8788 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:52:27 +00:00
shaver%netscape.com
8e2e51702b move top_node and current_node into top_state, where they're invulnerable to the evil tactics of table layout
git-svn-id: svn://10.0.0.236/trunk@8787 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:49:13 +00:00
fur%netscape.com
c3bc213bef Somehow, montulli resurrected this dead file. Killing it again.
git-svn-id: svn://10.0.0.236/trunk@8786 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:47:25 +00:00
troy%netscape.com
1568e2814d Changed interface nsIFontMetrics to use the XPCOM conventions for returning
a nsresult


git-svn-id: svn://10.0.0.236/trunk@8785 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:34:34 +00:00
warren%netscape.com
6edcfe6a82 Fixed typo
git-svn-id: svn://10.0.0.236/trunk@8784 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:24:41 +00:00
mcafee%netscape.com
1a33421fe1 Fixing bustage on Solaris, Linux.
git-svn-id: svn://10.0.0.236/trunk@8783 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:23:08 +00:00
warren%netscape.com
9f2fefb606 Moved nsresult from nsISupports.h to nsError.h (so that it's defined for C files).
git-svn-id: svn://10.0.0.236/trunk@8782 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:21:49 +00:00
fur%netscape.com
8d0f6d433f Updated Mac build instructions.
git-svn-id: svn://10.0.0.236/trunk@8781 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:20:24 +00:00
fur%netscape.com
5ac9b15456 Replaced with new CodeWarrior project file macbuild/JSRef.mcp
git-svn-id: svn://10.0.0.236/trunk@8780 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 02:20:00 +00:00
mccabe%netscape.com
2ae960ccbd More loose ends towards merging the development branch.
git-svn-id: svn://10.0.0.236/trunk@8779 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 01:53:39 +00:00
warren%netscape.com
2ab76ffdb1 Added test for service manager.
git-svn-id: svn://10.0.0.236/trunk@8778 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 01:51:44 +00:00
pierre%netscape.com
f3a8b74f77 fixed freeze in XP_FileOpen()
git-svn-id: svn://10.0.0.236/trunk@8777 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 01:38:21 +00:00
pierre%netscape.com
25ac0a5f73 added nsHTMLGenericContent.cpp + nsHTMLHR.cpp
git-svn-id: svn://10.0.0.236/trunk@8776 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 01:27:11 +00:00
sdagley%netscape.com
e106f26073 Checking in for warren. Added nsIServiceManager.h to MANIFEST and nsServiceManager.cpp to xpcomPPC.mcp.
git-svn-id: svn://10.0.0.236/trunk@8775 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 01:17:19 +00:00
terry%netscape.com
77e993115e OK, turn it on -- changes will now actually have effect.
git-svn-id: svn://10.0.0.236/trunk@8774 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:51:15 +00:00
ftang%netscape.com
9dd07e6ba0 add XP_ASSERT IsUTF8String for more data source. reviewed by rjc
git-svn-id: svn://10.0.0.236/trunk@8773 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:42:07 +00:00
terry%netscape.com
22e2a9d2bf Need full pathname for CVS_PASSFILE, since change directories before using cvs.
git-svn-id: svn://10.0.0.236/trunk@8772 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:41:24 +00:00
mccabe%netscape.com
eb64550ea4 New platforms! More work from development branch.
git-svn-id: svn://10.0.0.236/trunk@8771 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:40:07 +00:00
mccabe%netscape.com
ac4f37b0a5 Propagate lots 'o work from the development branch.
Including:

Preliminary work on internationalizing error messages

Preliminary work on exposing runtime errors as catchable exceptions

ECMA-proposed throw and try/catch/finally, with multiple catch clauses
and catchguards

ECMA-proposed in/instanceof operators

IEEE-conformant number to string conversion

Fixes and other good stuff.


git-svn-id: svn://10.0.0.236/trunk@8770 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:38:43 +00:00
ftang%netscape.com
354837520c add XP_ASSERT for IsUTF8String, reviewed by rjc
git-svn-id: svn://10.0.0.236/trunk@8769 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:37:15 +00:00
terry%netscape.com
a7a3a142df Oops; wrong environment variable name.
git-svn-id: svn://10.0.0.236/trunk@8768 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:36:03 +00:00
ftang%netscape.com
63b976aae5 make HT Find/property dialogbox work with UTF8. reviewed by rjc
git-svn-id: svn://10.0.0.236/trunk@8767 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:35:53 +00:00
terry%netscape.com
7879e50a84 Keep a .cvspass in our own directory.
git-svn-id: svn://10.0.0.236/trunk@8766 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:35:19 +00:00
terry%netscape.com
16c17cd55c We have a variable containing the full path to the cvs executable; use it!
git-svn-id: svn://10.0.0.236/trunk@8765 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-29 00:20:10 +00:00
terry%netscape.com
e9a056744d Got to quote those stupid at-signs.
git-svn-id: svn://10.0.0.236/trunk@8764 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:57:42 +00:00
terry%netscape.com
9aa5b62699 Initial public checkin of despot.
git-svn-id: svn://10.0.0.236/trunk@8763 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:50:39 +00:00
ddrinan%netscape.com
72c4d2a866 Perl script to generate all export symbols
git-svn-id: svn://10.0.0.236/trunk@8762 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:48:13 +00:00
ddrinan%netscape.com
b540c7a2e7 Perl script to generate the dispatcher module.
git-svn-id: svn://10.0.0.236/trunk@8761 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:47:10 +00:00
ddrinan%netscape.com
9f84fe1bf0 Added dispatcher generation and populatio step. Need for Cartman
git-svn-id: svn://10.0.0.236/trunk@8760 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:45:59 +00:00
ddrinan%netscape.com
a0270fc060 Added Cartman hook and dispather tables export
git-svn-id: svn://10.0.0.236/trunk@8759 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:44:13 +00:00
kipp%netscape.com
9c9e082f74 Use -Zi and PDB's for dll creation too
git-svn-id: svn://10.0.0.236/trunk@8758 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:32:47 +00:00
kipp%netscape.com
83d75c3fa0 Stub out new nsIHTMLContent methods
git-svn-id: svn://10.0.0.236/trunk@8757 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:32:27 +00:00
kipp%netscape.com
dce19ba23f Added AttributeToString and StringToAttribute methods
git-svn-id: svn://10.0.0.236/trunk@8756 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:31:44 +00:00
kipp%netscape.com
44d2a050e0 Export new HTML-HR factory method
git-svn-id: svn://10.0.0.236/trunk@8755 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:31:28 +00:00
kipp%netscape.com
e0da233ad3 Stub out StringToAttribute
git-svn-id: svn://10.0.0.236/trunk@8754 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:31:12 +00:00
kipp%netscape.com
457a57d4bc Implement StringToAttribute; AttributeToString is now public
git-svn-id: svn://10.0.0.236/trunk@8753 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:30:50 +00:00
kipp%netscape.com
27a5a65695 Make AttributeToString abstract
git-svn-id: svn://10.0.0.236/trunk@8752 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:30:22 +00:00
kipp%netscape.com
dfe6b9472a Removed content code and exposed a factory method for creating HR frames; made the HR frame code content neutral
git-svn-id: svn://10.0.0.236/trunk@8751 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:29:36 +00:00
kipp%netscape.com
a2b0c41087 Added new atoms
git-svn-id: svn://10.0.0.236/trunk@8750 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:29:05 +00:00
kipp%netscape.com
948d0b54b0 Use new factory method for HR's
git-svn-id: svn://10.0.0.236/trunk@8749 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:27:55 +00:00
kipp%netscape.com
575b985fb8 new
git-svn-id: svn://10.0.0.236/trunk@8748 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:27:19 +00:00
kipp%netscape.com
3f8cc11cae Added new source files to the build
git-svn-id: svn://10.0.0.236/trunk@8747 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:25:56 +00:00
rods%netscape.com
9da3e5c9c9 Fixed nsLabel and nsDialog to compile and link correctly
git-svn-id: svn://10.0.0.236/trunk@8746 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 23:00:03 +00:00
rods%netscape.com
78dd60c020 initial checkin for nsLabel and nsDialog
git-svn-id: svn://10.0.0.236/trunk@8745 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 22:49:12 +00:00
rods%netscape.com
5bcda3f0f2 Added nsLabel and nsDialog
git-svn-id: svn://10.0.0.236/trunk@8744 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 22:48:50 +00:00
cls%seawood.org
d6fc11d98a Fixed problem with makedepend under autoconf.
git-svn-id: svn://10.0.0.236/trunk@8743 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 22:40:14 +00:00
rods%netscape.com
e23a0b6401 Fixed Focus issues with text field in Find Dialog
git-svn-id: svn://10.0.0.236/trunk@8742 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 22:36:10 +00:00
rods%netscape.com
57b7fafb37 Fixed OnPaint to draw Dialog and children correctly.
git-svn-id: svn://10.0.0.236/trunk@8741 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 22:11:04 +00:00
warren%netscape.com
9f4a9bc9a2 Added class ID to OnShutdown.
git-svn-id: svn://10.0.0.236/trunk@8740 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 21:47:44 +00:00
kipp%netscape.com
a877826048 Use kIHTMLContentSinkIID so that inferior compilers will work
git-svn-id: svn://10.0.0.236/trunk@8739 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 21:29:50 +00:00
warren%netscape.com
7876a9e765 Added service manager mechanism.
git-svn-id: svn://10.0.0.236/trunk@8738 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 21:28:35 +00:00
warren%netscape.com
31ab835636 Added service manager mechanism.
git-svn-id: svn://10.0.0.236/trunk@8737 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 21:25:34 +00:00
cyeh%netscape.com
7a3853ed06 First Checked In.
git-svn-id: svn://10.0.0.236/trunk@8736 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 21:03:57 +00:00
ftang%netscape.com
7f80acda40 change rdf winfe to make it render UTF8. reviewed by hyatt
git-svn-id: svn://10.0.0.236/trunk@8735 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:58:01 +00:00
ftang%netscape.com
eb3d75865f fix UTF8 input problem when switch input method back to roman . reviewed by brade.
git-svn-id: svn://10.0.0.236/trunk@8734 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:52:12 +00:00
slamm%netscape.com
43c5f4b46f Bring back the commercial animation.
git-svn-id: svn://10.0.0.236/trunk@8733 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:41:53 +00:00
pinkerton%netscape.com
6890fabd3c Added RowIsContainer() with additional param to say if container is open or closed.
git-svn-id: svn://10.0.0.236/trunk@8732 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:34:43 +00:00
pinkerton%netscape.com
e44c8223ff Use new CNavCenterScroller and tell it to adjust the scroll bar when the column headers appear or disappear.
git-svn-id: svn://10.0.0.236/trunk@8731 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:33:42 +00:00
pinkerton%netscape.com
dd7e62a93c Fix mozilla problem with not showing "about:" page when security is not present.
git-svn-id: svn://10.0.0.236/trunk@8730 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:33:08 +00:00
pinkerton%netscape.com
20a62cdd6c Changed type of scroller in NavCenter panes to be a CNavCenterScroller to better handle scroll bar adjustments on mode switches.
git-svn-id: svn://10.0.0.236/trunk@8729 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:32:36 +00:00
pinkerton%netscape.com
3958cd059f New RowIsContainer method which can replace CellHasDropFlag to determine if the row is a container and if it is currently expanded or collapsed. Fixed auto-expand d&d to use this instead of CellHasDropFlag so it will still autoexpand when drop flags are not used.
git-svn-id: svn://10.0.0.236/trunk@8728 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:32:00 +00:00
pinkerton%netscape.com
53c9fd8dcb Add CNavCenterScroller.cp
git-svn-id: svn://10.0.0.236/trunk@8727 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:30:24 +00:00
pinkerton%netscape.com
be05c26268 Register CNavCenterScroller
git-svn-id: svn://10.0.0.236/trunk@8726 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:29:57 +00:00
spider%netscape.com
8e70f7c6b3 Initialize the device context to null. This was causing a crash if the
device context for a widget were queried prior the window getting
created.


git-svn-id: svn://10.0.0.236/trunk@8725 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:29:04 +00:00
pinkerton%netscape.com
f7238017b5 First Checked In.
git-svn-id: svn://10.0.0.236/trunk@8723 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:24:25 +00:00
briano%netscape.com
064ec3f07b New file to support DG/UX. Thanks to Marc Fraioli (fraioli@dg-rtp.dg.com) for doing all the work.
git-svn-id: svn://10.0.0.236/trunk@8722 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:20:15 +00:00
terry%netscape.com
53b92f890a Get rid of "verified_ts" and "resolved_ts" stuff; we aren't keeping
that stuff in this database.


git-svn-id: svn://10.0.0.236/trunk@8721 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:19:31 +00:00
briano%netscape.com
9b4a75a2f8 Added support for DG/UX, and a fix for bug#254.
git-svn-id: svn://10.0.0.236/trunk@8720 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:17:38 +00:00
morse%netscape.com
25fa2a9395 strings for cookie trust labels
git-svn-id: svn://10.0.0.236/trunk@8719 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 20:10:32 +00:00
rods%netscape.com
516bef3e06 Fixed ref count problem in FindNext (should be able to switch docs now)
git-svn-id: svn://10.0.0.236/trunk@8718 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 19:55:03 +00:00
despotdaemon%netscape.com
74735ce7ed Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8717 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 19:45:55 +00:00
terry%netscape.com
a7f2ec4561 Back out last change. No diffs are showing up at all!
git-svn-id: svn://10.0.0.236/trunk@8716 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 19:23:41 +00:00
terry%netscape.com
5faec3d6ed Fixed bug 544 -- now use unified diffs instead of context diffs in mail.
git-svn-id: svn://10.0.0.236/trunk@8715 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 19:17:59 +00:00
despotdaemon%netscape.com
9db2998134 Pseudo-automatic update of changes made by ddrinan@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8714 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 18:52:19 +00:00
terry%netscape.com
326cdd5d93 Fixed bug 513 -- adding CC field caused crash.
git-svn-id: svn://10.0.0.236/trunk@8713 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 18:32:15 +00:00
terry%netscape.com
d777ef9189 Debugging support -- if we get an SQL error, show the SQL command that failed.
git-svn-id: svn://10.0.0.236/trunk@8712 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 18:31:05 +00:00
rods%netscape.com
90439d8478 Added a couple of data members to the header and cleanup some of the
ref count problems


git-svn-id: svn://10.0.0.236/trunk@8711 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 18:15:14 +00:00
cyeh%netscape.com
86bed95f8a add set-timebomb.pl to MozillaSourceUnix module. grrrr...
git-svn-id: svn://10.0.0.236/trunk@8710 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 17:31:08 +00:00
kipp%netscape.com
29d4a0272c Spanked hard to support multiple sink contexts; incremental reflow now happens only on WillInterrupt
git-svn-id: svn://10.0.0.236/trunk@8709 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:20:16 +00:00
kipp%netscape.com
52524023bc Avoid a crash bug
git-svn-id: svn://10.0.0.236/trunk@8708 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:19:38 +00:00
kipp%netscape.com
69abb91cd8 Added a new atom
git-svn-id: svn://10.0.0.236/trunk@8707 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:19:27 +00:00
kipp%netscape.com
22faac0a08 Removed the PushMark method
git-svn-id: svn://10.0.0.236/trunk@8706 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:18:14 +00:00
rods%netscape.com
3817dceba6 Added XP Find dialog
git-svn-id: svn://10.0.0.236/trunk@8705 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:14:37 +00:00
rods%netscape.com
9423ca5271 Added registration of nsIDialog and nsILabel
git-svn-id: svn://10.0.0.236/trunk@8704 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:13:56 +00:00
rods%netscape.com
1dab6ce3ed Enabled the "Find" menu item
git-svn-id: svn://10.0.0.236/trunk@8703 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:12:51 +00:00
rods%netscape.com
143a4edd02 Added selection code that is currently ifdef out (but it is needed)
git-svn-id: svn://10.0.0.236/trunk@8702 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:06:22 +00:00
rods%netscape.com
adec4ac54a Fixed up some of the selection methods
git-svn-id: svn://10.0.0.236/trunk@8701 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 16:02:33 +00:00
rods%netscape.com
db20bc1720 Added FindNext method
git-svn-id: svn://10.0.0.236/trunk@8700 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 15:59:24 +00:00
rods%netscape.com
8d96945b15 Adjusted the method signatures on most of the Selection methods
git-svn-id: svn://10.0.0.236/trunk@8699 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 15:58:37 +00:00
rods%netscape.com
a012be6a6d Added FindNext Method for Find/Search
git-svn-id: svn://10.0.0.236/trunk@8698 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 15:57:59 +00:00
rods%netscape.com
0c8b07b665 Fixed bugs and adjusted TextFrame to match revised method signatures
git-svn-id: svn://10.0.0.236/trunk@8697 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 15:56:40 +00:00
rods%netscape.com
3434b35d86 Added Find/Search capability and supporting methods
git-svn-id: svn://10.0.0.236/trunk@8696 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 15:55:31 +00:00
troy%netscape.com
ffd571769e Interface change
git-svn-id: svn://10.0.0.236/trunk@8695 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 15:19:44 +00:00
despotdaemon%netscape.com
c54323a1f8 Pseudo-automatic update of changes made by shaver@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8694 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 14:29:58 +00:00
terry%netscape.com
b248dd0fc8 Get rid of the "read and eat" line; it doesn't make sense here.
git-svn-id: svn://10.0.0.236/trunk@8693 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 13:50:41 +00:00
shaver%netscape.com
207c272479 actually reflow altered text
git-svn-id: svn://10.0.0.236/trunk@8692 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 13:42:25 +00:00
shaver%netscape.com
f7c264af72 wire up DOM_Nodes and LO_Elements; maybe fix <LI> CSS bug? (all #if DOM)
git-svn-id: svn://10.0.0.236/trunk@8691 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 10:29:42 +00:00
shaver%netscape.com
c55c619ff7 current_node is always the current_node now. also: set up for text mutation
git-svn-id: svn://10.0.0.236/trunk@8690 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 10:23:35 +00:00
shaver%netscape.com
85c33a05a7 break universal dep on lm_dom.h; start wiring DOM_Node<->LO_Element
git-svn-id: svn://10.0.0.236/trunk@8689 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 07:53:18 +00:00
shaver%netscape.com
4d1d70ca76 switch to void * in lo_DocState, not DOM_Node * because too many places #include "layout.h"
git-svn-id: svn://10.0.0.236/trunk@8688 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 07:52:07 +00:00
cls%seawood.org
04dcdb28d2 More tweaks for make depend under autoconf.
git-svn-id: svn://10.0.0.236/trunk@8687 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 07:07:47 +00:00
cyeh%netscape.com
0a30b35651 change default homepage
git-svn-id: svn://10.0.0.236/trunk@8686 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 07:03:39 +00:00
cls%seawood.org
59a413497e ifdef'd out MOZ_OJI as only the bare minimum should be on by default for the autoconf buld.
git-svn-id: svn://10.0.0.236/trunk@8685 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 07:00:13 +00:00
cls%seawood.org
e24cdf321b Removed SHACK and added DOM.
git-svn-id: svn://10.0.0.236/trunk@8684 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 06:55:52 +00:00
cls%seawood.org
ccf2f2da9b Removed check for thread libs as they conflicted with nsprpub threads. Added option for dom and removed option for shack.
git-svn-id: svn://10.0.0.236/trunk@8683 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 06:54:06 +00:00
troy%netscape.com
d4260119a8 Changed nsIFontCache to conform to XPCOM standards
git-svn-id: svn://10.0.0.236/trunk@8682 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 05:16:41 +00:00
troy%netscape.com
e9e900374e Changed nsIViewManager interface to conform to XPCOM conventions
git-svn-id: svn://10.0.0.236/trunk@8681 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 04:56:56 +00:00
toshok%netscape.com
7b65e1900d use $(MAKE) instead of make, so it does not break on bsd machines, where make and gmake are *completely* different
git-svn-id: svn://10.0.0.236/trunk@8680 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 04:37:44 +00:00
morse%netscape.com
92b0d35986 fix bug found by mjudge
git-svn-id: svn://10.0.0.236/trunk@8679 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 04:10:08 +00:00
danm%netscape.com
43ea3d3f41 plug leak in LayoutButtons
git-svn-id: svn://10.0.0.236/trunk@8678 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 03:10:14 +00:00
michaelp%netscape.com
65433b951d changes for new viewobserver stuff.
git-svn-id: svn://10.0.0.236/trunk@8677 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 03:09:22 +00:00
michaelp%netscape.com
6702cf7961 changes to support viewobserver and troy's spankage of the device context.
git-svn-id: svn://10.0.0.236/trunk@8676 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 03:05:23 +00:00
michaelp%netscape.com
7b063335be DeleteFrame() now takes a pres context.
git-svn-id: svn://10.0.0.236/trunk@8675 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 03:02:39 +00:00
troy%netscape.com
b69cf1e950 Fixed call to GetFontCache
git-svn-id: svn://10.0.0.236/trunk@8674 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:56:22 +00:00
michaelp%netscape.com
1b64af0c9b added support for view observer.
git-svn-id: svn://10.0.0.236/trunk@8673 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:54:06 +00:00
michaelp%netscape.com
cdc8077956 DeleteFrame() now takes a pres context. now uses view's setclientdata().
git-svn-id: svn://10.0.0.236/trunk@8672 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:52:54 +00:00
troy%netscape.com
c9c414f1c0 Turned off gamma correction
git-svn-id: svn://10.0.0.236/trunk@8671 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:50:19 +00:00
michaelp%netscape.com
d1419737b5 deleteframe() now takes a pres context.
git-svn-id: svn://10.0.0.236/trunk@8670 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:50:17 +00:00
michaelp%netscape.com
a230da72a6 made resizereflow() an ns_imethod.
git-svn-id: svn://10.0.0.236/trunk@8669 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:49:49 +00:00
michaelp%netscape.com
a2271263d0 changed to pass in prescontext to deleteframe().
git-svn-id: svn://10.0.0.236/trunk@8668 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:49:15 +00:00
jgellman%netscape.com
dc657f64cd little patch trouble. whups.
git-svn-id: svn://10.0.0.236/trunk@8667 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 02:10:16 +00:00
troy%netscape.com
c9a229357c nsIDeviceContext API change
git-svn-id: svn://10.0.0.236/trunk@8666 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 01:58:02 +00:00
jgellman%netscape.com
fbb1f40d77 Remove data source entries from cache table when the data source is destroyed
git-svn-id: svn://10.0.0.236/trunk@8665 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 01:33:36 +00:00
thom%netscape.com
cded20b7b6 fixed heap corruption in mac version of the function mangleResourceIntoFileURL. This change ONLY effects macs
git-svn-id: svn://10.0.0.236/trunk@8664 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 01:33:14 +00:00
danm%netscape.com
0e8ef25cee teach RDF toolbars to work with toolbar display mode property. r:hyatt
git-svn-id: svn://10.0.0.236/trunk@8663 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 01:22:30 +00:00
danm%netscape.com
0be3f7f951 new toolbar property, new function which fetches templates, fix hashtable bug, bmkNotifFunc notifies regardless of property type. r:rjc
git-svn-id: svn://10.0.0.236/trunk@8662 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 01:19:41 +00:00
thom%netscape.com
4fb9e17b43 got the file in sync with troy's fontCache changes
git-svn-id: svn://10.0.0.236/trunk@8661 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 00:28:10 +00:00
slamm%netscape.com
d96f914fc1 Standardize the format of the translation resources. Make it easier to see errors.
git-svn-id: svn://10.0.0.236/trunk@8660 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-28 00:20:44 +00:00
kostello%netscape.com
1d4ec605a7 Added support for hit testing and mac support methods for translating between mac coordinate system and nsRects
git-svn-id: svn://10.0.0.236/trunk@8659 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 23:04:30 +00:00
troy%netscape.com
eb362e45da fixed my bustage.
git-svn-id: svn://10.0.0.236/trunk@8658 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 23:02:03 +00:00
kostello%netscape.com
993b43f31c Added methods to update window bounds rect during resize and drag
git-svn-id: svn://10.0.0.236/trunk@8657 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 23:01:56 +00:00
kostello%netscape.com
8711902173 Added Mac to nsRect support. Added HitTest logic
git-svn-id: svn://10.0.0.236/trunk@8656 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 23:01:17 +00:00
despotdaemon%netscape.com
2f43037e94 Pseudo-automatic update of changes made by mwelch@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8655 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:55:53 +00:00
troy%netscape.com
15c93f90c2 More changes to nsIDeviceContext interface
git-svn-id: svn://10.0.0.236/trunk@8654 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:45:35 +00:00
pierre%netscape.com
6d97cac430 In the previous checkin, the path "powerplant/utility" was added to the 'domDebug.o' target only. Adding it to 'dom.o' now and verified that it was already in the 'shlb' target.
git-svn-id: svn://10.0.0.236/trunk@8653 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:16:56 +00:00
troy%netscape.com
ce4befff05 Fixed build bustage
git-svn-id: svn://10.0.0.236/trunk@8652 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:12:26 +00:00
pierre%netscape.com
555a919ddd added path "powerplant/utility"
added files jsurl.cpp + nsFrameList.cpp + nsJSWindowCollection.cpp


git-svn-id: svn://10.0.0.236/trunk@8651 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:11:05 +00:00
pierre%netscape.com
5847c66bb7 added nsHTMLLayer.cpp
git-svn-id: svn://10.0.0.236/trunk@8650 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:09:02 +00:00
pierre%netscape.com
349def3a94 re-enabled the View, Web and Pref factories
git-svn-id: svn://10.0.0.236/trunk@8649 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:08:39 +00:00
cyeh%netscape.com
f4f16f6856 added subroutine to adjust agent number everytime you build. for official releases only.
git-svn-id: svn://10.0.0.236/trunk@8648 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 22:04:19 +00:00
morse%netscape.com
bdcafcea64 added apple keychain
git-svn-id: svn://10.0.0.236/trunk@8647 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 21:14:41 +00:00
pinkerton%netscape.com
8ee4b70edd Fix bug where if rdf file specified that all columns should be hidden the heap would get corrupted. Now forces at least one column to be visible.
git-svn-id: svn://10.0.0.236/trunk@8646 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 21:10:07 +00:00
troy%netscape.com
917cd408ec Change to GetRenderingContext
git-svn-id: svn://10.0.0.236/trunk@8645 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 21:09:25 +00:00
morse%netscape.com
ef190fe835 single-signon fix
git-svn-id: svn://10.0.0.236/trunk@8644 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 21:05:58 +00:00
troy%netscape.com
26782f0ba7 API change to nsIDeviceContext
git-svn-id: svn://10.0.0.236/trunk@8643 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:45:56 +00:00
troy%netscape.com
9c277134e0 More API changes to nsIDeviceContext
git-svn-id: svn://10.0.0.236/trunk@8642 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:43:04 +00:00
troy%netscape.com
ad7971ffd1 Another attempt
git-svn-id: svn://10.0.0.236/trunk@8641 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:31:39 +00:00
rods%netscape.com
049f316091 Added InitData struct
git-svn-id: svn://10.0.0.236/trunk@8640 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:29:59 +00:00
pinkerton%netscape.com
8ef5bef118 Respond better to column add/delete events.
git-svn-id: svn://10.0.0.236/trunk@8639 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:27:10 +00:00
pinkerton%netscape.com
d85b33f31d More 4.5 merges. Fix problem with not showing form data in viewSource, print, saveAs.
git-svn-id: svn://10.0.0.236/trunk@8638 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:26:40 +00:00
rods%netscape.com
6a3942478b Added nsLabel and nsDialog to build
git-svn-id: svn://10.0.0.236/trunk@8637 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:26:30 +00:00
pinkerton%netscape.com
6ec83383e2 Fix bug that caused crash when you clicked onany blank area of the toolbar.
git-svn-id: svn://10.0.0.236/trunk@8636 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:25:21 +00:00
cyeh%netscape.com
b10aaddcd7 disable updating the build number in about-all.html everytime you build. needs to be turned on for official releases only until ckid/mcvs resource problem is solved. editing about-all.html causes file to be blown away.
git-svn-id: svn://10.0.0.236/trunk@8635 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:20:06 +00:00
shaver%netscape.com
abea434d80 tell people how to change their new password
git-svn-id: svn://10.0.0.236/trunk@8634 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:18:13 +00:00
rods%netscape.com
ee0e8ac41f Initial working checkin
git-svn-id: svn://10.0.0.236/trunk@8633 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:16:20 +00:00
cyeh%netscape.com
64c2293952 udpate the build number in about-all.html everytime you build.
git-svn-id: svn://10.0.0.236/trunk@8632 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:15:30 +00:00
rods%netscape.com
c900d89367 Added nsILabel.h and nsIDialog.h
git-svn-id: svn://10.0.0.236/trunk@8631 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 20:09:16 +00:00
cls%seawood.org
656bd9c3e8 Added timebomb target.
git-svn-id: svn://10.0.0.236/trunk@8630 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 19:53:30 +00:00
cls%seawood.org
16915211df Enabled dependencies for autoconf.
git-svn-id: svn://10.0.0.236/trunk@8629 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 19:52:22 +00:00
cls%seawood.org
0343f30ff3 Removed HistoryFrame.cpp
git-svn-id: svn://10.0.0.236/trunk@8628 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 19:48:25 +00:00
cls%seawood.org
519fb35777 Put DEBUG ifdefs around debugEvent() call. Approved by shaver%netscape.com
git-svn-id: svn://10.0.0.236/trunk@8627 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 19:47:48 +00:00
troy%netscape.com
29ae90ea2b More changes to nsIDeviceContext API
git-svn-id: svn://10.0.0.236/trunk@8626 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 18:47:22 +00:00
troy%netscape.com
6d5ab64685 Fixed build bustage
git-svn-id: svn://10.0.0.236/trunk@8625 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 18:46:51 +00:00
troy%netscape.com
c37f617b06 Combined GetScrollBarWidth/GetScrollBarHeight into one function
GetScrollBarDimensions


git-svn-id: svn://10.0.0.236/trunk@8624 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 18:30:55 +00:00
terry%netscape.com
08b3a23aa0 Hacky preventative for bug 540 -- disable the "edit long description"
feature entirely.


git-svn-id: svn://10.0.0.236/trunk@8623 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 18:14:14 +00:00
dcone%netscape.com
b816bd348e Fixed some small bugs.
git-svn-id: svn://10.0.0.236/trunk@8622 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 18:03:15 +00:00
dcone%netscape.com
754bbcabc4 updated some routines
git-svn-id: svn://10.0.0.236/trunk@8621 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:46:58 +00:00
dcone%netscape.com
9583aa7936 Updated to use regions
git-svn-id: svn://10.0.0.236/trunk@8620 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:36:13 +00:00
dcone%netscape.com
6ffe0079d6 updated some routines
git-svn-id: svn://10.0.0.236/trunk@8619 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:35:49 +00:00
dcone%netscape.com
36dc0329f9 Updated the clipping region, and some coordinate fixes
git-svn-id: svn://10.0.0.236/trunk@8618 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:33:51 +00:00
dcone%netscape.com
ce98b2dc7d Fixed the messaging and local/global point location
git-svn-id: svn://10.0.0.236/trunk@8617 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:32:57 +00:00
dcone%netscape.com
d3fa62c6e9 added a region native data type
git-svn-id: svn://10.0.0.236/trunk@8616 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:31:59 +00:00
troy%netscape.com
d90e450524 Fixed some bustage I intriduced
git-svn-id: svn://10.0.0.236/trunk@8615 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:26:48 +00:00
terry%netscape.com
0a02093753 Fixed bug 538 -- can now search through summary and description fields.
git-svn-id: svn://10.0.0.236/trunk@8614 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 17:22:23 +00:00
despotdaemon%netscape.com
c0a315bbec Pseudo-automatic update of changes made by leaf@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8613 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 16:10:26 +00:00
terry%netscape.com
ce187b5865 The default product is now called "Mozilla".
git-svn-id: svn://10.0.0.236/trunk@8612 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 15:30:25 +00:00
terry%netscape.com
9e813ee681 Sort the list of products.
git-svn-id: svn://10.0.0.236/trunk@8611 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 15:30:01 +00:00
terry%netscape.com
e0dadcef2d Fixed bug 539 -- cope with multiple products in the system.
git-svn-id: svn://10.0.0.236/trunk@8610 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 14:56:19 +00:00
terry%netscape.com
9b69df4fe2 I'd prefer to be known as terry@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@8609 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 14:55:27 +00:00
shaver%netscape.com
f6d9f7194c start to flesh out lm_CDataOp (you can set the title!) and remove attrs from HTMLElementPrivate
git-svn-id: svn://10.0.0.236/trunk@8608 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 09:13:00 +00:00
shaver%netscape.com
a59d815420 implemented cdata_setter
git-svn-id: svn://10.0.0.236/trunk@8607 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 09:11:45 +00:00
valeski%netscape.com
3574dedce6 nsString.h - the mBuf member data type was the raw PRUnichar type, changed it to chartype.
nsString.cpp - we were dropping the ending null-byte/unichar when expanding/growing strings


git-svn-id: svn://10.0.0.236/trunk@8606 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 08:15:40 +00:00
mcafee%netscape.com
164839f6fb Fixing compile warnings on Linux
git-svn-id: svn://10.0.0.236/trunk@8605 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 07:13:15 +00:00
mcafee%netscape.com
89e50ae71e Fixing Solaris warning, native compiler
git-svn-id: svn://10.0.0.236/trunk@8604 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 07:02:04 +00:00
shaver%netscape.com
917fc12442 protect against multiple inclusion (possibe now with DOM/layout/libmocha)
git-svn-id: svn://10.0.0.236/trunk@8603 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 05:54:56 +00:00
shaver%netscape.com
0f715858f6 DOM stub tweakage and fixed Text/CData init
git-svn-id: svn://10.0.0.236/trunk@8602 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 05:54:01 +00:00
shaver%netscape.com
903f2bc165 small DOM changes (new and old)
git-svn-id: svn://10.0.0.236/trunk@8601 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 05:51:47 +00:00
troy%netscape.com
50594d5ee2 Made sure that _I32_MIN is defined (it appears to be a Windows only thing)
git-svn-id: svn://10.0.0.236/trunk@8600 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 05:28:32 +00:00
shaver%netscape.com
0e484541ef Added CData operations (append, insert, delete, replace, substring).
Added Element {[sg]et,remove}Attribute
Check for illegal child in Node ops appendChild, insertBefore and replaceChild.


git-svn-id: svn://10.0.0.236/trunk@8599 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 05:25:40 +00:00
troy%netscape.com
3a6cdd1b67 Changes to nsIDeviceContext API
git-svn-id: svn://10.0.0.236/trunk@8598 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 05:14:35 +00:00
troy%netscape.com
9b42ea4cb1 Changed nsIDeviceContext interface to conform [more] with COM conventions
git-svn-id: svn://10.0.0.236/trunk@8597 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 05:05:03 +00:00
beard%netscape.com
7ddcb2ecb1 Removed hotlist.c from non-debug target as well.
git-svn-id: svn://10.0.0.236/trunk@8596 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 03:48:28 +00:00
saari%netscape.com
2d833c1592 Fix for bug # 311002
Fixed Pinkerton's Mac scrolling optimization so that it doesn't grab the bits of floating windows above Navigator.

This is Mac only.


git-svn-id: svn://10.0.0.236/trunk@8595 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 02:43:43 +00:00
kipp%netscape.com
59188b9ffd Fixed compiler problem with other compilers by removing useless const in front of void
git-svn-id: svn://10.0.0.236/trunk@8594 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 02:39:36 +00:00
akkana%netscape.com
044185b9c7 Add a PR_ASSERT (yes, a crash) for unreproducible crash 113534;
add code for "Send now" under Publish menu, but only if MOZ_MAIL_NEWS.


git-svn-id: svn://10.0.0.236/trunk@8593 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 01:55:52 +00:00
brendan%netscape.com
541a9954be Fix funky whitespace.
git-svn-id: svn://10.0.0.236/trunk@8591 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 01:48:25 +00:00
cyeh%netscape.com
863cdb6dda added lib/libdom for shaver to MozillaSourceCommon
git-svn-id: svn://10.0.0.236/trunk@8590 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 01:13:27 +00:00
peterl%netscape.com
2512a98a4d hacked colgroup & col handling
git-svn-id: svn://10.0.0.236/trunk@8589 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 01:04:22 +00:00
peterl%netscape.com
b27c2c0f07 added default attribute handling
git-svn-id: svn://10.0.0.236/trunk@8588 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:57:24 +00:00
peterl%netscape.com
b3ace934f1 no longer force unique style contexts
git-svn-id: svn://10.0.0.236/trunk@8587 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:57:05 +00:00
peterl%netscape.com
6655d27071 remove text attribute processing
git-svn-id: svn://10.0.0.236/trunk@8586 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:56:17 +00:00
peterl%netscape.com
6a79a8665f removed hack attibute
removed attribute propogation form rows & row groups


git-svn-id: svn://10.0.0.236/trunk@8585 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:55:30 +00:00
peterl%netscape.com
25d65b9397 added table dir to includes
git-svn-id: svn://10.0.0.236/trunk@8584 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:51:11 +00:00
peterl%netscape.com
2a62f344d7 added table cell style rule inheritance
git-svn-id: svn://10.0.0.236/trunk@8583 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:50:52 +00:00
peterl%netscape.com
6a2a44c8c2 reversed rule ordering
git-svn-id: svn://10.0.0.236/trunk@8582 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:49:55 +00:00
peterl%netscape.com
fbcc465682 made col tag be handled as a leaf
git-svn-id: svn://10.0.0.236/trunk@8581 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:48:53 +00:00
peterl%netscape.com
bc4211d1ed added td & th
git-svn-id: svn://10.0.0.236/trunk@8580 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:48:06 +00:00
peterl%netscape.com
bf5ece7e7a reversed sheet/rule ordering
added backstop rule count


git-svn-id: svn://10.0.0.236/trunk@8579 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:47:15 +00:00
leaf%mozilla.org
16725b12a1 Added a timebomb target for "MOZILLA_OFFICIAL" builds, w/unix and perl5.
git-svn-id: svn://10.0.0.236/trunk@8578 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:47:14 +00:00
peterl%netscape.com
edecfc5a4c commented on sheet/rule ordering
git-svn-id: svn://10.0.0.236/trunk@8577 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:46:34 +00:00
peterl%netscape.com
c85bf386f6 added backstop rule count
git-svn-id: svn://10.0.0.236/trunk@8576 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:46:13 +00:00
mlm%netscape.com
173d73ff3c Fix from Jeff Garzik (jgarzik@pobox.com): remove SIZE_MIN and SIZE_MAX
from the include file, as they're not referenced anywhere.


git-svn-id: svn://10.0.0.236/trunk@8575 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:29:24 +00:00
rjc%netscape.com
f329c08189 Expose HT_LayoutComplete() API for layout notification.
git-svn-id: svn://10.0.0.236/trunk@8574 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:27:59 +00:00
rjc%netscape.com
a2915eebfa Disable personal toolbar relations (important for Mac). Also, when removing columns
during pane deletion, adjust internal list.


git-svn-id: svn://10.0.0.236/trunk@8573 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:27:18 +00:00
shaver%netscape.com
f5d79b0ece fix typo and kill warning
git-svn-id: svn://10.0.0.236/trunk@8572 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:17:40 +00:00
shaver%netscape.com
16523d1fdc build libdom (if DOM)
git-svn-id: svn://10.0.0.236/trunk@8571 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:14:53 +00:00
shaver%netscape.com
d5d47cefc1 add libdom to link, if DOM set
git-svn-id: svn://10.0.0.236/trunk@8570 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:14:34 +00:00
shaver%netscape.com
816b75fd0b added code to drive the lib/libdom stuff
git-svn-id: svn://10.0.0.236/trunk@8569 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:09:43 +00:00
shaver%netscape.com
fce77d4a7b added hooks to lib/libdom stuff, and exposed lo_IsEmptyTag for use by libmocha DOM hooks
git-svn-id: svn://10.0.0.236/trunk@8568 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:05:26 +00:00
terry%netscape.com
70ff2bd9be Don't choke if the user hits a space or something in the 'changed in
last ___ days' field.


git-svn-id: svn://10.0.0.236/trunk@8567 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:03:27 +00:00
shaver%netscape.com
f1886e2f6b added first cut of Level-1 DOM (not layout or XML dependent)
git-svn-id: svn://10.0.0.236/trunk@8566 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-27 00:02:31 +00:00
despotdaemon%netscape.com
c2826b34ce Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8564 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 23:06:50 +00:00
despotdaemon%netscape.com
5704816c0b Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8563 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 23:05:15 +00:00
kostello%netscape.com
a6e15c2d3c Remove Widget from the build list (it shouldn't have been their in the first place) -- my error.
git-svn-id: svn://10.0.0.236/trunk@8562 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 22:58:54 +00:00
terry%netscape.com
7d0b388dfa Oops; mail the right URL.
git-svn-id: svn://10.0.0.236/trunk@8561 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 22:51:52 +00:00
despotdaemon%netscape.com
95ddf7bfd9 Pseudo-automatic update of changes made by briano@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@8560 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 22:48:51 +00:00
jwz%mozilla.org
d3b1cdd2e4 give the image a border
git-svn-id: svn://10.0.0.236/trunk@8559 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 22:36:44 +00:00
jwz%mozilla.org
04599c8a68 smaller version of the ant image (8k instead of 17k.)
git-svn-id: svn://10.0.0.236/trunk@8558 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 22:36:05 +00:00
terry%netscape.com
91fea0ae34 Turn on mail notifications.
git-svn-id: svn://10.0.0.236/trunk@8557 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 22:23:00 +00:00
ramiro%netscape.com
280d940b0a Remove unused include.
git-svn-id: svn://10.0.0.236/trunk@8556 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 21:38:46 +00:00
despotdaemon%netscape.com
094a26a86b Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@8555 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 21:35:49 +00:00
slamm%netscape.com
f2557c4d40 Have cvs ingnore the generated '.c' files.
git-svn-id: svn://10.0.0.236/trunk@8554 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 21:29:46 +00:00
michaelp%netscape.com
c6b1a0acee killed Set/GetRootWindow() methods in viewmanager. this is now inferred from
the root view. added ability to select painting in view resizing.


git-svn-id: svn://10.0.0.236/trunk@8553 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 21:24:58 +00:00
michaelp%netscape.com
56715faccc killed viewmanager SetRootWindow() call.
git-svn-id: svn://10.0.0.236/trunk@8552 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 21:24:19 +00:00
rickg%netscape.com
dac30eb9e4 various bug fixes, performance wip
git-svn-id: svn://10.0.0.236/trunk@8551 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 21:20:41 +00:00
leaf%mozilla.org
b8dc6ccf8e kill warnings and '?' lines when people update with obj files, etc.
git-svn-id: svn://10.0.0.236/trunk@8550 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 21:17:04 +00:00
hyatt%netscape.com
aba751fdab Improvements to the control strip in the RDF tree widget. Fixes for two P0 bugs:
#311916 and #314414.


git-svn-id: svn://10.0.0.236/trunk@8549 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 20:51:01 +00:00
robinf%netscape.com
215bbb6978 removing outdated Mac dialer help file
git-svn-id: svn://10.0.0.236/trunk@8548 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 20:37:22 +00:00
robinf%netscape.com
66ab409858 removing outdated files
git-svn-id: svn://10.0.0.236/trunk@8547 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 20:36:09 +00:00
beard%netscape.com
09c7594e49 Removed hotlist.c, which was obsoleted (bad, bad!) before verifying on the Mac.
git-svn-id: svn://10.0.0.236/trunk@8546 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 20:33:53 +00:00
donm%netscape.com
0ba7886e77 reverting to ifdef BUILD_OFFICIAL around the build_numbering system.
git-svn-id: svn://10.0.0.236/trunk@8545 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 20:27:11 +00:00
terry%netscape.com
e12ca36c15 About the Bugzilla source.
git-svn-id: svn://10.0.0.236/trunk@8544 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 20:15:06 +00:00
beard%netscape.com
02ad7fd44b Removed obsolete files: bkmks.h, hotlist.h so build will work.
git-svn-id: svn://10.0.0.236/trunk@8543 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:41:55 +00:00
av%netscape.com
764e512976 Anthrax changes
git-svn-id: svn://10.0.0.236/trunk@8542 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:30:58 +00:00
terry%netscape.com
8cc794caff Stop looking for "target_fix_version".
git-svn-id: svn://10.0.0.236/trunk@8541 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:26:59 +00:00
pinkerton%netscape.com
b6e496388d No more netcaster. Minor 4.5 merges (added referrer to DoGetURL).
git-svn-id: svn://10.0.0.236/trunk@8540 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:07:03 +00:00
pinkerton%netscape.com
608220c2a7 Column support in tree view.
git-svn-id: svn://10.0.0.236/trunk@8539 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:04:54 +00:00
pinkerton%netscape.com
3805b9c59e no more netcaster.
git-svn-id: svn://10.0.0.236/trunk@8538 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:02:43 +00:00
pinkerton%netscape.com
c15c254fa0 No more netcaster.
git-svn-id: svn://10.0.0.236/trunk@8537 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:02:26 +00:00
pinkerton%netscape.com
0a32d2eefa More printing fixes and 4.5 landings. Mostly minor except for print fix.
git-svn-id: svn://10.0.0.236/trunk@8536 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 19:02:13 +00:00
slamm%netscape.com
30412e1a6d Have cvs ignore the generated files.
git-svn-id: svn://10.0.0.236/trunk@8535 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-26 18:36:12 +00:00
867 changed files with 166055 additions and 102 deletions

5
mozilla/js/jsd/MANIFEST Normal file
View File

@@ -0,0 +1,5 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
jsdebug.h

73
mozilla/js/jsd/Makefile Normal file
View File

@@ -0,0 +1,73 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH = ../..
MODULE = jsdebug
LIBRARY_NAME = jsd
# Switching on MOZ_JAVA is a short-term hack. This is really for no Java/IFC
ifdef MOZ_JAVA
JAVA_OR_OJI = 1
endif
ifdef MOZ_OJI
JAVA_OR_OJI = 1
endif
ifdef JAVA_OR_OJI
DIRS = classes
endif
REQUIRES = java js nspr
EXPORTS = jsdebug.h
CSRCS = \
jsdebug.c \
jsd_high.c \
jsd_hook.c \
jsd_scpt.c \
jsd_stak.c \
jsd_text.c \
jsd_lock.c \
$(NULL)
ifndef MOZ_JSD
CSRCS += jsdstubs.c jsd_java.c
JDK_GEN = \
netscape.jsdebug.Script \
netscape.jsdebug.DebugController \
netscape.jsdebug.JSThreadState \
netscape.jsdebug.JSStackFrameInfo \
netscape.jsdebug.JSPC \
netscape.jsdebug.JSSourceTextProvider \
netscape.jsdebug.JSErrorReporter \
$(NULL)
endif
include $(DEPTH)/config/rules.mk
$(OBJDIR)\jsdstubs.o: \
$(JDK_STUB_DIR)\netscape_jsdebug_Script.c \
$(JDK_STUB_DIR)\netscape_jsdebug_DebugController.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSThreadState.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSStackFrameInfo.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSPC.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSSourceTextProvider.c

View File

@@ -0,0 +1,78 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH = ../..
topsrcdir = @top_srcdir@
VPATH = @srcdir@
srcdir = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = jsdebug
LIBRARY_NAME = jsd
# Switching on MOZ_JAVA is a short-term hack. This is really for no Java/IFC
ifdef MOZ_JAVA
JAVA_OR_OJI = 1
endif
ifdef MOZ_OJI
JAVA_OR_OJI = 1
endif
ifdef JAVA_OR_OJI
DIRS = classes
endif
REQUIRES = java js nspr
EXPORTS = $(srcdir)/jsdebug.h
CSRCS = \
jsdebug.c \
jsd_high.c \
jsd_hook.c \
jsd_scpt.c \
jsd_stak.c \
jsd_text.c \
jsd_lock.c \
$(NULL)
ifndef MOZ_JSD
CSRCS += jsdstubs.c jsd_java.c
JDK_GEN = \
netscape.jsdebug.Script \
netscape.jsdebug.DebugController \
netscape.jsdebug.JSThreadState \
netscape.jsdebug.JSStackFrameInfo \
netscape.jsdebug.JSPC \
netscape.jsdebug.JSSourceTextProvider \
netscape.jsdebug.JSErrorReporter \
$(NULL)
endif
include $(topsrcdir)/config/rules.mk
$(OBJDIR)\jsdstubs.o: \
$(JDK_STUB_DIR)\netscape_jsdebug_Script.c \
$(JDK_STUB_DIR)\netscape_jsdebug_DebugController.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSThreadState.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSStackFrameInfo.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSPC.c \
$(JDK_STUB_DIR)\netscape_jsdebug_JSSourceTextProvider.c

18
mozilla/js/jsd/README Normal file
View File

@@ -0,0 +1,18 @@
/* jband - 10/26/98 - */
js/jsd contains code for debugging support for the C-based JavaScript engine
in js/src.
Currently the makefiles are for Win32 only (using MS nmake.exe from MSDEV 4.2).
jsd.mak will build a standalone dll. jsdshell.mak will build the dll and also
a version of the js/src/js.c shell which will launch a Java VM and run the
JavaSript Debugger (built in js/jsdj). This version assumes that you have a
JRE compatible JVM installed. Only Windows is supported for this Java-based
debugging.
Though only Windows makefiles are supplied, the basic code in js/jsd should
compile for other platforms -- it is a newer version of code that builds and
ships with Communicator 4.x on many platforms.
js/jsd/jsdb is a console debugger using only native code (see README in that
directory)

View File

@@ -0,0 +1,59 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH = ../../..
MODULE = java
JJSD = netscape/jsdebug
#
# JDIRS is dependant on JAVA_DESTPATH in config/rules.m[a]k.
# Be sure to touch that directory if you add a new directory to
# JDIRS, or else it will not build. XXX
#
JDIRS = $(JJSD)
JAR_JSD = jsd10.jar
JAR_JSD_CLASSES = $(JJSD)
#
# jars to build at install time
#
JARS = $(JAR_JSD)
include $(DEPTH)/config/rules.mk
JAVA_SOURCEPATH = $(DEPTH)/js/jsd/classes
doc::
$(JAVADOC) -d $(DIST)/doc netscape.jsdebug
natives_list:: FORCE
rm -rf $@
find . -name "*.class" -print | sed 's@\./\(.*\)\.class$$@\1@' | \
sed 's@/@.@g' | xargs $(JVH) -natives | sort > $@
check_natives:: natives_list
rm -f found_natives
nm -B ../$(OBJDIR)/*.o \
| egrep "Java.*_stub" | awk '{ print $$3; }' | sort > found_natives
diff found_natives natives_list
FORCE:

View File

@@ -0,0 +1,64 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH = ../../..
topsrcdir = @top_srcdir@
VPATH = @srcdir@
srcdir = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = java
JJSD = netscape/jsdebug
#
# JDIRS is dependant on JAVA_DESTPATH in config/rules.m[a]k.
# Be sure to touch that directory if you add a new directory to
# JDIRS, or else it will not build. XXX
#
JDIRS = $(JJSD)
JAR_JSD = jsd10.jar
JAR_JSD_CLASSES = $(JJSD)
#
# jars to build at install time
#
JARS = $(JAR_JSD)
include $(topsrcdir)/config/rules.mk
JAVA_SOURCEPATH = $(DEPTH)/js/jsd/classes
doc::
$(JAVADOC) -d $(DIST)/doc netscape.jsdebug
natives_list:: FORCE
rm -rf $@
find . -name "*.class" -print | sed 's@\./\(.*\)\.class$$@\1@' | \
sed 's@/@.@g' | xargs $(JVH) -natives | sort > $@
check_natives:: natives_list
rm -f found_natives
nm -B ../$(OBJDIR)/*.o \
| egrep "Java.*_stub" | awk '{ print $$3; }' | sort > found_natives
diff found_natives natives_list
FORCE:

View File

@@ -0,0 +1,64 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
IGNORE_MANIFEST=1
#
#//------------------------------------------------------------------------
#//
#// Makefile to build the JavaScriptDebug tree
#//
#//------------------------------------------------------------------------
DEPTH = ..\..\..
JAVA_SOURCEPATH=$(DEPTH)\js\jsd\classes
#//------------------------------------------------------------------------
#//
#// Define the files necessary to build the target (ie. OBJS)
#//
#//------------------------------------------------------------------------
include <$(DEPTH)\config\config.mak>
all::
MODULE=java
JJSD=netscape/jsdebug
JDIRS=$(JJSD)
JAR_JSD=jsd10.jar
JAR_JSD_CLASSES=$(JJSD)
JARS=$(JAR_JSD)
include <$(DEPTH)\config\rules.mak>
!if "$(MOZ_BITS)" == "32"
$(JAR_JSD):
cd $(JAVA_DESTPATH)
@echo +++ building/updating $@
$(ZIP_PROG) -$(COMP_LEVEL)qu $@ META-INF\build
-for %i in ($(JAR_JSD_CLASSES:/=\)) do @$(ZIP_PROG) -$(COMP_LEVEL)qu $@ %i\*.class
cd $(MAKEDIR)
!endif
jars: $(JARS)
install:: jars
javadoc:
-mkdir $(XPDIST)\javadoc 2> NUL
echo $(JAVADOC) -sourcepath . -d $(XPDIST)\javadoc $(JDIRS:/=.)
$(JAVADOC) -sourcepath . -d $(XPDIST)\javadoc $(JDIRS:/=.)

View File

@@ -0,0 +1,41 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* DebugBreakHook must be subclassed to respond when a debug break is
* requested
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public class DebugBreakHook extends Hook {
/**
* Override this method to respond just before a thread
* reaches a particular instruction.
* <p>
* @param debug ThreadState representing the current state
* @param pc the location of the instruction about to be executed
*/
public void aboutToExecute(ThreadStateBase debug, PC pc) {
// defaults to no action
}
}

View File

@@ -0,0 +1,374 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
import netscape.util.Hashtable;
import netscape.security.PrivilegeManager;
import netscape.security.ForbiddenTargetException;
/**
* This is the master control panel for observing events in the VM.
* Each method setXHook() must be passed an object that extends
* the class XHook. When an event of the specified type
* occurs, a well-known method on XHook will be called (see the
* various XHook classes for details). The method call takes place
* on the same thread that triggered the event in the first place,
* so that any monitors held by the thread which triggered the hook
* will still be owned in the hook method.
* <p>
* This class is meant to be a singleton and has a private constructor.
* Call the static <code>getDebugController()</code> to get this object.
* <p>
* Note that all functions use netscape.security.PrivilegeManager to verify
* that the caller has the "Debugger" privilege. The exception
* netscape.security.ForbiddenTargetException will be throw if this is
* not enabled.
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
* @see netscape.security.PrivilegeManager
* @see netscape.security.ForbiddenTargetException
*/
public final class DebugController {
private static final int majorVersion = 1;
private static final int minorVersion = 0;
private static DebugController controller;
private ScriptHook scriptHook;
private Hashtable instructionHookTable;
private InterruptHook interruptHook;
private DebugBreakHook debugBreakHook;
private JSErrorReporter errorReporter;
/**
* Get the DebugController object for the current VM.
* <p>
* @return the singleton DebugController
*/
public static synchronized DebugController getDebugController()
throws ForbiddenTargetException
{
try {
PrivilegeManager.checkPrivilegeEnabled("Debugger");
if (controller == null)
controller = new DebugController();
return controller;
} catch (ForbiddenTargetException e) {
System.out.println("failed in check Priv in DebugController.getDebugController()");
e.printStackTrace(System.out);
throw e;
}
}
private DebugController()
{
scriptTable = new Hashtable();
_setController(true);
}
/**
* Request notification of Script loading events.
* <p>
* Whenever a Script is loaded into or unloaded from the VM
* the appropriate method of the ScriptHook argument will be called.
* Callers are responsible for chaining hooks if chaining is required.
*
* @param h new script hook
* @return the previous hook object (null if none)
*/
public synchronized ScriptHook setScriptHook(ScriptHook h)
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
ScriptHook oldHook = scriptHook;
scriptHook = h;
return oldHook;
}
/**
* Get the current observer of Script events.
* <p>
* @return the current script hook (null if none)
*/
public ScriptHook getScriptHook()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return scriptHook;
}
/**
* Set a hook at the given program counter value.
* <p>
* When a thread reaches that instruction, a ThreadState
* object will be created and the appropriate method
* of the hook object will be called. Callers are responsible
* for chaining hooks if chaining is required.
*
* @param pc pc at which hook should be set
* @param h new hook for this pc
* @return the previous hook object (null if none)
*/
public synchronized InstructionHook setInstructionHook(
PC pc,
InstructionHook h)
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
InstructionHook oldHook;
if (instructionHookTable == null) {
instructionHookTable = new Hashtable();
}
oldHook = (InstructionHook) instructionHookTable.get(pc);
instructionHookTable.put(pc, h);
setInstructionHook0(pc);
return oldHook;
}
private native void setInstructionHook0(PC pc);
/**
* Get the hook at the given program counter value.
* <p>
* @param pc pc for which hook should be found
* @return the hook (null if none)
*/
public InstructionHook getInstructionHook(PC pc)
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return getInstructionHook0(pc);
}
// called by native function
private InstructionHook getInstructionHook0(PC pc)
{
if (instructionHookTable == null)
return null;
else
return (InstructionHook) instructionHookTable.get(pc);
}
/**************************************************************/
/**
* Set the hook at to be called when interrupts occur.
* <p>
* The next instruction which starts to execute after
* <code>sendInterrupt()</code> has been called will
* trigger a call to this hook. A ThreadState
* object will be created and the appropriate method
* of the hook object will be called. Callers are responsible
* for chaining hooks if chaining is required.
*
* @param h new hook
* @return the previous hook object (null if none)
* @see netscape.jsdebug.DebugController#sendInterrupt
*/
public synchronized InterruptHook setInterruptHook( InterruptHook h )
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
InterruptHook oldHook = interruptHook;
interruptHook = h;
return oldHook;
}
/**
* Get the current hook to be called on interrupt
* <p>
* @return the hook (null if none)
*/
public InterruptHook getInterruptHook()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return interruptHook;
}
/**
* Cause the interrupt hook to be called when the next
* JavaScript instruction starts to execute.
* <p>
* The interrupt is self clearing
* @see netscape.jsdebug.DebugController#setInterruptHook
*/
public void sendInterrupt()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
sendInterrupt0();
}
private native void sendInterrupt0();
/**************************************************************/
/**
* Set the hook at to be called when a <i>debug break</i> is requested
* <p>
* Set the hook to be called when <i>JSErrorReporter.DEBUG</i> is returned
* by the <i>error reporter</i> hook. When that happens a ThreadState
* object will be created and the appropriate method
* of the hook object will be called. Callers are responsible
* for chaining hooks if chaining is required.
*
* @param h new hook
* @return the previous hook object (null if none)
* @see netscape.jsdebug.DebugController#setErrorReporter
* @see netscape.jsdebug.JSErrorReporter
*/
public synchronized DebugBreakHook setDebugBreakHook( DebugBreakHook h )
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
DebugBreakHook oldHook = debugBreakHook;
debugBreakHook = h;
return oldHook;
}
/**
* Get the current hook to be called on debug break
* <p>
* @return the hook (null if none)
*/
public DebugBreakHook getDebugBreakHook()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return debugBreakHook;
}
/**************************************************************/
/**
* Get the 'handle' which cooresponds to the native code representing the
* instance of the underlying JavaScript Debugger context.
* <p>
* This would not normally be useful in java. Some of the other classes
* in this package need this. It remains public mostly for historical
* reasons. It serves as a check to see that the native classes have been
* loaded and the built-in native JavaScript Debugger support has been
* initialized. This DebugController is not valid (or useful) when it is
* in a state where this native context equals 0.
*
* @return the native context (0 if none)
*/
public int getNativeContext()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
// System.out.println( "nativecontext = " + _nativeContext + "\n" );
return _nativeContext;
}
private native void _setController( boolean set );
private Hashtable scriptTable;
private int _nativeContext;
/**
* Execute a string as a JavaScript script within a stack frame
* <p>
* This method can be used to execute arbitrary sets of statements on a
* stopped thread. It is useful for inspecting and modifying data.
* <p>
* This method can only be called while the JavaScript thread is stopped
* - i.e. as part of the code responding to a hook. Thgis method
* <b>must</b> be called on the same thread as was executing when the
* hook was called.
* <p>
* If an error occurs while execuing this code, then the error
* reporter hook will be called if present.
*
* @param frame the frame context in which to evaluate this script
* @param text the script text
* @param filename where to tell the JavaScript engine this code came
* from (it is usually best to make this the same as the filename of
* code represented by the frame)
* @param lineno the line number to pass to JS ( >=1 )
* @return The result of the script execution converted to a string.
* (null if the result was null or void)
*/
public String executeScriptInStackFrame( JSStackFrameInfo frame,
String text,
String filename,
int lineno )
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return executeScriptInStackFrame0( frame, text, filename, lineno );
}
private native String executeScriptInStackFrame0( JSStackFrameInfo frame,
String text,
String filename,
int lineno );
/**
* Set the hook at to be called when a JavaScript error occurs
* <p>
* @param er new error reporter hook
* @return the previous hook object (null if none)
* @see netscape.jsdebug.JSErrorReporter
*/
public JSErrorReporter setErrorReporter(JSErrorReporter er)
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
JSErrorReporter old = errorReporter;
errorReporter = er;
return old;
}
/**
* Get the hook at to be called when a JavaScript error occurs
* <p>
* @return the hook object (null if none)
* @see netscape.jsdebug.JSErrorReporter
*/
public JSErrorReporter getErrorReporter()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return errorReporter;
}
/**
* Get the major version number of this module
* <p>
* @return the version number
*/
public static int getMajorVersion() {return majorVersion;}
/**
* Get the minor version number of this module
* <p>
* @return the version number
*/
public static int getMinorVersion() {return minorVersion;}
private static native int getNativeMajorVersion();
private static native int getNativeMinorVersion();
}

View File

@@ -0,0 +1,32 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* An instance of this class is returned for each hook set by
* the debugger as a handle for removing the hook later.
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
public abstract class Hook {
}

View File

@@ -0,0 +1,55 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* InstructionHook must be subclassed to respond to hooks
* at a particular program instruction.
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
public class InstructionHook extends Hook {
private PC pc;
/**
* Create an InstructionHook at the given PC value.
*/
public InstructionHook(PC pc) {
this.pc = pc;
}
/**
* Get the instruction that the hook is set at.
*/
public PC getPC() {
return pc;
}
/**
* Override this method to respond just before a thread
* reaches a particular instruction.
*/
/* jband - 03/31/97 - I made this public to allow chaining */
public void aboutToExecute(ThreadStateBase debug) {
// defaults to no action
}
}

View File

@@ -0,0 +1,39 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* InterruptHook must be subclassed to respond when interrupts occur
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
public class InterruptHook extends Hook {
/**
* Override this method to respond when interrupts occur
* @param debug the state of this thread
* @param pc the pc of the instruction about to execute
*/
public void aboutToExecute(ThreadStateBase debug, PC pc) {
// defaults to no action
}
}

View File

@@ -0,0 +1,46 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* Exception to indicate bad thread state etc...
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
public class InvalidInfoException extends Exception {
/**
* Constructs a InvalidInfoException without a detail message.
* A detail message is a String that describes this particular exception.
*/
public InvalidInfoException() {
super();
}
/**
* Constructs a InvalidInfoException with a detail message.
* A detail message is a String that describes this particular exception.
* @param s the detail message
*/
public InvalidInfoException(String s) {
super(s);
}
}

View File

@@ -0,0 +1,70 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* This is a special kind of hook to respond to JavaScript errors
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public interface JSErrorReporter
{
/* keep these in sync with the numbers in jsdebug.h */
/**
* returned by <code>reportError()</code> to indicate that the error
* should be passed along to the error reporter that would have been
* called had the debugger not been running
*/
public static final int PASS_ALONG = 0;
/**
* returned by <code>reportError()</code> to indicate that the
* normal error reporter should not be called and that the JavaScript
* engine should do whatever it would normally do after calling the
* error reporter.
*/
public static final int RETURN = 1;
/**
* returned by <code>reportError()</code> to indicate that the
* 'debug break' hook should be called to allow the debugger to
* investigate the state of the process when the error occured
*/
public static final int DEBUG = 2;
/**
* This hook is called when a JavaScript error (compile or runtime) occurs
* <p>
* One of the codes above should be returned to tell the engine how to
* proceed.
* @param msg error message passed through from the JavaScript engine
* @param filename filename (or url) of the code with the error
* @param lineno line number where error was detected
* @param linebuf a copy of the line where the error was detected
* @param tokenOffset the offset into <i>linebuf</i> where the error
* was detected
* @returns one of the codes above
*/
public int reportError( String msg,
String filename,
int lineno,
String linebuf,
int tokenOffset );
}

View File

@@ -0,0 +1,76 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* This subclass of PC provides JavaScript-specific information.
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public final class JSPC extends PC {
private Script script;
private int pc;
public JSPC(Script script, int pc) {
this.script = script;
this.pc = pc;
}
public Script getScript() {
return script;
}
public int getPC() {
return pc;
}
public boolean isValid()
{
return script.isValid();
}
/**
* Get the SourceLocation associated with this PC value.
* returns null if the source location is unavailable.
*/
public native SourceLocation getSourceLocation();
/**
* Ask whether two program counter values are equal.
*/
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof JSPC))
return false;
JSPC jspc = (JSPC) obj;
return (jspc.script == script && jspc.pc == pc);
}
public int hashCode() {
return script.hashCode() + pc;
}
public String toString() {
return "<PC "+script+"+"+pc+">";
}
}

View File

@@ -0,0 +1,63 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* JAvaScript specific SourceLocation
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public class JSSourceLocation extends SourceLocation
{
public JSSourceLocation( JSPC pc, int line )
{
_pc = pc;
_line = line;
_url = pc.getScript().getURL();
}
/**
* Gets the first line number associated with this SourceLocation.
* This is the lowest common denominator information that will be
* available: some implementations may choose to include more
* specific location information in a subclass of SourceLocation.
*/
public int getLine() {return _line;}
public String getURL() {return _url;}
/**
* Get the first PC associated with a given SourceLocation.
* This is the place to set a breakpoint at that location.
* returns null if there is no code corresponding to that source
* location.
*/
public PC getPC() {return _pc;}
public String toString()
{
return "<SourceLocation "+_url+"#"+_line+">";
}
private JSPC _pc;
private int _line;
private String _url;
}

View File

@@ -0,0 +1,130 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
import netscape.util.Vector;
import netscape.security.PrivilegeManager;
import netscape.security.ForbiddenTargetException;
/**
* This class provides access to SourceText items.
* <p>
* This class is meant to be a singleton and has a private constructor.
* Call the static <code>getSourceTextProvider()</code> to get this object.
* <p>
* Note that all functions use netscape.security.PrivilegeManager to verify
* that the caller has the "Debugger" privilege. The exception
* netscape.security.ForbiddenTargetException will be throw if this is
* not enabled.
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
* @see netscape.security.PrivilegeManager
* @see netscape.security.ForbiddenTargetException
*/
public final class JSSourceTextProvider extends SourceTextProvider
{
private JSSourceTextProvider( long nativeContext )
{
_sourceTextVector = new Vector();
_nativeContext = nativeContext;
}
/**
* Get the SourceTextProvider object for the current VM.
* <p>
* @return the singleton SourceTextProvider
*/
public static synchronized SourceTextProvider getSourceTextProvider()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
if( null == _sourceTextProvider )
{
long nativeContext = DebugController.getDebugController().getNativeContext();
if( 0 != nativeContext )
_sourceTextProvider = new JSSourceTextProvider(nativeContext);
}
return _sourceTextProvider;
}
/**
* Get the SourceText item for the given URL
*/
public SourceTextItem findSourceTextItem( String url )
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return findSourceTextItem0(url);
}
// also called from native code...
private SourceTextItem findSourceTextItem0( String url )
{
synchronized( _sourceTextVector )
{
for (int i = 0; i < _sourceTextVector.size(); i++)
{
SourceTextItem src = (SourceTextItem) _sourceTextVector.elementAt(i);
if( src.getURL().equals(url) )
return src;
}
return null;
}
}
/**
* Return the vector of SourceTextItems.
* <p>
* This is NOT a copy. nor is it necessarily current
*/
public Vector getSourceTextVector()
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return _sourceTextVector;
}
/**
* Load the SourceText item for the given URL
* <p>
* <B>This is not guaranteed to be implemented</B>
*/
public synchronized SourceTextItem loadSourceTextItem( String url )
throws ForbiddenTargetException
{
PrivilegeManager.checkPrivilegeEnabled("Debugger");
return loadSourceTextItem0( url );
}
private native SourceTextItem loadSourceTextItem0( String url );
/**
* Refresh the vector to reflect any changes made in the
* underlying native system
*/
public synchronized native void refreshSourceTextVector();
private static SourceTextProvider _sourceTextProvider = null;
private Vector _sourceTextVector;
private long _nativeContext;
}

View File

@@ -0,0 +1,51 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* This interface provides access to the execution stack of a thread.
* It has several subclasses to distinguish between different kinds of
* stack frames: these currently include activations of Java methods
* or JavaScript functions.
* It is possible that synchronize blocks and try blocks deserve their own
* stack frames - to allow for later extensions a debugger should skip over
* stack frames it doesn't understand.
* Note that this appears very Java-specific. However, multiple threads and
* exceptions are relevant to JavaScript as well because of its
* interoperation with Java.
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public final class JSStackFrameInfo extends StackFrameInfo
{
public JSStackFrameInfo(JSThreadState threadState) {
super(threadState);
}
protected native StackFrameInfo getCaller0()
throws InvalidInfoException;
public native PC getPC()
throws InvalidInfoException;
private int _nativePtr; // used internally
}

View File

@@ -0,0 +1,80 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* This is the JavaScript specific implementation of the thread state
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public final class JSThreadState extends ThreadStateBase
{
/**
* <B><font color="red">Not Implemented.</font></B>
* Always throws <code>InternalError("unimplemented")</code>
*/
public static ThreadStateBase getThreadState(Thread t)
throws InvalidInfoException
{
throw new InternalError("unimplemented");
}
/**
* get the count of frames
*/
public native int countStackFrames()
throws InvalidInfoException;
/**
* get the 'top' frame
*/
public native StackFrameInfo getCurrentFrame()
throws InvalidInfoException;
/**
* <B><font color="red">Not Implemented.</font></B>
* Always throws <code>InternalError("unimplemented")</code>
*/
public Thread getThread()
{
throw new InternalError("unimplemented");
}
/**
* <B><font color="red">Not Implemented.</font></B>
* Always throws <code>InternalError("unimplemented")</code>
*/
public void leaveSuspended()
{
throw new InternalError("unimplemented");
}
/**
* <B><font color="red">Not Implemented.</font></B>
* Always throws <code>InternalError("unimplemented")</code>
*/
protected void resume0()
{
throw new InternalError("unimplemented");
}
protected int nativeThreadState; /* used internally */
}

View File

@@ -0,0 +1,42 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* The PC class is an opaque representation of a program counter. It
* may have different implementations for interpreted Java methods,
* methods compiled by the JIT, JavaScript methods, etc.
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
public abstract class PC {
/**
* Get the SourceLocation associated with this PC value.
* returns null if the source location is unavailable.
*/
public abstract SourceLocation getSourceLocation();
/**
* Ask whether two program counter values are equal.
*/
public abstract boolean equals(Object obj);
}

View File

@@ -0,0 +1,82 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* This instances of this class represent the JavaScript string object. This
* class is intended to only be constructed by the underlying native code.
* The DebugController will construct an instance of this class when scripts
* are created and that instance will always be used to reference the underlying
* script throughout the lifetime of that script.
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public final class Script
{
public String getURL() {return _url; }
public String getFunction() {return _function; }
public int getBaseLineNumber() {return _baseLineNumber;}
public int getLineExtent() {return _lineExtent; }
public boolean isValid() {return 0 != _nativePtr;}
/**
* Get the PC of the first executable code on or after the given
* line in this script. returns null if none
*/
public native JSPC getClosestPC(int line);
public String toString()
{
int end = _baseLineNumber+_lineExtent-1;
if( null == _function )
return "<Script "+_url+"["+_baseLineNumber+","+end+"]>";
else
return "<Script "+_url+"#"+_function+"()["+_baseLineNumber+","+end+"]>";
}
public int hashCode()
{
return _nativePtr;
}
public boolean equals(Object obj)
{
if( obj == this )
return true;
// In our system the native code is the only code that generates
// these objects. They are never duplicated
return false;
/*
if( !(obj instanceof Script) )
return false;
return 0 != _nativePtr && _nativePtr == ((Script)obj)._nativePtr;
*/
}
private synchronized void _setInvalid() {_nativePtr = 0;}
private String _url;
private String _function;
private int _baseLineNumber;
private int _lineExtent;
private int _nativePtr; // used internally
}

View File

@@ -0,0 +1,57 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* ScriptHook must be subclassed to respond to loading and
* unloading of scripts
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public class ScriptHook extends Hook
{
/**
* Create a ScriptHook for current the current VM.
*/
public ScriptHook() {}
/**
* Override this method to respond when a new script is
* loaded into the VM.
*
* @param script a script object created by the controller to
* represent this script. This exact same object will be used
* in all further references to the script.
*/
public void justLoadedScript(Script script) {
// defaults to no action
}
/**
* Override this method to respond when a class is
* about to be unloaded from the VM.
*
* @param script which will be unloaded
*/
public void aboutToUnloadScript(Script script) {
// defaults to no action
}
}

View File

@@ -0,0 +1,53 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* An implementation of the SourceLocation interface is used to represent
* a location in a source file. Java classfiles only make source locations
* available at the line-by-line granularity, but other languages may
* include finer-grain information. At this time only line number
* information is included.
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
/* XXX must source locations be contiguous? */
public abstract class SourceLocation {
/**
* Gets the first line number associated with this SourceLocation.
* This is the lowest common denominator information that will be
* available: some implementations may choose to include more
* specific location information in a subclass of SourceLocation.
*
* @returns source line number cooresponding to this location
*/
public abstract int getLine();
/**
* Get the first PC associated with a given SourceLocation.
* This is the place to set a breakpoint at that location.
*
* @returns pc object or null if there is no code corresponding
* to this source location.
*/
public abstract PC getPC();
}

View File

@@ -0,0 +1,107 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* This class is used to represent a file or url which contains
* JavaScript source text. The actual JavaScript source may be intermixed
* with other text (as in an html file) or raw. The debugger uses this
* interface to access the source. The file of the actual source need
* not physially exist anywhere; i.e. the underlying engine might synthesize
* it as needed.
* <p>
* The <i>url</i> of this class is immutable -- it represents a key in
* collections of these objects
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public class SourceTextItem
{
/* these coorespond to jsdebug.h values - change in both places if anywhere */
/**
* This object is initialized, but contains no text
*/
public static final int INITED = 0;
/**
* This object contains the full text
*/
public static final int FULL = 1;
/**
* This object contains the partial text (valid , but more may come later)
*/
public static final int PARTIAL = 2;
/**
* This object may contain partial text, but loading was aborted (by user?)
*/
public static final int ABORTED = 3;
/**
* This object may contain partial text, but loading failed (or the
* underlying debugger support was unable to capture it; e.g.
* not enough memory...)
*/
public static final int FAILED = 4;
/**
* This object contains no text because the debugger has signaled that
* the text is no longer needed
*/
public static final int CLEARED = 5;
/**
* Constuct for url (which is immutable during the lifetime of the object)
* <p>
* Presumably, text will be added later
* @param url url or filename by which this object will be known
*/
public SourceTextItem( String url )
{
this( url, (String)null, INITED );
}
/**
* Constuct for url with text and status
* <p>
* @param url url or filename by which this object will be known
* @param text source text this object should start with
* @param status status this object should start with
*/
public SourceTextItem( String url, String text, int status )
{
_url = url;
_text = text;
_status = status;
_dirty = true;
}
public String getURL() {return _url; }
public String getText() {return _text; }
public int getStatus() {return _status;}
public boolean getDirty() {return _dirty; }
public void setText(String text) {_text = text;}
public void setStatus(int status) {_status = status;}
public void setDirty(boolean b) {_dirty = b; }
private String _url;
private String _text;
private int _status;
private boolean _dirty;
}

View File

@@ -0,0 +1,58 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
import netscape.util.Vector;
import netscape.security.ForbiddenTargetException;
/**
* Abstract class to represent entity capable of providing access to source text
*
* @author John Bandhauer
* @version 1.0
* @since 1.0
*/
public abstract class SourceTextProvider
{
public static SourceTextProvider getSourceTextProvider() throws Exception
{
return null;
}
/**
* Return the vector of SourceTextItems.
* <p>
* This is not liekly to be a copy. nor is it necessarily current
*/
public abstract Vector getSourceTextVector() throws ForbiddenTargetException;
/**
* Refresh the vector by whatever means to reflect any changes made in the
* underlying native system
*/
public abstract void refreshSourceTextVector();
/**
* Get the SourceText item for the given URL
*/
public abstract SourceTextItem findSourceTextItem( String url ) throws ForbiddenTargetException;
/**
* Load the SourceText item for the given URL
* <p>
* <B>This is not guaranteed to be implemented</B>
*/
public abstract SourceTextItem loadSourceTextItem( String url ) throws ForbiddenTargetException;
}

View File

@@ -0,0 +1,94 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/**
* This interface provides access to the execution stack of a thread.
* It has several subclasses to distinguish between different kinds of
* stack frames: these currently include activations of Java methods
* or JavaScript functions.
* It is possible that synchronize blocks and try blocks deserve their own
* stack frames - to allow for later extensions a debugger should skip over
* stack frames it doesn't understand.
* Note that this appears very Java-specific. However, multiple threads and
* exceptions are relevant to JavaScript as well because of its
* interoperation with Java.
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
public abstract class StackFrameInfo {
ThreadStateBase threadState;
StackFrameInfo caller;
protected StackFrameInfo(ThreadStateBase threadState) {
this.threadState = threadState;
}
/**
* Return true if this stack frame is still valid. Stack frames
* may become invalid when the thread is resumed (this is more
* conservative than invalidating the frame only when it actually
* returns).
*/
public boolean isValid() {
return threadState.isValid();
}
/**
* Get the stack frame where this one was built, or null for the
* start of the stack.
*/
public synchronized StackFrameInfo getCaller()
throws InvalidInfoException {
if (caller == null)
caller = getCaller0();
if (!isValid())
throw new InvalidInfoException("invalid StackFrameInfo");
return caller;
}
protected abstract StackFrameInfo getCaller0()
throws InvalidInfoException;
/**
* Get the thread that this stack frame is a part of.
*/
public Thread getThread() {
return threadState.getThread();
}
/**
* Get the 'enclosing' thread state
*/
public ThreadStateBase getThreadState() {
return threadState;
}
/**
* Get the current program counter value. Note that the
* class JavaPC supports the getMethod() operation.
*/
public abstract PC getPC()
throws InvalidInfoException;
}

View File

@@ -0,0 +1,241 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
package netscape.jsdebug;
/*
* jband - 03/19/97
*
* This is an 'abstracted version of netscape.debug.ThreadState
*
* The methods that were 'native' there are 'abstract' here.
* Changed 'private' data to 'protected' (though native access is immune)
* Changed 'private' resume0() to 'protected'
* Removed ThreadHook referneces
*
*/
/**
* When a hook is hit, the debugger records the state of the
* thread before the hook in a ThreadState object. This object
* is then passed to any hook methods that are called, and can
* be used to change the state of the thread when it resumes from the
* hook.
*
* @author John Bandhauer
* @author Nick Thompson
* @version 1.0
* @since 1.0
*/
public abstract class ThreadStateBase {
protected Thread thread;
protected boolean valid;
protected boolean runningHook;
protected boolean resumeWhenDone;
protected int status;
protected int continueState;
protected StackFrameInfo[] stack; /* jband - 03/19/97 - had no access modifier */
protected Object returnValue;
protected Throwable currentException;
protected int currentFramePtr; /* used internally */
protected ThreadStateBase previous;
/**
* <B><font color="red">Not Implemented.</font></B>
* Always throws <code>InternalError("unimplemented")</code>
*/
public static ThreadStateBase getThreadState(Thread t)
throws InvalidInfoException
{
throw new InternalError("unimplemented");
}
/**
* Get the Thread that this ThreadState came from.
*/
public Thread getThread() {
return thread;
}
/**
* Return true if the Thread hasn't been resumed since this ThreadState
* was made.
*/
public boolean isValid() {
return valid;
}
/**
* Return true if the thread is currently running a hook
* for this ThreadState
*/
public boolean isRunningHook() {
return runningHook;
}
/**
* partial list of thread states from sun.debug.ThreadInfo.
* XXX some of these don't apply.
*/
public final static int THR_STATUS_UNKNOWN = 0x01;
public final static int THR_STATUS_ZOMBIE = 0x02;
public final static int THR_STATUS_RUNNING = 0x03;
public final static int THR_STATUS_SLEEPING = 0x04;
public final static int THR_STATUS_MONWAIT = 0x05;
public final static int THR_STATUS_CONDWAIT = 0x06;
public final static int THR_STATUS_SUSPENDED = 0x07;
public final static int THR_STATUS_BREAK = 0x08;
/**
* Get the state of the thread at the time it entered debug mode.
* This can't be modified directly.
*/
public int getStatus() {
return status;
}
/**
* Get the count of the stackframes
*/
public abstract int countStackFrames()
throws InvalidInfoException;
/**
* Get the 'top' stackframe; i.e. the one with the current instruction
*/
public abstract StackFrameInfo getCurrentFrame()
throws InvalidInfoException;
/**
* Get the thread's stack as an array. stack[stack.length-1] is the
* current frame, and stack[0] is the beginning of the stack.
*/
public synchronized StackFrameInfo[] getStack()
throws InvalidInfoException {
// XXX check valid?
if (stack == null) {
stack = new StackFrameInfo[countStackFrames()];
}
if (stack.length == 0)
return stack;
StackFrameInfo frame = getCurrentFrame();
stack[stack.length - 1] = frame;
for (int i = stack.length - 2; i >= 0; i--) {
frame = frame.getCaller();
stack[i] = frame;
}
// should really be read-only for safety
return stack;
}
/**
* Leave the thread in a suspended state when the hook method(s)
* finish. This can be undone by calling resume(). This is the
* default only if the break was the result of
* DebugController.sendInterrupt().
*/
public void leaveSuspended() {
resumeWhenDone = false;
}
/**
* Resume the thread. This is the default unless the break was the result
* of DebugController.sendInterrupt(). This method may be called from a
* hook method, in which case the thread will resume when the
* method returns.
* Alternatively, if there is no active hook method and
* the thread is suspended around in the DebugFrame, this resumes it
* immediately.
*/
public synchronized void resume() {
if (runningHook)
resumeWhenDone = true;
else
resume0();
}
protected abstract void resume0();
/**
* if the continueState is DEAD, the thread cannot
* be restarted.
*/
public final static int DEBUG_STATE_DEAD = 0x01;
/**
* if the continueState is RUN, the thread will
* proceed to the next program counter value when it resumes.
*/
public final static int DEBUG_STATE_RUN = 0x02;
/**
* if the continueState is RETURN, the thread will
* return from the current method with the value in getReturnValue()
* when it resumes.
*/
public final static int DEBUG_STATE_RETURN = 0x03;
/**
* if the continueState is THROW, the thread will
* throw an exception (accessible with getException()) when it
* resumes.
*/
public final static int DEBUG_STATE_THROW = 0x04;
/**
* This gets the current continue state of the debug frame, which
* will be one of the DEBUG_STATE_* values above.
*/
public int getContinueState() {
return continueState;
}
public int setContinueState(int state) {
int old = continueState;
continueState = state;
return old;
}
/**
* If the thread was stopped while in the process of returning
* a value, this call returns an object representing that value.
* non-Object values are wrapped as in the java.lang.reflect api.
* This is only relevant if the continue state is RETURN, and the
* method throws an IllegalStateException otherwise.
*/
public Object getReturnValue() throws IllegalStateException {
if (continueState != DEBUG_STATE_RETURN)
throw new IllegalStateException("no value being returned");
return returnValue;
}
/**
* If the thread was stopped while in the process of throwing an
* exception, this call returns that exception.
* This is only relevant if the continue state is THROW, and it
* throws an IllegalStateException otherwise.
*/
public Throwable getException() throws IllegalStateException {
if (continueState != DEBUG_STATE_THROW)
throw new IllegalStateException("no exception throw in progress");
return currentException;
}
}

View File

@@ -0,0 +1,190 @@
struct Thing {
string s;
long i;
};
interface StringReciever {
void recieveString(
in string arg0
);
void bounce(
in long arg0
);
};
interface TestInterface {
string getFirstAppInList();
void getAppNames(
in ::StringReciever arg0
);
typedef sequence<::Thing> sequence_of_Thing;
::TestInterface::sequence_of_Thing getThings();
void callBounce(
in ::StringReciever arg0,
in long arg1
);
};
interface ISourceTextProvider {
typedef sequence<string> sequence_of_string;
::ISourceTextProvider::sequence_of_string getAllPages();
void refreshAllPages();
boolean hasPage(
in string arg0
);
boolean loadPage(
in string arg0
);
void refreshPage(
in string arg0
);
string getPageText(
in string arg0
);
long getPageStatus(
in string arg0
);
long getPageAlterCount(
in string arg0
);
};
struct IScriptSection {
long base;
long extent;
};
typedef sequence<::IScriptSection> sequence_of_IScriptSection;
struct IScript {
string url;
string funname;
long base;
long extent;
long jsdscript;
::sequence_of_IScriptSection sections;
};
struct IJSPC {
::IScript script;
long offset;
};
struct IJSSourceLocation {
long line;
::IJSPC pc;
};
interface IJSErrorReporter {
long reportError(
in string arg0,
in string arg1,
in long arg2,
in string arg3,
in long arg4
);
};
interface IScriptHook {
void justLoadedScript(
in ::IScript arg0
);
void aboutToUnloadScript(
in ::IScript arg0
);
};
struct IJSStackFrameInfo {
::IJSPC pc;
long jsdframe;
};
typedef sequence<::IJSStackFrameInfo> sequence_of_IJSStackFrameInfo;
struct IJSThreadState {
::sequence_of_IJSStackFrameInfo stack;
long continueState;
string returnValue;
long status;
long jsdthreadstate;
long id;
};
interface IJSExecutionHook {
void aboutToExecute(
in ::IJSThreadState arg0,
in ::IJSPC arg1
);
};
struct IExecResult {
string result;
boolean errorOccured;
string errorMessage;
string errorFilename;
long errorLineNumber;
string errorLineBuffer;
long errorTokenOffset;
};
interface IDebugController {
long getMajorVersion();
long getMinorVersion();
::IJSErrorReporter setErrorReporter(
in ::IJSErrorReporter arg0
);
::IJSErrorReporter getErrorReporter();
::IScriptHook setScriptHook(
in ::IScriptHook arg0
);
::IScriptHook getScriptHook();
::IJSPC getClosestPC(
in ::IScript arg0,
in long arg1
);
::IJSSourceLocation getSourceLocation(
in ::IJSPC arg0
);
::IJSExecutionHook setInterruptHook(
in ::IJSExecutionHook arg0
);
::IJSExecutionHook getInterruptHook();
::IJSExecutionHook setDebugBreakHook(
in ::IJSExecutionHook arg0
);
::IJSExecutionHook getDebugBreakHook();
::IJSExecutionHook setInstructionHook(
in ::IJSExecutionHook arg0,
in ::IJSPC arg1
);
::IJSExecutionHook getInstructionHook(
in ::IJSPC arg0
);
void setThreadContinueState(
in long arg0,
in long arg1
);
void setThreadReturnValue(
in long arg0,
in string arg1
);
void sendInterrupt();
void sendInterruptStepInto(
in long arg0
);
void sendInterruptStepOver(
in long arg0
);
void sendInterruptStepOut(
in long arg0
);
void reinstateStepper(
in long arg0
);
::IExecResult executeScriptInStackFrame(
in long arg0,
in ::IJSStackFrameInfo arg1,
in string arg2,
in string arg3,
in long arg4
);
boolean isRunningHook(
in long arg0
);
boolean isWaitingForResume(
in long arg0
);
void leaveThreadSuspended(
in long arg0
);
void resumeThread(
in long arg0
);
void iterateScripts(
in ::IScriptHook arg0
);
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,777 @@
#ifndef _ifaces_s_hh
#define _ifaces_s_hh
#include "ifaces_c.hh"
/************************************************************************/
/* */
/* This file is automatically generated by ORBeline IDL compiler */
/* Do not modify this file. */
/* */
/* ORBeline (c) is copyrighted by PostModern Computing, Inc. */
/* */
/* The generated code conforms to OMG's IDL C++ mapping as */
/* specified in OMG Document Number: 94-9-14. */
/* */
/************************************************************************/
class _sk_StringReciever : public StringReciever
{
protected:
_sk_StringReciever(const char *object_name = (const char *)NULL);
_sk_StringReciever(const char *service_name, const CORBA::ReferenceData& data);
virtual ~_sk_StringReciever() {}
public:
static const CORBA::TypeInfo _skel_info;
// The following operations need to be implemented by the server.
virtual void recieveString(const char * arg0) = 0;
virtual void bounce(CORBA::Long arg0) = 0;
// Skeleton Operations implemented automatically
static void _recieveString(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _bounce(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
};
template <class T>
class _tie_StringReciever : public StringReciever
{
public:
_tie_StringReciever(T& t, const char *obj_name=(char*)NULL) :
StringReciever(obj_name),
_ref(t) {
_object_name(obj_name);
}
_tie_StringReciever(T& t, const char *service_name,
const CORBA::ReferenceData& id)
:_ref(t) {
_service(service_name, id);
}
~_tie_StringReciever() {}
void recieveString(const char * arg0) {
_ref.recieveString(
arg0);
}
void bounce(CORBA::Long arg0) {
_ref.bounce(
arg0);
}
private:
T& _ref;
};
class _sk_TestInterface : public TestInterface
{
protected:
_sk_TestInterface(const char *object_name = (const char *)NULL);
_sk_TestInterface(const char *service_name, const CORBA::ReferenceData& data);
virtual ~_sk_TestInterface() {}
public:
static const CORBA::TypeInfo _skel_info;
// The following operations need to be implemented by the server.
virtual char * getFirstAppInList() = 0;
virtual void getAppNames(StringReciever_ptr arg0) = 0;
virtual TestInterface::sequence_of_Thing * getThings() = 0;
virtual void callBounce(StringReciever_ptr arg0,
CORBA::Long arg1) = 0;
// Skeleton Operations implemented automatically
static void _getFirstAppInList(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getAppNames(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getThings(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _callBounce(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
};
template <class T>
class _tie_TestInterface : public TestInterface
{
public:
_tie_TestInterface(T& t, const char *obj_name=(char*)NULL) :
TestInterface(obj_name),
_ref(t) {
_object_name(obj_name);
}
_tie_TestInterface(T& t, const char *service_name,
const CORBA::ReferenceData& id)
:_ref(t) {
_service(service_name, id);
}
~_tie_TestInterface() {}
char * getFirstAppInList() {
return _ref.getFirstAppInList();
}
void getAppNames(StringReciever_ptr arg0) {
_ref.getAppNames(
arg0);
}
TestInterface::sequence_of_Thing * getThings() {
return _ref.getThings();
}
void callBounce(StringReciever_ptr arg0,
CORBA::Long arg1) {
_ref.callBounce(
arg0,
arg1);
}
private:
T& _ref;
};
class _sk_ISourceTextProvider : public ISourceTextProvider
{
protected:
_sk_ISourceTextProvider(const char *object_name = (const char *)NULL);
_sk_ISourceTextProvider(const char *service_name, const CORBA::ReferenceData& data);
virtual ~_sk_ISourceTextProvider() {}
public:
static const CORBA::TypeInfo _skel_info;
// The following operations need to be implemented by the server.
virtual ISourceTextProvider::sequence_of_string * getAllPages() = 0;
virtual void refreshAllPages() = 0;
virtual CORBA::Boolean hasPage(const char * arg0) = 0;
virtual CORBA::Boolean loadPage(const char * arg0) = 0;
virtual void refreshPage(const char * arg0) = 0;
virtual char * getPageText(const char * arg0) = 0;
virtual CORBA::Long getPageStatus(const char * arg0) = 0;
virtual CORBA::Long getPageAlterCount(const char * arg0) = 0;
// Skeleton Operations implemented automatically
static void _getAllPages(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _refreshAllPages(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _hasPage(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _loadPage(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _refreshPage(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getPageText(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getPageStatus(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getPageAlterCount(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
};
template <class T>
class _tie_ISourceTextProvider : public ISourceTextProvider
{
public:
_tie_ISourceTextProvider(T& t, const char *obj_name=(char*)NULL) :
ISourceTextProvider(obj_name),
_ref(t) {
_object_name(obj_name);
}
_tie_ISourceTextProvider(T& t, const char *service_name,
const CORBA::ReferenceData& id)
:_ref(t) {
_service(service_name, id);
}
~_tie_ISourceTextProvider() {}
ISourceTextProvider::sequence_of_string * getAllPages() {
return _ref.getAllPages();
}
void refreshAllPages() {
_ref.refreshAllPages();
}
CORBA::Boolean hasPage(const char * arg0) {
return _ref.hasPage(
arg0);
}
CORBA::Boolean loadPage(const char * arg0) {
return _ref.loadPage(
arg0);
}
void refreshPage(const char * arg0) {
_ref.refreshPage(
arg0);
}
char * getPageText(const char * arg0) {
return _ref.getPageText(
arg0);
}
CORBA::Long getPageStatus(const char * arg0) {
return _ref.getPageStatus(
arg0);
}
CORBA::Long getPageAlterCount(const char * arg0) {
return _ref.getPageAlterCount(
arg0);
}
private:
T& _ref;
};
class _sk_IJSErrorReporter : public IJSErrorReporter
{
protected:
_sk_IJSErrorReporter(const char *object_name = (const char *)NULL);
_sk_IJSErrorReporter(const char *service_name, const CORBA::ReferenceData& data);
virtual ~_sk_IJSErrorReporter() {}
public:
static const CORBA::TypeInfo _skel_info;
// The following operations need to be implemented by the server.
virtual CORBA::Long reportError(const char * arg0,
const char * arg1,
CORBA::Long arg2,
const char * arg3,
CORBA::Long arg4) = 0;
// Skeleton Operations implemented automatically
static void _reportError(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
};
template <class T>
class _tie_IJSErrorReporter : public IJSErrorReporter
{
public:
_tie_IJSErrorReporter(T& t, const char *obj_name=(char*)NULL) :
IJSErrorReporter(obj_name),
_ref(t) {
_object_name(obj_name);
}
_tie_IJSErrorReporter(T& t, const char *service_name,
const CORBA::ReferenceData& id)
:_ref(t) {
_service(service_name, id);
}
~_tie_IJSErrorReporter() {}
CORBA::Long reportError(const char * arg0,
const char * arg1,
CORBA::Long arg2,
const char * arg3,
CORBA::Long arg4) {
return _ref.reportError(
arg0,
arg1,
arg2,
arg3,
arg4);
}
private:
T& _ref;
};
class _sk_IScriptHook : public IScriptHook
{
protected:
_sk_IScriptHook(const char *object_name = (const char *)NULL);
_sk_IScriptHook(const char *service_name, const CORBA::ReferenceData& data);
virtual ~_sk_IScriptHook() {}
public:
static const CORBA::TypeInfo _skel_info;
// The following operations need to be implemented by the server.
virtual void justLoadedScript(const IScript& arg0) = 0;
virtual void aboutToUnloadScript(const IScript& arg0) = 0;
// Skeleton Operations implemented automatically
static void _justLoadedScript(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _aboutToUnloadScript(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
};
template <class T>
class _tie_IScriptHook : public IScriptHook
{
public:
_tie_IScriptHook(T& t, const char *obj_name=(char*)NULL) :
IScriptHook(obj_name),
_ref(t) {
_object_name(obj_name);
}
_tie_IScriptHook(T& t, const char *service_name,
const CORBA::ReferenceData& id)
:_ref(t) {
_service(service_name, id);
}
~_tie_IScriptHook() {}
void justLoadedScript(const IScript& arg0) {
_ref.justLoadedScript(
arg0);
}
void aboutToUnloadScript(const IScript& arg0) {
_ref.aboutToUnloadScript(
arg0);
}
private:
T& _ref;
};
class _sk_IJSExecutionHook : public IJSExecutionHook
{
protected:
_sk_IJSExecutionHook(const char *object_name = (const char *)NULL);
_sk_IJSExecutionHook(const char *service_name, const CORBA::ReferenceData& data);
virtual ~_sk_IJSExecutionHook() {}
public:
static const CORBA::TypeInfo _skel_info;
// The following operations need to be implemented by the server.
virtual void aboutToExecute(const IJSThreadState& arg0,
const IJSPC& arg1) = 0;
// Skeleton Operations implemented automatically
static void _aboutToExecute(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
};
template <class T>
class _tie_IJSExecutionHook : public IJSExecutionHook
{
public:
_tie_IJSExecutionHook(T& t, const char *obj_name=(char*)NULL) :
IJSExecutionHook(obj_name),
_ref(t) {
_object_name(obj_name);
}
_tie_IJSExecutionHook(T& t, const char *service_name,
const CORBA::ReferenceData& id)
:_ref(t) {
_service(service_name, id);
}
~_tie_IJSExecutionHook() {}
void aboutToExecute(const IJSThreadState& arg0,
const IJSPC& arg1) {
_ref.aboutToExecute(
arg0,
arg1);
}
private:
T& _ref;
};
class _sk_IDebugController : public IDebugController
{
protected:
_sk_IDebugController(const char *object_name = (const char *)NULL);
_sk_IDebugController(const char *service_name, const CORBA::ReferenceData& data);
virtual ~_sk_IDebugController() {}
public:
static const CORBA::TypeInfo _skel_info;
// The following operations need to be implemented by the server.
virtual CORBA::Long getMajorVersion() = 0;
virtual CORBA::Long getMinorVersion() = 0;
virtual IJSErrorReporter_ptr setErrorReporter(IJSErrorReporter_ptr arg0) = 0;
virtual IJSErrorReporter_ptr getErrorReporter() = 0;
virtual IScriptHook_ptr setScriptHook(IScriptHook_ptr arg0) = 0;
virtual IScriptHook_ptr getScriptHook() = 0;
virtual IJSPC * getClosestPC(const IScript& arg0,
CORBA::Long arg1) = 0;
virtual IJSSourceLocation * getSourceLocation(const IJSPC& arg0) = 0;
virtual IJSExecutionHook_ptr setInterruptHook(IJSExecutionHook_ptr arg0) = 0;
virtual IJSExecutionHook_ptr getInterruptHook() = 0;
virtual IJSExecutionHook_ptr setDebugBreakHook(IJSExecutionHook_ptr arg0) = 0;
virtual IJSExecutionHook_ptr getDebugBreakHook() = 0;
virtual IJSExecutionHook_ptr setInstructionHook(IJSExecutionHook_ptr arg0,
const IJSPC& arg1) = 0;
virtual IJSExecutionHook_ptr getInstructionHook(const IJSPC& arg0) = 0;
virtual void setThreadContinueState(CORBA::Long arg0,
CORBA::Long arg1) = 0;
virtual void setThreadReturnValue(CORBA::Long arg0,
const char * arg1) = 0;
virtual void sendInterrupt() = 0;
virtual void sendInterruptStepInto(CORBA::Long arg0) = 0;
virtual void sendInterruptStepOver(CORBA::Long arg0) = 0;
virtual void sendInterruptStepOut(CORBA::Long arg0) = 0;
virtual void reinstateStepper(CORBA::Long arg0) = 0;
virtual IExecResult * executeScriptInStackFrame(CORBA::Long arg0,
const IJSStackFrameInfo& arg1,
const char * arg2,
const char * arg3,
CORBA::Long arg4) = 0;
virtual CORBA::Boolean isRunningHook(CORBA::Long arg0) = 0;
virtual CORBA::Boolean isWaitingForResume(CORBA::Long arg0) = 0;
virtual void leaveThreadSuspended(CORBA::Long arg0) = 0;
virtual void resumeThread(CORBA::Long arg0) = 0;
virtual void iterateScripts(IScriptHook_ptr arg0) = 0;
// Skeleton Operations implemented automatically
static void _getMajorVersion(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getMinorVersion(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _setErrorReporter(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getErrorReporter(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _setScriptHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getScriptHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getClosestPC(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getSourceLocation(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _setInterruptHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getInterruptHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _setDebugBreakHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getDebugBreakHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _setInstructionHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _getInstructionHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _setThreadContinueState(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _setThreadReturnValue(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _sendInterrupt(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _sendInterruptStepInto(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _sendInterruptStepOver(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _sendInterruptStepOut(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _reinstateStepper(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _executeScriptInStackFrame(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _isRunningHook(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _isWaitingForResume(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _leaveThreadSuspended(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _resumeThread(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
static void _iterateScripts(void *obj,
CORBA::MarshalStream &strm,
CORBA::Principal_ptr principal,
const char *oper,
void *priv_data);
};
template <class T>
class _tie_IDebugController : public IDebugController
{
public:
_tie_IDebugController(T& t, const char *obj_name=(char*)NULL) :
IDebugController(obj_name),
_ref(t) {
_object_name(obj_name);
}
_tie_IDebugController(T& t, const char *service_name,
const CORBA::ReferenceData& id)
:_ref(t) {
_service(service_name, id);
}
~_tie_IDebugController() {}
CORBA::Long getMajorVersion() {
return _ref.getMajorVersion();
}
CORBA::Long getMinorVersion() {
return _ref.getMinorVersion();
}
IJSErrorReporter_ptr setErrorReporter(IJSErrorReporter_ptr arg0) {
return _ref.setErrorReporter(
arg0);
}
IJSErrorReporter_ptr getErrorReporter() {
return _ref.getErrorReporter();
}
IScriptHook_ptr setScriptHook(IScriptHook_ptr arg0) {
return _ref.setScriptHook(
arg0);
}
IScriptHook_ptr getScriptHook() {
return _ref.getScriptHook();
}
IJSPC * getClosestPC(const IScript& arg0,
CORBA::Long arg1) {
return _ref.getClosestPC(
arg0,
arg1);
}
IJSSourceLocation * getSourceLocation(const IJSPC& arg0) {
return _ref.getSourceLocation(
arg0);
}
IJSExecutionHook_ptr setInterruptHook(IJSExecutionHook_ptr arg0) {
return _ref.setInterruptHook(
arg0);
}
IJSExecutionHook_ptr getInterruptHook() {
return _ref.getInterruptHook();
}
IJSExecutionHook_ptr setDebugBreakHook(IJSExecutionHook_ptr arg0) {
return _ref.setDebugBreakHook(
arg0);
}
IJSExecutionHook_ptr getDebugBreakHook() {
return _ref.getDebugBreakHook();
}
IJSExecutionHook_ptr setInstructionHook(IJSExecutionHook_ptr arg0,
const IJSPC& arg1) {
return _ref.setInstructionHook(
arg0,
arg1);
}
IJSExecutionHook_ptr getInstructionHook(const IJSPC& arg0) {
return _ref.getInstructionHook(
arg0);
}
void setThreadContinueState(CORBA::Long arg0,
CORBA::Long arg1) {
_ref.setThreadContinueState(
arg0,
arg1);
}
void setThreadReturnValue(CORBA::Long arg0,
const char * arg1) {
_ref.setThreadReturnValue(
arg0,
arg1);
}
void sendInterrupt() {
_ref.sendInterrupt();
}
void sendInterruptStepInto(CORBA::Long arg0) {
_ref.sendInterruptStepInto(
arg0);
}
void sendInterruptStepOver(CORBA::Long arg0) {
_ref.sendInterruptStepOver(
arg0);
}
void sendInterruptStepOut(CORBA::Long arg0) {
_ref.sendInterruptStepOut(
arg0);
}
void reinstateStepper(CORBA::Long arg0) {
_ref.reinstateStepper(
arg0);
}
IExecResult * executeScriptInStackFrame(CORBA::Long arg0,
const IJSStackFrameInfo& arg1,
const char * arg2,
const char * arg3,
CORBA::Long arg4) {
return _ref.executeScriptInStackFrame(
arg0,
arg1,
arg2,
arg3,
arg4);
}
CORBA::Boolean isRunningHook(CORBA::Long arg0) {
return _ref.isRunningHook(
arg0);
}
CORBA::Boolean isWaitingForResume(CORBA::Long arg0) {
return _ref.isWaitingForResume(
arg0);
}
void leaveThreadSuspended(CORBA::Long arg0) {
_ref.leaveThreadSuspended(
arg0);
}
void resumeThread(CORBA::Long arg0) {
_ref.resumeThread(
arg0);
}
void iterateScripts(IScriptHook_ptr arg0) {
_ref.iterateScripts(
arg0);
}
private:
T& _ref;
};
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,68 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public interface IDebugController extends org.omg.CORBA.Object
{
public int getMajorVersion();
public int getMinorVersion();
public IJSErrorReporter setErrorReporter(IJSErrorReporter er);
public IJSErrorReporter getErrorReporter();
public IScriptHook setScriptHook(IScriptHook h);
public IScriptHook getScriptHook();
public IJSPC getClosestPC(IScript script, int line);
public IJSSourceLocation getSourceLocation(IJSPC pc);
public IJSExecutionHook setInterruptHook(IJSExecutionHook hook);
public IJSExecutionHook getInterruptHook();
public IJSExecutionHook setDebugBreakHook(IJSExecutionHook hook);
public IJSExecutionHook getDebugBreakHook();
public IJSExecutionHook setInstructionHook(IJSExecutionHook hook, IJSPC pc);
public IJSExecutionHook getInstructionHook(IJSPC pc);
public void setThreadContinueState(int threadID, int state);
public void setThreadReturnValue(int threadID, String value);
public void sendInterrupt();
public void sendInterruptStepInto(int threadID);
public void sendInterruptStepOver(int threadID);
public void sendInterruptStepOut(int threadID);
public void reinstateStepper(int threadID);
public IExecResult executeScriptInStackFrame(int threadID,
IJSStackFrameInfo frame,
String text,
String filename,
int lineno);
public boolean isRunningHook(int threadID);
public boolean isWaitingForResume(int threadID);
public void leaveThreadSuspended(int threadID);
public void resumeThread(int threadID);
public void iterateScripts(IScriptHook h);
}

View File

@@ -0,0 +1,29 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class IExecResult
{
public String result;
public boolean errorOccured;
public String errorMessage;
public String errorFilename;
public int errorLineNumber;
public String errorLineBuffer;
public int errorTokenOffset;
}

View File

@@ -0,0 +1,32 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public interface IJSErrorReporter extends org.omg.CORBA.Object
{
/* keep these in sync with the numbers in jsdebug.h */
public static final int PASS_ALONG = 0;
public static final int RETURN = 1;
public static final int DEBUG = 2;
public int reportError( String msg,
String filename,
int lineno,
String linebuf,
int tokenOffset );
}

View File

@@ -0,0 +1,22 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public interface IJSExecutionHook extends org.omg.CORBA.Object
{
public void aboutToExecute(IJSThreadState debug, IJSPC pc);
}

View File

@@ -0,0 +1,24 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class IJSPC
{
public IScript script;
public int offset;
}

View File

@@ -0,0 +1,23 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class IJSSourceLocation
{
public int line;
public IJSPC pc;
}

View File

@@ -0,0 +1,23 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class IJSStackFrameInfo
{
public IJSPC pc;
public int jsdframe;
}

View File

@@ -0,0 +1,65 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class IJSThreadState
{
/**
* partial list of thread states from sun.debug.ThreadInfo.
* XXX some of these don't apply.
*/
public final static int THR_STATUS_UNKNOWN = 0x01;
public final static int THR_STATUS_ZOMBIE = 0x02;
public final static int THR_STATUS_RUNNING = 0x03;
public final static int THR_STATUS_SLEEPING = 0x04;
public final static int THR_STATUS_MONWAIT = 0x05;
public final static int THR_STATUS_CONDWAIT = 0x06;
public final static int THR_STATUS_SUSPENDED = 0x07;
public final static int THR_STATUS_BREAK = 0x08;
public final static int DEBUG_STATE_DEAD = 0x01;
/**
* if the continueState is RUN, the thread will
* proceed to the next program counter value when it resumes.
*/
public final static int DEBUG_STATE_RUN = 0x02;
/**
* if the continueState is RETURN, the thread will
* return from the current method with the value in getReturnValue()
* when it resumes.
*/
public final static int DEBUG_STATE_RETURN = 0x03;
/**
* if the continueState is THROW, the thread will
* throw an exception (accessible with getException()) when it
* resumes.
*/
public final static int DEBUG_STATE_THROW = 0x04;
public IJSStackFrameInfo[] stack;
public int continueState;
public String returnValue;
public int status;
public int jsdthreadstate;
public int id; // used for referencing this object
}

View File

@@ -0,0 +1,28 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class IScript
{
public String url;
public String funname;
public int base;
public int extent;
public int jsdscript;
public IScriptSection[] sections;
}

View File

@@ -0,0 +1,24 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public interface IScriptHook extends org.omg.CORBA.Object
{
public void justLoadedScript(IScript script);
public void aboutToUnloadScript(IScript script);
}

View File

@@ -0,0 +1,23 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class IScriptSection
{
public int base;
public int extent;
}

View File

@@ -0,0 +1,37 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public interface ISourceTextProvider extends org.omg.CORBA.Object
{
/* these coorespond to jsdebug.h values - change in both places if anywhere */
public static final int INITED = 0;
public static final int FULL = 1;
public static final int PARTIAL = 2;
public static final int ABORTED = 3;
public static final int FAILED = 4;
public static final int CLEARED = 5;
public String[] getAllPages();
public void refreshAllPages();
public boolean hasPage(String url);
public boolean loadPage(String url);
public void refreshPage(String url);
public String getPageText(String url);
public int getPageStatus(String url);
public int getPageAlterCount(String url);
}

View File

@@ -0,0 +1,25 @@
/* jband - 09/09/97 - readme for the dreaded js/jsd/corba system */
This stuff in js/jsd/corba/src is used to generate corba source in IDL, Java,
and C++. The raw source is all Java. The 'makefile' is mk.bat which is currently
expected to run only on jband's NT box. All of the important output of this
process should be checked in to cvs. mk.bat is only needed to regenerate new
sources as the interfaces change. Those new sources should then be committed to
cvs.
The main scheme here is to use the Java code in js/jsd/corba/src as idl.
mk.bat uses java2idl, orbeline, and idl2java to generate IDL and stubs and
skeletons in C++ and Java. There are a few hacks to deal with limitations of
these tools.
The C++ output is copied to js/jsd/corba.
The Java output is copied to
js/jsdj/classes/com/netscape/jsdebugging/remote/corba.
Note that the files:
StringReciever.java
TestInterface.java
Thing.java
are used only in test programs and are not part of the product

View File

@@ -0,0 +1,24 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public interface StringReciever extends org.omg.CORBA.Object
{
public void recieveString(String s);
public void bounce(int count);
}

View File

@@ -0,0 +1,26 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public interface TestInterface extends org.omg.CORBA.Object
{
public String getFirstAppInList();
public void getAppNames( StringReciever sr );
public Thing[] getThings();
public void callBounce( StringReciever sr, int count );
}

View File

@@ -0,0 +1,24 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
public final class Thing
{
public String s;
public int i;
}

BIN
mozilla/js/jsd/corba/src/WAIT.COM Executable file

Binary file not shown.

View File

@@ -0,0 +1,31 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
//
// This class only exist to force a forward declaration in the outputed
// idl file.
//
// It should be handed to java2idl after IScriptSection.class but before
// IScript.class
//
public final class bogus0
{
public IScriptSection[] bogus;
}

View File

@@ -0,0 +1,31 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
//
// This class only exist to force a forward declaration in the outputed
// idl file.
//
// It should be handed to java2idl after IJSStackFrameInfo.class but before
// IJSThreadState.class
//
public final class bogus1
{
public IJSStackFrameInfo[] bogus;
}

View File

@@ -0,0 +1,43 @@
# -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# see usage...
#
BEGIN {
skiplines_left = 0
if( 0 == lines || 0 == pat )
{
# show usage...
print "\n"
print "strips some lines when first line contains pattern\n"
print "\tusage -v pat=\"pattern\" -v lines=3"
}
}
{
if( skiplines_left )
skiplines_left--;
else
{
if( match($0, pat) != 0 )
skiplines_left = lines-1;
else
print $0;
}
}

143
mozilla/js/jsd/corba/src/mk.bat Executable file
View File

@@ -0,0 +1,143 @@
@echo off
REM
REM This needs to be run from the src dir. It generates sibling dirs and their
REM contents.
REM
set base_package=com.netscape.jsdebugging.remote.corba
set base_packslash=com\netscape\jsdebugging\remote\corba
set jsdj_classes_dir=..\..\..\jsdj\classes
set DELAY=6
rem -------------------------------------------------------------------------
rem -- show settings
echo.
echo commandline: %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
echo.
echo ES3_ROOT = %ES3_ROOT%
echo base_package = %base_package% // set in this file
echo jsdj_classes_dir = %jsdj_classes_dir% // set in this file
echo.
rem -------------------------------------------------------------------------
rem -- check for environment settings
if "%ES3_ROOT%" == "" goto usage
set jc=sj.exe
set cp=.;%ES3_ROOT%\wai\java\nisb.zip;%ES3_ROOT%\wai\java\WAI.zip;%ES3_ROOT%\plugins\Java\classes\serv3_0.zip
set old_classpath=%CLASSPATH%
set CLASSPATH=%CLASSPATH%;%ES3_ROOT%\wai\java\nisb.zip;%ES3_ROOT%\wai\java\WAI.zip
echo.
echo creating output dirs
if not exist ..\class\NUL mkdir ..\class
if not exist ..\idl\NUL mkdir ..\idl
if not exist ..\java\NUL mkdir ..\java
if not exist ..\cpp\NUL mkdir ..\cpp
echo.
echo compiling raw Java interfaces
%jc% -classpath %cp% *.java -d ..\class
..\src\wait %DELAY%
cd ..\class
echo.
echo.
echo generating idl
echo.
REM
REM THESE ARE HAND ORDERED TO DEAL WITH DEPENDENCIES
REM
%ES3_ROOT%\wai\bin\java2idl Thing.class StringReciever.class TestInterface.class ISourceTextProvider.class IScriptSection.class bogus0.class IScript.class IJSPC.class IJSSourceLocation.class IJSErrorReporter.class IScriptHook.class IJSStackFrameInfo.class bogus1.class IJSThreadState.class IJSExecutionHook.class IExecResult.class IDebugController.class > ..\idl\ifaces.idl
..\src\wait %DELAY%
cd ..\idl
echo.
echo.
echo stripping lines from idl which were added to correctly order declarations
echo.
copy ifaces.idl ifaces_original.idl
REM
REM since we currenly have 2 of these, we can avoid the copy
REM
gawk -v pat="struct bogus0" -v lines=3 -f ..\src\cutlines.awk < ifaces.idl > temp.idl
gawk -v pat="struct bogus1" -v lines=3 -f ..\src\cutlines.awk < temp.idl > ifaces.idl
REM copy temp.idl ifaces.idl
REM ..\src\wait %DELAY%
cd ..\cpp
echo.
echo.
echo generating cpp
echo.
%ES3_ROOT%\wai\bin\orbeline ..\idl\ifaces.idl
..\src\wait %DELAY%
cd ..\java
echo.
echo.
echo generating java
echo.
%ES3_ROOT%\wai\bin\idl2java ..\idl\ifaces.idl -package %base_package% -no_examples -no_tie -no_comments
..\src\wait %DELAY%
cd ..\src
echo.
echo. copying generated files
echo.
REM
REM preserve generated java, but put ours in the outdir
REM
xcopy /Q ..\java\%base_packslash%\*.java ..\java\%base_packslash%\_unused\*.jav
REM
REM *****CUSTOMIZE HERE AS NEW INTERFACES WITH static ints ARE ADDED*****
REM
copy ..\src\package_header.h+..\src\ISourceTextProvider.java ..\java\%base_packslash%\ISourceTextProvider.java
copy ..\src\package_header.h+..\src\IJSErrorReporter.java ..\java\%base_packslash%\IJSErrorReporter.java
copy ..\src\package_header.h+..\src\IJSThreadState.java ..\java\%base_packslash%\IJSThreadState.java
copy ..\src\package_header.h+..\src\IDebugController.java ..\java\%base_packslash%\IDebugController.java
REM
REM
xcopy /Q ..\cpp\ifaces_c.hh ..\
xcopy /Q ..\cpp\ifaces_s.hh ..\
xcopy /Q ..\cpp\ifaces_c.cc ..\ifaces_c.cpp
xcopy /Q ..\cpp\ifaces_s.cc ..\ifaces_s.cpp
if "%jsdj_classes_dir%" == "" goto done
if not exist %jsdj_classes_dir%\NUL goto done
xcopy /Q /S ..\java\*.java %jsdj_classes_dir%
goto done
:usage
echo.
echo usage:
echo mk
echo.
echo See "readme.txt" for details...
echo.
echo Rules:
echo.
echo These must be defined in environment:
echo ES3_ROOT // location of Enterprise Server (e.g. e:\Netscape\SuiteSpot)
echo.
:done
..\src\wait %DELAY%
cd ..\src
set base_package=
set base_packslash=
set jsdj_classes_dir=
set cp=
set jc=
set DELAY=
set CLASSPATH=%old_classpath%
set old_classpath=
echo.
echo.
echo done
echo.

View File

@@ -0,0 +1,3 @@
package com.netscape.jsdebugging.remote.corba;

View File

@@ -0,0 +1,5 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
jsdebug.h

View File

@@ -0,0 +1,35 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* This supplies non-functional stubs for a couple of JNI functions we need
* in order to link LiveConnect
*/
#include "jni.h"
jint JNICALL JNI_GetDefaultJavaVMInitArgs(void * ignored)
{
return 0;
}
jint JNICALL JNI_CreateJavaVM(JavaVM ** vm, JNIEnv ** env, void * ignored)
{
return 0;
}

View File

@@ -0,0 +1,33 @@
JSDJNI = .
#CLASS_DIR_BASE = $(JSDJNI)\..\..\..\jsdj\dist\classes
# until jsdj moves to mozilla...
CLASS_DIR_BASE = $(JSDJNI)\..\..\..\..\..\ns\js\jsdj\dist\classes
GEN = $(JSDJNI)\_jni
HEADER_FILE = $(GEN)\jsdjnih.h
PACKAGE_SLASH = netscape\jsdebug
PACKAGE_DOT = netscape.jsdebug
STD_CLASSPATH = -classpath $(CLASS_DIR_BASE);$(CLASSPATH)
CLASSES_WITH_NATIVES = \
$(PACKAGE_DOT).DebugController \
$(PACKAGE_DOT).JSPC \
$(PACKAGE_DOT).JSSourceTextProvider \
$(PACKAGE_DOT).JSStackFrameInfo \
$(PACKAGE_DOT).JSThreadState \
$(PACKAGE_DOT).Script \
$(PACKAGE_DOT).SourceTextProvider \
$(PACKAGE_DOT).ThreadStateBase \
$(PACKAGE_DOT).Value
all: $(GEN)
@echo generating JNI headers
@javah -jni -o "$(HEADER_FILE)" $(STD_CLASSPATH) $(CLASSES_WITH_NATIVES)
$(GEN) :
@mkdir $(GEN)
clean:
@if exist $(HEADER_FILE) @del $(HEADER_FILE) > NUL

View File

@@ -0,0 +1,134 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Sun Microsystems, Inc.
* Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*
* Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/
/*
* Portable JRE support functions - pared this down to minimal set I need
*/
#include <string.h>
#include <stdlib.h>
#include <jni.h>
#include "jre.h"
/*
* Exits the runtime with the specified error message.
*/
void
JRE_FatalError(JNIEnv *env, const char *msg)
{
if ((*env)->ExceptionOccurred(env)) {
(*env)->ExceptionDescribe(env);
}
(*env)->FatalError(env, msg);
}
/*
* Parses a runtime version string. Returns 0 if the successful, otherwise
* returns -1 if the format of the version string was invalid.
*/
jint
JRE_ParseVersion(const char *ver, char **majorp, char **minorp, char **microp)
{
int n1 = 0, n2 = 0, n3 = 0;
sscanf(ver, "%*[0-9]%n.%*[0-9]%n.%*[0-9a-zA-Z]%n", &n1, &n2, &n3);
if (n1 == 0 || n2 == 0) {
return -1;
}
if (n3 != 0) {
if (n3 != (int)strlen(ver)) {
return -1;
}
} else if (n2 != (int)strlen(ver)) {
return -1;
}
*majorp = JRE_Malloc(n1 + 1);
strncpy(*majorp, ver, n1);
(*majorp)[n1] = 0;
*minorp = JRE_Malloc(n2 - n1);
strncpy(*minorp, ver + n1 + 1, n2 - n1 - 1);
(*minorp)[n2 - n1 - 1] = 0;
if (n3 != 0) {
*microp = JRE_Malloc(n3 - n2);
strncpy(*microp, ver + n2 + 1, n3 - n2 - 1);
(*microp)[n3 - n2 - 1] = 0;
}
return 0;
}
/*
* Creates a version number string from the specified major, minor, and
* micro version numbers.
*/
char *
JRE_MakeVersion(const char *major, const char *minor, const char *micro)
{
char *ver = 0;
if (major != 0 && minor != 0) {
int len = strlen(major) + strlen(minor);
if (micro != 0) {
ver = JRE_Malloc(len + strlen(micro) + 3);
sprintf(ver, "%s.%s.%s", major, minor, micro);
} else {
ver = JRE_Malloc(len + 2);
sprintf(ver, "%s.%s", major, minor);
}
}
return ver;
}
/*
* Allocate memory or die.
*/
void *
JRE_Malloc(size_t size)
{
void *p = malloc(size);
if (p == 0) {
perror("malloc");
exit(1);
}
return p;
}

View File

@@ -0,0 +1,85 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Sun Microsystems, Inc.
* Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*
* Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/
/*
* Portable JRE support functions - pared this down to minimal set I need
*/
#include <stdio.h>
#include <stdlib.h>
#include <jni.h>
#include "jre_md.h"
/*
* Java runtime settings.
*/
typedef struct JRESettings {
char *javaHome; /* Java home directory */
char *runtimeLib; /* Runtime shared library or DLL */
char *classPath; /* Default class path */
char *compiler; /* Just-in-time (JIT) compiler */
char *majorVersion; /* Major version of runtime */
char *minorVersion; /* Minor version of runtime */
char *microVersion; /* Micro version of runtime */
} JRESettings;
/*
* JRE functions.
*/
void *JRE_LoadLibrary(const char *path);
void JRE_UnloadLibrary(void *handle);
jint JRE_GetDefaultJavaVMInitArgs(void *handle, void *vmargsp);
jint JRE_CreateJavaVM(void *handle, JavaVM **vmp, JNIEnv **envp,
void *vmargsp);
jint JRE_GetCurrentSettings(JRESettings *set);
jint JRE_GetSettings(JRESettings *set, const char *ver);
jint JRE_GetDefaultSettings(JRESettings *set);
jint JRE_ParseVersion(const char *version,
char **majorp, char **minorp, char **microp);
char *JRE_MakeVersion(const char *major, const char *minor, const char *micro);
void *JRE_Malloc(size_t size);
void JRE_FatalError(JNIEnv *env, const char *msg);
char *JRE_GetDefaultRuntimeLib(const char *dir);
char *JRE_GetDefaultClassPath(const char *dir);

View File

@@ -0,0 +1,290 @@
/*
* @(#)jre_md.c 1.6 97/05/15 David Connelly
*
* Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/
/*
* Win32 specific JRE support functions
*/
#include <windows.h>
#include <stdlib.h>
#include <jni.h>
#include "jre.h"
#define JRE_KEY "Software\\JavaSoft\\Java Runtime Environment"
#define JDK_KEY "Software\\JavaSoft\\Java Development Kit"
#define RUNTIME_LIB "javai.dll"
/* From jre_main.c */
extern jboolean debug;
/* Forward Declarations */
jint LoadSettings(JRESettings *set, HKEY key);
jint GetSettings(JRESettings *set, const char *version, const char *keyname);
char *GetStringValue(HKEY key, const char *name);
/*
* Retrieve settings from registry for current runtime version. Returns
* 0 if successful otherwise returns -1 if no installed runtime was found
* or the registry data was invalid.
*/
jint
JRE_GetCurrentSettings(JRESettings *set)
{
jint r = -1;
HKEY key;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, JRE_KEY, 0, KEY_READ, &key) == 0) {
char *ver = GetStringValue(key, "CurrentVersion");
if (ver != 0) {
r = JRE_GetSettings(set, ver);
}
free(ver);
RegCloseKey(key);
}
return r;
}
/*
* Retrieves settings from registry for specified runtime version.
* Searches for either installed JRE and JDK runtimes. Returns 0 if
* successful otherwise returns -1 if requested version of runtime
* could not be found.
*/
jint
JRE_GetSettings(JRESettings *set, const char *version)
{
if (GetSettings(set, version, JRE_KEY) != 0) {
return GetSettings(set, version, JDK_KEY);
}
return 0;
}
jint
GetSettings(JRESettings *set, const char *version, const char *keyname)
{
HKEY key;
int r = -1;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyname, 0, KEY_READ, &key) == 0) {
char *major, *minor, *micro = 0;
if (JRE_ParseVersion(version, &major, &minor, &micro) == 0) {
HKEY subkey;
char *ver = JRE_MakeVersion(major, minor, 0);
set->majorVersion = major;
set->minorVersion = minor;
if (RegOpenKeyEx(key, ver, 0, KEY_READ, &subkey) == 0) {
if ((r = LoadSettings(set, subkey)) == 0) {
if (micro != 0) {
if (set->microVersion == 0 ||
strcmp(micro, set->microVersion) != 0) {
r = -1;
}
}
}
RegCloseKey(subkey);
}
free(ver);
}
RegCloseKey(key);
}
return r;
}
/*
* Load runtime settings from specified registry key. Returns 0 if
* successful otherwise -1 if the registry data was invalid.
*/
static jint
LoadSettings(JRESettings *set, HKEY key)
{
/* Full path name of JRE home directory (required) */
set->javaHome = GetStringValue(key, "JavaHome");
if (set->javaHome == 0) {
return -1;
}
/* Full path name of JRE runtime DLL */
set->runtimeLib = GetStringValue(key, "RuntimeLib");
if (set->runtimeLib == 0) {
set->runtimeLib = JRE_GetDefaultRuntimeLib(set->javaHome);
}
/* Class path setting to override default */
set->classPath = GetStringValue(key, "ClassPath");
if (set->classPath == 0) {
set->classPath = JRE_GetDefaultClassPath(set->javaHome);
}
/* Optional JIT compiler library name */
set->compiler = GetStringValue(key, "Compiler");
/* Release micro-version */
set->microVersion = GetStringValue(key, "MicroVersion");
return 0;
}
/*
* Returns string data for the specified registry value name, or
* NULL if not found.
*/
static char *
GetStringValue(HKEY key, const char *name)
{
DWORD type, size;
char *value = 0;
if (RegQueryValueEx(key, name, 0, &type, 0, &size) == 0 &&
type == REG_SZ ) {
value = JRE_Malloc(size);
if (RegQueryValueEx(key, name, 0, 0, value, &size) != 0) {
free(value);
value = 0;
}
}
return value;
}
/*
* Returns default runtime settings based on location of this program.
* Makes best attempt at determining location of runtime. Returns 0
* if successful or -1 if a runtime could not be found.
*/
jint
JRE_GetDefaultSettings(JRESettings *set)
{
char buf[MAX_PATH], *bp;
int n;
// Try to obtain default value for Java home directory based on
// location of this executable.
if ((n = GetModuleFileName(0, buf, MAX_PATH)) == 0) {
return -1;
}
bp = buf + n;
while (*--bp != '\\') ;
bp -= 4;
if (bp < buf || strnicmp(bp, "\\bin", 4) != 0) {
return -1;
}
*bp = '\0';
set->javaHome = strdup(buf);
// Get default runtime library
set->runtimeLib = JRE_GetDefaultRuntimeLib(set->javaHome);
// Get default class path
set->classPath = JRE_GetDefaultClassPath(set->javaHome);
// Reset other fields since these are unknown
set->compiler = 0;
set->majorVersion = 0;
set->minorVersion = 0;
set->microVersion = 0;
return 0;
}
/*
* Return default runtime library for specified Java home directory.
*/
char *
JRE_GetDefaultRuntimeLib(const char *dir)
{
char *cp = JRE_Malloc(strlen(dir) + sizeof(RUNTIME_LIB) + 8);
sprintf(cp, "%s\\bin\\" RUNTIME_LIB, dir);
return cp;
}
/*
* Return default class path for specified Java home directory.
*/
char *
JRE_GetDefaultClassPath(const char *dir)
{
char *cp = JRE_Malloc(strlen(dir) * 4 + 64);
sprintf(cp, "%s\\lib\\rt.jar;%s\\lib\\i18n.jar;%s\\lib\\classes.zip;"
"%s\\classes", dir, dir, dir, dir);
return cp;
}
/*
* Loads the runtime library corresponding to 'libname' and returns
* an opaque handle to the library.
*/
void *
JRE_LoadLibrary(const char *path)
{
return (void *)LoadLibrary(path);
}
/*
* Unloads the runtime library associated with handle.
*/
void
JRE_UnloadLibrary(void *handle)
{
FreeLibrary(handle);
}
/*
* Loads default VM args for the specified runtime library handle.
*/
jint
JRE_GetDefaultJavaVMInitArgs(void *handle, void *vmargs)
{
FARPROC proc = GetProcAddress(handle, "JNI_GetDefaultJavaVMInitArgs");
return proc != 0 ? ((*proc)(vmargs), 0) : -1;
}
/*
* Creates a Java VM for the specified runtime library handle.
*/
jint
JRE_CreateJavaVM(void *handle, JavaVM **vmp, JNIEnv **envp, void *vmargs)
{
FARPROC proc = GetProcAddress(handle, "JNI_CreateJavaVM");
return proc != 0 ? (*proc)(vmp, envp, vmargs) : -1;
}
/*
* Entry point for JREW (Windows-only) version of the runtime loader.
* This entry point is called when the '-subsystem:windows' linker
* option is used, and will cause the resulting executable to run
* detached from the console.
*/
/**
* int WINAPI
* WinMain(HINSTANCE inst, HINSTANCE prevInst, LPSTR cmdLine, int cmdShow)
* {
* __declspec(dllimport) char **__initenv;
*
* __initenv = _environ;
* exit(main(__argc, __argv));
* }
*/

View File

@@ -0,0 +1,36 @@
/*
* @(#)jre_md.h 1.1 97/05/19 David Connelly
*
* Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/
/*
* Win32 specific JRE support definitions
*/
#define FILE_SEPARATOR '\\'
#define PATH_SEPARATOR ';'

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,349 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Sun Microsystems, Inc.
* Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*
* Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/
/*
* Code to start a Java VM (*some* code from the JRE)
*/
#include "jsdj.h"
/***************************************************************************/
#ifdef JSD_STANDALONE_JAVA_VM
#include "jre.h"
static char* more_classpath[] =
{
{"..\\..\\jsdj\\dist\\classes"},
{"..\\..\\jsdj\\dist\\classes\\ifc11.jar"},
/*
* {"..\\..\\..\\jsdj\\dist\\classes"},
* {"..\\..\\..\\jsdj\\dist\\classes\\ifc12.jar"},
*/
/*
* {"..\\..\\samples\\jslogger"},
* {"classes"},
* {"ifc12.jar"},
* {"jsd10.jar"},
* {"jsdeb15.jar"}
*/
};
#define MORE_CLASSPATH_COUNT (sizeof(more_classpath)/sizeof(more_classpath[0]))
/*
* static char main_class[] = "callnative";
* static char main_class[] = "simpleIFC";
* static char* params[] = {"16 Dec 1997"};
* #define PARAM_COUNT (sizeof(params)/sizeof(params[0]))
*/
/*
* static char main_class[] = "netscape/jslogger/JSLogger";
* static char main_class[] = "LaunchJSDebugger";
*/
static char main_class[] = "com/netscape/jsdebugging/ifcui/launcher/local/LaunchJSDebugger";
static char* params[] = {NULL};
#define PARAM_COUNT 0
/* Globals */
static char **props; /* User-defined properties */
static int numProps, maxProps; /* Current, max number of properties */
static void *handle;
static JavaVM *jvm;
static JNIEnv *env;
/* Check for null value and return */
#define NULL_CHECK(e) if ((e) == 0) return 0
/*
* Adds a user-defined system property definition.
*/
void AddProperty(char *def)
{
if (numProps >= maxProps) {
if (props == 0) {
maxProps = 4;
props = JRE_Malloc(maxProps * sizeof(char **));
} else {
char **tmp;
maxProps *= 2;
tmp = JRE_Malloc(maxProps * sizeof(char **));
memcpy(tmp, props, numProps * sizeof(char **));
free(props);
props = tmp;
}
}
props[numProps++] = def;
}
/*
* Deletes a property definition by name.
*/
void DeleteProperty(const char *name)
{
int i;
for (i = 0; i < numProps; ) {
char *def = props[i];
char *c = strchr(def, '=');
int n;
if (c != 0) {
n = c - def;
} else {
n = strlen(def);
}
if (strncmp(name, def, n) == 0) {
if (i < --numProps) {
memmove(&props[i], &props[i+1], (numProps-i) * sizeof(char **));
}
} else {
i++;
}
}
}
/*
* Creates an array of Java string objects from the specified array of C
* strings. Returns 0 if the array could not be created.
*/
jarray NewStringArray(JNIEnv *env, char **cpp, int count)
{
jclass cls;
jarray ary;
int i;
NULL_CHECK(cls = (*env)->FindClass(env, "java/lang/String"));
NULL_CHECK(ary = (*env)->NewObjectArray(env, count, cls, 0));
for (i = 0; i < count; i++) {
jstring str = (*env)->NewStringUTF(env, *cpp++);
NULL_CHECK(str);
(*env)->SetObjectArrayElement(env, ary, i, str);
(*env)->DeleteLocalRef(env, str);
}
return ary;
}
/***************************************************************************/
static JNIEnv*
_CreateJavaVM(void)
{
JNIEnv* env = NULL;
JDK1_1InitArgs vmargs;
JRESettings set;
printf("Starting Java...\n");
if(JRE_GetCurrentSettings(&set) != 0)
{
if(JRE_GetDefaultSettings(&set) != 0)
{
fprintf(stderr, "Could not locate Java runtime\n");
return NULL;
}
}
/* Load runtime library */
handle = JRE_LoadLibrary(set.runtimeLib);
if (handle == 0) {
fprintf(stderr, "Could not load runtime library: %s\n",
set.runtimeLib);
return NULL;
}
/* Add pre-defined system properties */
if (set.javaHome != 0) {
char *def = JRE_Malloc(strlen(set.javaHome) + 16);
sprintf(def, "java.home=%s", set.javaHome);
AddProperty(def);
}
if (set.compiler != 0) {
char *def = JRE_Malloc(strlen(set.compiler) + 16);
sprintf(def, "java.compiler=%s", set.compiler);
AddProperty(def);
}
/*
* The following is used to specify that we require at least
* JNI version 1.1. Currently, this field is not checked but
* will be starting with JDK/JRE 1.2. The value returned after
* calling JNI_GetDefaultJavaVMInitArgs() is the actual JNI version
* supported, and is always higher that the requested version.
*/
vmargs.version = 0x00010001;
if (JRE_GetDefaultJavaVMInitArgs(handle, &vmargs) != 0) {
fprintf(stderr, "Could not initialize Java VM\n");
return NULL;
}
/* Tack on our classpath */
if(MORE_CLASSPATH_COUNT)
{
int i;
int size = strlen(set.classPath) + 1;
char sep[2];
sep[0] = PATH_SEPARATOR;
sep[1] = 0;
for(i = 0; i < MORE_CLASSPATH_COUNT; i++)
size += strlen(more_classpath[i]) + 1;
vmargs.classpath = malloc(size);
if(vmargs.classpath == 0)
{
fprintf(stderr, "malloc error\n");
return NULL;
}
strcpy(vmargs.classpath, set.classPath);
for(i = 0; i < MORE_CLASSPATH_COUNT; i++)
{
strcat(vmargs.classpath, sep);
strcat(vmargs.classpath, more_classpath[i]);
}
}
else
{
vmargs.classpath = set.classPath;
}
/*
* fprintf(stderr, "classpath: %s\n", vmargs.classpath);
*/
/* Set user-defined system properties for Java VM */
if (props != 0) {
if (numProps == maxProps) {
char **tmp = JRE_Malloc((numProps + 1) * sizeof(char **));
memcpy(tmp, props, numProps * sizeof(char **));
free(props);
props = tmp;
}
props[numProps] = 0;
vmargs.properties = props;
}
/* verbose? */
/*
* vmargs.verbose = JNI_TRUE;
*/
/* Load and initialize Java VM */
if (JRE_CreateJavaVM(handle, &jvm, &env, &vmargs) != 0) {
fprintf(stderr, "Could not create Java VM\n");
return NULL;
}
/* Free properties */
if (props != 0) {
free(props);
}
return env;
}
static JSBool
_StartDebuggerFE(JNIEnv* env)
{
jclass clazz;
jmethodID mid;
jarray args;
/* Find class */
clazz = (*env)->FindClass(env, main_class);
if (clazz == 0) {
fprintf(stderr, "Class not found: %s\n", main_class);
return JS_FALSE;
}
/* Find main method of class */
mid = (*env)->GetStaticMethodID(env, clazz, "main",
"([Ljava/lang/String;)V");
if (mid == 0) {
fprintf(stderr, "In class %s: public static void main(String args[])"
" is not defined\n");
return JS_FALSE;
}
/* Invoke main method */
args = NewStringArray(env, params, PARAM_COUNT);
if (args == 0) {
JRE_FatalError(env, "Couldn't build argument list for main\n");
}
(*env)->CallStaticVoidMethod(env, clazz, mid, args);
if ((*env)->ExceptionOccurred(env)) {
(*env)->ExceptionDescribe(env);
}
return JS_TRUE;
}
JNIEnv*
jsdj_CreateJavaVMAndStartDebugger(JSDJContext* jsdjc)
{
JNIEnv* env = NULL;
env = _CreateJavaVM();
if( ! env )
return NULL;
jsdj_SetJNIEnvForCurrentThread(jsdjc, env);
if( ! jsdj_RegisterNatives(jsdjc) )
return NULL;
if( ! _StartDebuggerFE(env) )
return NULL;
return env;
}
#endif /* JSD_STANDALONE_JAVA_VM */
/***************************************************************************/

147
mozilla/js/jsd/java/jsdj.h Normal file
View File

@@ -0,0 +1,147 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* Header for JavaScript Debugger JNI support (internal functions)
*/
#ifndef jsdj_h___
#define jsdj_h___
/* Get jstypes.h included first. After that we can use PR macros for doing
* this extern "C" stuff!
*/
#ifdef __cplusplus
extern "C"
{
#endif
#include "jstypes.h"
#ifdef __cplusplus
}
#endif
JS_BEGIN_EXTERN_C
#include "jsutil.h" /* Added by JSIFY */
#include "jshash.h" /* Added by JSIFY */
#include "jsdjava.h"
#include "jsobj.h"
#include "jsfun.h"
#include "jsdbgapi.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
JS_END_EXTERN_C
JS_BEGIN_EXTERN_C
/***************************************************************************/
/* defines copied from Java sources.
** NOTE: javah used to put these in the h files, but with JNI does not seem
** to do this anymore. Be careful with synchronization of these
**
*/
/* From: ThreadStateBase.java */
#define THR_STATUS_UNKNOWN 0x01
#define THR_STATUS_ZOMBIE 0x02
#define THR_STATUS_RUNNING 0x03
#define THR_STATUS_SLEEPING 0x04
#define THR_STATUS_MONWAIT 0x05
#define THR_STATUS_CONDWAIT 0x06
#define THR_STATUS_SUSPENDED 0x07
#define THR_STATUS_BREAK 0x08
#define DEBUG_STATE_DEAD 0x01
#define DEBUG_STATE_RUN 0x02
#define DEBUG_STATE_RETURN 0x03
#define DEBUG_STATE_THROW 0x04
/***************************************************************************/
/* Our structures */
typedef struct JSDJContext
{
JSDContext* jsdc;
JSHashTable* envTable;
jobject controller;
JSDJ_UserCallbacks callbacks;
void* user;
JSBool ownJSDC;
} JSDJContext;
/***************************************************************************/
/* Code validation support */
#ifdef DEBUG
extern void JSDJ_ASSERT_VALID_CONTEXT(JSDJContext* jsdjc);
#else
#define JSDJ_ASSERT_VALID_CONTEXT(x) ((void)0)
#endif
/***************************************************************************/
/* higher level functions */
extern JSDJContext*
jsdj_SimpleInitForSingleContextMode(JSDContext* jsdc,
JSDJ_GetJNIEnvProc getEnvProc, void* user);
extern JSBool
jsdj_SetSingleContextMode();
extern JSDJContext*
jsdj_CreateContext();
extern void
jsdj_DestroyContext(JSDJContext* jsdjc);
extern void
jsdj_SetUserCallbacks(JSDJContext* jsdjc, JSDJ_UserCallbacks* callbacks,
void* user);
extern void
jsdj_SetJNIEnvForCurrentThread(JSDJContext* jsdjc, JNIEnv* env);
extern JNIEnv*
jsdj_GetJNIEnvForCurrentThread(JSDJContext* jsdjc);
extern void
jsdj_SetJSDContext(JSDJContext* jsdjc, JSDContext* jsdc);
extern JSDContext*
jsdj_GetJSDContext(JSDJContext* jsdjc);
extern JSBool
jsdj_RegisterNatives(JSDJContext* jsdjc);
/***************************************************************************/
#ifdef JSD_STANDALONE_JAVA_VM
extern JNIEnv*
jsdj_CreateJavaVMAndStartDebugger(JSDJContext* jsdjc);
/**
* extern JNIEnv*
* jsdj_CreateJavaVM(JSDContext* jsdc);
*/
#endif /* JSD_STANDALONE_JAVA_VM */
/***************************************************************************/
JS_END_EXTERN_C
#endif /* jsdj_h___ */

View File

@@ -0,0 +1,110 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* Public functions to reflect JSD into Java
*/
#include "jsdj.h"
JSDJ_PUBLIC_API(JSDJContext*)
JSDJ_SimpleInitForSingleContextMode(JSDContext* jsdc,
JSDJ_GetJNIEnvProc getEnvProc, void* user)
{
return jsdj_SimpleInitForSingleContextMode(jsdc, getEnvProc, user);
}
JSDJ_PUBLIC_API(JSBool)
JSDJ_SetSingleContextMode()
{
return jsdj_SetSingleContextMode();
}
JSDJ_PUBLIC_API(JSDJContext*)
JSDJ_CreateContext()
{
return jsdj_CreateContext();
}
JSDJ_PUBLIC_API(void)
JSDJ_DestroyContext(JSDJContext* jsdjc)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
jsdj_DestroyContext(jsdjc);
}
JSDJ_PUBLIC_API(void)
JSDJ_SetUserCallbacks(JSDJContext* jsdjc, JSDJ_UserCallbacks* callbacks,
void* user)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
JS_ASSERT(!callbacks ||
(callbacks->size > 0 &&
callbacks->size <= sizeof(JSDJ_UserCallbacks)));
jsdj_SetUserCallbacks(jsdjc, callbacks, user);
}
JSDJ_PUBLIC_API(void)
JSDJ_SetJNIEnvForCurrentThread(JSDJContext* jsdjc, JNIEnv* env)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
JS_ASSERT(env);
jsdj_SetJNIEnvForCurrentThread(jsdjc, env);
}
JSDJ_PUBLIC_API(JNIEnv*)
JSDJ_GetJNIEnvForCurrentThread(JSDJContext* jsdjc)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
return jsdj_GetJNIEnvForCurrentThread(jsdjc);
}
JSDJ_PUBLIC_API(void)
JSDJ_SetJSDContext(JSDJContext* jsdjc, JSDContext* jsdc)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
JS_ASSERT(jsdc);
jsdj_SetJSDContext(jsdjc, jsdc);
}
JSDJ_PUBLIC_API(JSDContext*)
JSDJ_GetJSDContext(JSDJContext* jsdjc)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
return jsdj_GetJSDContext(jsdjc);
}
JSDJ_PUBLIC_API(JSBool)
JSDJ_RegisterNatives(JSDJContext* jsdjc)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
return jsdj_RegisterNatives(jsdjc);
}
/***************************************************************************/
#ifdef JSD_STANDALONE_JAVA_VM
JSDJ_PUBLIC_API(JNIEnv*)
JSDJ_CreateJavaVMAndStartDebugger(JSDJContext* jsdjc)
{
JSDJ_ASSERT_VALID_CONTEXT(jsdjc);
return jsdj_CreateJavaVMAndStartDebugger(jsdjc);
}
#endif /* JSD_STANDALONE_JAVA_VM */
/***************************************************************************/

View File

@@ -0,0 +1,133 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* Header for JavaScript Debugger JNI interfaces
*/
#ifndef jsdjava_h___
#define jsdjava_h___
/* Get jstypes.h included first. After that we can use PR macros for doing
* this extern "C" stuff!
*/
#ifdef __cplusplus
extern "C"
{
#endif
#include "jstypes.h"
#ifdef __cplusplus
}
#endif
JS_BEGIN_EXTERN_C
#include "jsdebug.h"
#include "jni.h"
JS_END_EXTERN_C
JS_BEGIN_EXTERN_C
/*
* The linkage of JSDJ API functions differs depending on whether the file is
* used within the JSDJ library or not. Any source file within the JSDJ
* libraray should define EXPORT_JSDJ_API whereas any client of the library
* should not.
*/
#ifdef EXPORT_JSDJ_API
#define JSDJ_PUBLIC_API(t) JS_EXPORT_API(t)
#define JSDJ_PUBLIC_DATA(t) JS_EXPORT_DATA(t)
#else
#define JSDJ_PUBLIC_API(t) JS_IMPORT_API(t)
#define JSDJ_PUBLIC_DATA(t) JS_IMPORT_DATA(t)
#endif
#define JSDJ_FRIEND_API(t) JSDJ_PUBLIC_API(t)
#define JSDJ_FRIEND_DATA(t) JSDJ_PUBLIC_DATA(t)
/***************************************************************************/
/* Opaque typedefs for handles */
typedef struct JSDJContext JSDJContext;
/***************************************************************************/
/* High Level functions */
#define JSDJ_START_SUCCESS 1
#define JSDJ_START_FAILURE 2
#define JSDJ_STOP 3
typedef void
(*JSDJ_StartStopProc)(JSDJContext* jsdjc, int event, void *user);
typedef JNIEnv*
(*JSDJ_GetJNIEnvProc)(JSDJContext* jsdjc, void* user);
/* This struct could have more fields in future versions */
typedef struct
{
uintN size; /* size of this struct (init before use)*/
JSDJ_StartStopProc startStop;
JSDJ_GetJNIEnvProc getJNIEnv;
} JSDJ_UserCallbacks;
extern JSDJ_PUBLIC_API(JSDJContext*)
JSDJ_SimpleInitForSingleContextMode(JSDContext* jsdc,
JSDJ_GetJNIEnvProc getEnvProc, void* user);
extern JSDJ_PUBLIC_API(JSBool)
JSDJ_SetSingleContextMode();
extern JSDJ_PUBLIC_API(JSDJContext*)
JSDJ_CreateContext();
extern JSDJ_PUBLIC_API(void)
JSDJ_DestroyContext(JSDJContext* jsdjc);
extern JSDJ_PUBLIC_API(void)
JSDJ_SetUserCallbacks(JSDJContext* jsdjc, JSDJ_UserCallbacks* callbacks,
void* user);
extern JSDJ_PUBLIC_API(void)
JSDJ_SetJNIEnvForCurrentThread(JSDJContext* jsdjc, JNIEnv* env);
extern JSDJ_PUBLIC_API(JNIEnv*)
JSDJ_GetJNIEnvForCurrentThread(JSDJContext* jsdjc);
extern JSDJ_PUBLIC_API(void)
JSDJ_SetJSDContext(JSDJContext* jsdjc, JSDContext* jsdc);
extern JSDJ_PUBLIC_API(JSDContext*)
JSDJ_GetJSDContext(JSDJContext* jsdjc);
extern JSDJ_PUBLIC_API(JSBool)
JSDJ_RegisterNatives(JSDJContext* jsdjc);
/***************************************************************************/
#ifdef JSD_STANDALONE_JAVA_VM
extern JSDJ_PUBLIC_API(JNIEnv*)
JSDJ_CreateJavaVMAndStartDebugger(JSDJContext* jsdjc);
#endif /* JSD_STANDALONE_JAVA_VM */
/***************************************************************************/
JS_END_EXTERN_C
#endif /* jsdjava_h___ */

View File

@@ -0,0 +1,78 @@
PROJ = jsdjava
JSDJAVA = .
JSD = $(JSDJAVA)\..
JS = $(JSD)\..\src
JSPROJ = js32
JSDPROJ = jsd
!IF "$(BUILD_OPT)" != ""
OBJ = Release
CC_FLAGS = /DNDEBUG
!ELSE
OBJ = Debug
CC_FLAGS = /DDEBUG
LINK_FLAGS = /DEBUG
!ENDIF
QUIET=@
CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\
/I $(JS)\
/I $(JSD)\
/I $(JSDJAVA)\
/DDEBUG /DWIN32 /DXP_PC /D_WINDOWS /D_WIN32\
/DJSD_THREADSAFE\
/DEXPORT_JSDJ_API\
/DJSDEBUGGER\
!IF "$(JSD_STANDALONE_JAVA_VM)" != ""
/I $(JSDJAVA)\jre\
/I $(JSDJAVA)\jre\win32\
/DJSD_STANDALONE_JAVA_VM\
!ENDIF
$(CC_FLAGS)\
/c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $<
LFLAGS = /nologo /subsystem:console /DLL /incremental:no /machine:I386 \
$(LINK_FLAGS) /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).dll
LLIBS = kernel32.lib advapi32.lib \
$(JS)\$(OBJ)\$(JSPROJ).lib $(JSD)\$(OBJ)\$(JSDPROJ).lib
CPP=cl.exe
LINK32=link.exe
all: $(OBJ) $(OBJ)\$(PROJ).dll
$(OBJ)\$(PROJ).dll: \
!IF "$(JSD_STANDALONE_JAVA_VM)" != ""
$(OBJ)\jsd_jvm.obj \
$(OBJ)\jre.obj \
$(OBJ)\jre_md.obj \
!ENDIF
$(OBJ)\jsdjava.obj \
$(OBJ)\jsd_jntv.obj
$(QUIET)$(LINK32) $(LFLAGS) $** $(LLIBS)
{$(JSDJAVA)}.c{$(OBJ)}.obj :
$(QUIET)$(CPP) $(CFLAGS)
{$(JSDJAVA)\jre}.c{$(OBJ)}.obj :
$(QUIET)$(CPP) $(CFLAGS)
{$(JSDJAVA)\jre\win32}.c{$(OBJ)}.obj :
$(QUIET)$(CPP) $(CFLAGS)
$(OBJ) :
$(QUIET)mkdir $(OBJ)
clean:
@echo deleting old output
$(QUIET)del $(OBJ)\*.pch >NUL
$(QUIET)del $(OBJ)\*.obj >NUL
$(QUIET)del $(OBJ)\*.exp >NUL
$(QUIET)del $(OBJ)\*.lib >NUL
$(QUIET)del $(OBJ)\*.idb >NUL
$(QUIET)del $(OBJ)\*.pdb >NUL
$(QUIET)del $(OBJ)\*.dll >NUL

View File

@@ -0,0 +1,147 @@
PROJ = nativejsengine
PACKAGE_DOT = com.netscape.nativejsengine
NJSE = .
TESTS = $(NJSE)\tests
GEN = $(NJSE)\_jni
JSD = $(NJSE)\..
JS = $(JSD)\..\src
JSDJAVA = $(JSD)\java
JSPROJ = js32
JSDPROJ = jsd
JSDJAVAPROJ = jsdjava
EXPORT_BIN_BASE_DIR = $(NJSE)\..\..\jsdj\dist\bin
EXPORT_CLASSES_BASE_DIR = $(NJSE)\..\..\jsdj\dist\classes
!IF "$(BUILD_OPT)" != ""
OBJ = Release
CC_FLAGS = /DNDEBUG
!ELSE
OBJ = Debug
CC_FLAGS = /DDEBUG
LINK_FLAGS = /DEBUG
!ENDIF
QUIET=@
EXPORT_BIN_DIR = $(EXPORT_BIN_BASE_DIR)\$(OBJ)
STD_CLASSPATH = -classpath $(EXPORT_CLASSES_BASE_DIR);$(CLASSPATH)
CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\
/DWIN32 /DXP_PC /D_WINDOWS /D_WIN32\
/I $(JS)\
/I $(JSD)\
/I $(JSDJAVA)\
/DJSDEBUGGER\
/DJSD_THREADSAFE\
$(CC_FLAGS)\
/c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $<
LFLAGS = /nologo /subsystem:console /incremental:no /DLL /machine:I386 \
$(LINK_FLAGS) /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).dll
LLIBS = kernel32.lib advapi32.lib \
$(JS)\$(OBJ)\$(JSPROJ).lib \
$(JSD)\$(OBJ)\$(JSDPROJ).lib \
$(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).lib
CPP=cl.exe
LINK32=link.exe
CLASSES_WITH_NATIVES = \
$(PACKAGE_DOT).JSRuntime\
$(PACKAGE_DOT).JSContext
all: $(GEN) $(OBJ) dlls mkjniheaders $(OBJ)\$(PROJ).dll export_binaries
$(OBJ)\$(PROJ).dll: \
$(OBJ)\nativejsengine.obj
$(QUIET)$(LINK32) $(LFLAGS) $** $(LLIBS)
.c{$(OBJ)}.obj:
$(QUIET)$(CPP) $(CFLAGS)
$(GEN) :
@mkdir $(GEN)
$(OBJ) :
@mkdir $(OBJ)
dlls :
$(QUIET)cd ..\..\src
!IF "$(BUILD_OPT)" != ""
$(QUIET)nmake -f js.mak CFG="js - Win32 Release"
!ELSE
$(QUIET)nmake -f js.mak CFG="js - Win32 Debug"
!ENDIF
$(QUIET)cd ..\jsd\javawrap
$(QUIET)cd ..
$(QUIET)nmake -f jsd.mak JSD_THREADSAFE=1 $(OPT)
$(QUIET)cd javawrap
$(QUIET)cd ..\java
$(QUIET)nmake -f jsdjava.mak $(OPT)
$(QUIET)cd ..\javawrap
export_binaries : mk_export_dirs
@echo exporting binaries
$(QUIET)copy $(JS)\$(OBJ)\$(JSPROJ).dll $(EXPORT_BIN_DIR) >NUL
$(QUIET)copy $(JS)\$(OBJ)\$(JSPROJ).pdb $(EXPORT_BIN_DIR) >NUL
$(QUIET)copy $(JSD)\$(OBJ)\$(JSDPROJ).dll $(EXPORT_BIN_DIR) >NUL
$(QUIET)copy $(JSD)\$(OBJ)\$(JSDPROJ).pdb $(EXPORT_BIN_DIR) >NUL
$(QUIET)copy $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).dll $(EXPORT_BIN_DIR) >NUL
$(QUIET)copy $(JSDJAVA)\$(OBJ)\$(JSDJAVAPROJ).pdb $(EXPORT_BIN_DIR) >NUL
$(QUIET)copy $(OBJ)\$(PROJ).pdb $(EXPORT_BIN_DIR) >NUL
$(QUIET)copy $(OBJ)\$(PROJ).dll $(EXPORT_BIN_DIR) >NUL
mkjniheaders :
@echo generating JNI header
$(QUIET)javah -jni -d "$(GEN)" $(STD_CLASSPATH) $(CLASSES_WITH_NATIVES)
@touch *.c >NUL
mk_export_dirs:
@if not exist $(JS)\..\jsdj\dist\NUL @mkdir $(JS)\..\jsdj\dist
@if not exist $(JS)\..\jsdj\dist\bin\NUL @mkdir $(JS)\..\jsdj\dist\bin
@if not exist $(EXPORT_BIN_DIR)\NUL @mkdir $(EXPORT_BIN_DIR)
#mktest :
# @echo compiling Java test file
# @sj $(JAVAFLAGS) $(TEST_CLASSPATH) $(TESTS)\Main.java
# @echo copying js and jsd dlls
# @copy $(JS)\$(OBJ)\$(JSPROJ).dll $(OBJ) >NUL
# @copy $(JS)\$(OBJ)\$(JSPROJ).pdb $(OBJ) >NUL
# @copy $(JSD)\$(OBJ)\$(JSDPROJ).dll $(OBJ) >NUL
# @copy $(JSD)\$(OBJ)\$(JSDPROJ).pdb $(OBJ) >NUL
# @copy $(TESTS)\*.js $(OBJ) >NUL
clean:
@echo deleting old output
$(QUIET)del $(OBJ)\*.pch >NUL
$(QUIET)del $(OBJ)\*.obj >NUL
$(QUIET)del $(OBJ)\*.exp >NUL
$(QUIET)del $(OBJ)\*.lib >NUL
$(QUIET)del $(OBJ)\*.idb >NUL
$(QUIET)del $(OBJ)\*.pdb >NUL
$(QUIET)del $(OBJ)\*.dll >NUL
$(QUIET)del $(GEN)\*.h >NUL
deep_clean: clean
$(QUIET)cd ..\..\src
!IF "$(BUILD_OPT)" != ""
$(QUIET)nmake -f js.mak CFG="js - Win32 Release" clean
!ELSE
$(QUIET)nmake -f js.mak CFG="js - Win32 Debug" clean
!ENDIF
$(QUIET)cd ..\jsd\javawrap
$(QUIET)cd ..
$(QUIET)nmake -f jsd.mak clean
$(QUIET)cd javawrap
$(QUIET)cd ..\java
$(QUIET)nmake -f jsdjava.mak clean
$(QUIET)cd ..\javawrap

1
mozilla/js/jsd/javawrap/mk.bat Executable file
View File

@@ -0,0 +1 @@
nmake -f javawrap.mak %1 %2 %3 %4 %5

View File

@@ -0,0 +1,616 @@
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include "_jni/com_netscape_nativejsengine_JSRuntime.h"
#include "_jni/com_netscape_nativejsengine_JSContext.h"
#include "jsapi.h"
#include "jstypes.h"
#include "jsutil.h" /* Added by JSIFY */
#ifdef JSDEBUGGER
#include "jsdebug.h"
#include "jsdjava.h"
#endif
/***************************************************************************/
#define ASSERT_RETURN_VOID(x) \
JS_BEGIN_MACRO \
if(!(x)) \
{ \
JS_ASSERT(0); \
return; \
} \
JS_END_MACRO
#define ASSERT_RETURN_VALUE(x,v)\
JS_BEGIN_MACRO \
if(!(x)) \
{ \
JS_ASSERT(0); \
return v; \
} \
JS_END_MACRO
#define CHECK_RETURN_VOID(x) \
JS_BEGIN_MACRO \
if(!(x)) \
{ \
return; \
} \
JS_END_MACRO
#define CHECK_RETURN_VALUE(x,v) \
JS_BEGIN_MACRO \
if(!(x)) \
{ \
return v; \
} \
JS_END_MACRO
#define ASSERT_GOTO(x,w) \
JS_BEGIN_MACRO \
if(!(x)) \
{ \
JS_ASSERT(0); \
goto w; \
} \
JS_END_MACRO
#define CHECK_GOTO(x,w) \
JS_BEGIN_MACRO \
if(!(x)) \
{ \
goto w; \
} \
JS_END_MACRO
#ifdef DEBUG
#define ASSERT_CLEAR_EXCEPTION(e) \
JS_BEGIN_MACRO \
if((*e)->ExceptionOccurred(e)) \
{ \
(*e)->ExceptionDescribe(e); \
JS_ASSERT(0); \
} \
(*e)->ExceptionClear(e); \
JS_END_MACRO
#else /* ! DEBUG */
#define ASSERT_CLEAR_EXCEPTION(e) (*e)->ExceptionClear(e)
#endif /* DEBUG */
#define CHECK_CLEAR_EXCEPTION(e) (*e)->ExceptionClear(e)
/***************************************************************************/
typedef struct ContextInfo {
JNIEnv* env;
jobject contextObject;
} ContextInfo;
/***************************************************************************/
#ifdef JSDEBUGGER
static void
_jamSourceIntoJSD(JSContext *cx, const char* src, int len, const char* filename)
{
jclass clazz_self;
jclass clazz;
JSDJContext* jsdjc;
jobject rtObject;
jobject contextObject;
jmethodID mid;
jfieldID fid;
ContextInfo* info;
JNIEnv* env;
info = (ContextInfo*) JS_GetContextPrivate(cx);
ASSERT_RETURN_VOID(info);
env = info->env;
ASSERT_RETURN_VOID(env);
contextObject = info->contextObject;
ASSERT_RETURN_VOID(contextObject);
clazz_self = (*env)->GetObjectClass(env, contextObject);
ASSERT_RETURN_VOID(clazz_self);
fid = (*env)->GetFieldID(env, clazz_self, "_runtime",
"Lcom/netscape/nativejsengine/JSRuntime;");
ASSERT_RETURN_VOID(fid);
rtObject = (*env)->GetObjectField(env, contextObject, fid);
ASSERT_RETURN_VOID(rtObject);
clazz = (*env)->GetObjectClass(env, rtObject);
ASSERT_RETURN_VOID(clazz);
mid = (*env)->GetMethodID(env, clazz, "getNativeDebugSupport", "()J");
ASSERT_RETURN_VOID(mid);
jsdjc = (JSDJContext*) (*env)->CallObjectMethod(env, rtObject, mid);
if(jsdjc)
{
JSDContext* jsdc;
jsdc = JSDJ_GetJSDContext(jsdjc);
ASSERT_RETURN_VOID(jsdc);
JSD_AddFullSourceText(jsdc, src, len, filename);
}
}
#endif
static JSBool
_loadSingleFile(JSContext *cx, JSObject *obj, const char* filename)
{
char* buf;
FILE* file;
int file_len;
jsval result;
errno = 0;
file = fopen(filename, "rb");
if (!file) {
JS_ReportError(cx, "can't open %s: %s", filename, strerror(errno));
return JS_FALSE;
}
fseek(file, 0, SEEK_END);
file_len = ftell(file);
fseek(file, 0, SEEK_SET);
if(! file_len) {
fclose(file);
JS_ReportError(cx, "%s is empty", filename);
return JS_FALSE;
}
buf = (char*) malloc(file_len);
if(! buf) {
fclose(file);
JS_ReportError(cx, "memory alloc error while trying to read %s", filename);
return JS_FALSE;
}
fread(buf, 1, file_len, file);
fclose(file);
#ifdef JSDEBUGGER
_jamSourceIntoJSD(cx, buf, file_len, filename);
#endif
JS_EvaluateScript(cx, obj, buf, file_len, filename, 1, &result);
free(buf);
return JS_TRUE;
}
static void _sendPrintStringToJava(JNIEnv* env, jobject contextObject,
jmethodID mid, const char* str)
{
if(! str)
return;
(*env)->CallObjectMethod(env, contextObject, mid,
(*env)->NewStringUTF(env, str));
}
static JSBool
Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
uintN i, n;
JSString *str;
ContextInfo* info;
jmethodID mid;
jclass clazz;
JNIEnv* env;
info = (ContextInfo*) JS_GetContextPrivate(cx);
ASSERT_RETURN_VALUE(info, JS_FALSE);
env = info->env;
ASSERT_RETURN_VALUE(env, JS_FALSE);
clazz = (*env)->GetObjectClass(env, info->contextObject);
ASSERT_RETURN_VALUE(clazz, JS_FALSE);
mid = (*env)->GetMethodID(env, clazz, "_print", "(Ljava/lang/String;)V");
ASSERT_RETURN_VALUE(mid, JS_FALSE);
for (i = n = 0; i < argc; i++) {
str = JS_ValueToString(cx, argv[i]);
if (!str)
return JS_FALSE;
if(i)
_sendPrintStringToJava(env, info->contextObject, mid, "");
_sendPrintStringToJava(env, info->contextObject, mid, JS_GetStringBytes(str));
n++;
}
if (n)
_sendPrintStringToJava(env, info->contextObject, mid, "\n");
return JS_TRUE;
}
static JSBool
Version(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
if (argc > 0 && JSVAL_IS_INT(argv[0]))
*rval = INT_TO_JSVAL(JS_SetVersion(cx, JSVAL_TO_INT(argv[0])));
else
*rval = INT_TO_JSVAL(JS_GetVersion(cx));
return JS_TRUE;
}
static JSBool
Load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
uintN i;
JSString *str;
const char *filename;
for (i = 0; i < argc; i++) {
str = JS_ValueToString(cx, argv[i]);
if (!str)
return JS_FALSE;
argv[i] = STRING_TO_JSVAL(str);
filename = JS_GetStringBytes(str);
if(! _loadSingleFile(cx, obj, filename))
return JS_FALSE;
}
return JS_TRUE;
}
static JSFunctionSpec shell_functions[] = {
{"version", Version, 0},
{"load", Load, 1},
{"print", Print, 0},
{0}
};
static void
my_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report)
{
ContextInfo* info;
jmethodID mid;
jclass clazz;
JNIEnv* env;
jobject msg = NULL;
jobject filename = NULL;
jobject lineBuf = NULL;
int lineno = 0;
int offset = 0;
info = (ContextInfo*) JS_GetContextPrivate(cx);
ASSERT_RETURN_VOID(info);
env = info->env;
ASSERT_RETURN_VOID(env);
clazz = (*env)->GetObjectClass(env, info->contextObject);
ASSERT_RETURN_VOID(clazz);
mid = (*env)->GetMethodID(env, clazz, "_reportError",
"(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V");
ASSERT_RETURN_VOID(mid);
if(message)
msg = (*env)->NewStringUTF(env, message);
if(report)
{
lineno = report->lineno;
if(report->filename)
filename = (*env)->NewStringUTF(env, report->filename);
if(report->linebuf)
{
lineBuf = (*env)->NewStringUTF(env, report->linebuf);
if(report->tokenptr)
offset = report->tokenptr - report->linebuf;
}
}
(*env)->CallObjectMethod(env, info->contextObject, mid,
msg, filename, lineno, lineBuf, offset);
}
static JSClass global_class = {
"global", 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub
};
/*
* Class: com_netscape_nativejsengine_JSRuntime
* Method: _init
* Signature: (Z)Z
*/
JNIEXPORT jboolean JNICALL Java_com_netscape_nativejsengine_JSRuntime__1init
(JNIEnv * env, jobject self, jboolean enableDebugging)
{
JSRuntime *rt;
jclass clazz;
jfieldID fid;
rt = JS_NewRuntime(8L * 1024L * 1024L);
ASSERT_RETURN_VALUE(rt, JNI_FALSE);
clazz = (*env)->GetObjectClass(env, self);
ASSERT_RETURN_VALUE(clazz, JNI_FALSE);
fid = (*env)->GetFieldID(env, clazz, "_nativeRuntime", "J");
ASSERT_RETURN_VALUE(fid, JNI_FALSE);
(*env)->SetLongField(env, self, fid, (long) rt);
#ifdef JSDEBUGGER
if(enableDebugging)
{
JSDJContext* jsdjc;
JSDContext* jsdc;
jsdc = JSD_DebuggerOnForUser(rt, NULL, NULL);
ASSERT_RETURN_VALUE(jsdc, JNI_FALSE);
jsdjc = JSDJ_CreateContext();
ASSERT_RETURN_VALUE(jsdjc, JNI_FALSE);
JSDJ_SetJSDContext(jsdjc, jsdc);
JSDJ_SetJNIEnvForCurrentThread(jsdjc, env);
fid = (*env)->GetFieldID(env, clazz, "_nativeDebugSupport", "J");
ASSERT_RETURN_VALUE(fid, JNI_FALSE);
(*env)->SetLongField(env, self, fid, (long) jsdjc);
}
#else
if(enableDebugging)
printf("ERROR - Context created with enableDebugging flag, but no debugging support compiled in!");
#endif
return JNI_TRUE;
}
/*
* Class: com_netscape_nativejsengine_JSRuntime
* Method: _exit
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSRuntime__1exit
(JNIEnv * env, jobject self)
{
jfieldID fid;
jclass clazz;
JSRuntime *rt;
JSContext *iterp = NULL;
clazz = (*env)->GetObjectClass(env, self);
ASSERT_RETURN_VOID(clazz);
fid = (*env)->GetFieldID(env, clazz, "_nativeRuntime", "J");
ASSERT_RETURN_VOID(fid);
rt = (JSRuntime *) (*env)->GetLongField(env, self, fid);
ASSERT_RETURN_VOID(rt);
/*
* Can't kill runtime if it holds any contexts
*
* However, JSD may make it's own context(s), so don't ASSERT
*/
CHECK_RETURN_VOID(!JS_ContextIterator(rt, &iterp));
printf("runtime = %d\n", (int)rt);
JS_DestroyRuntime(rt);
}
/***************************************************************************/
/*
* Class: com_netscape_nativejsengine_JSContext
* Method: _init
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_com_netscape_nativejsengine_JSContext__1init
(JNIEnv *env, jobject self)
{
JSContext *cx;
JSObject *glob;
jfieldID fid;
jmethodID mid;
JSRuntime *rt;
jobject rtObject;
jclass clazz;
jclass clazz_self;
JSBool ok;
ContextInfo* info;
#ifdef JSDEBUGGER
JSDJContext* jsdjc;
#endif
clazz_self = (*env)->GetObjectClass(env, self);
ASSERT_RETURN_VALUE(clazz_self, JNI_FALSE);
fid = (*env)->GetFieldID(env, clazz_self, "_runtime",
"Lcom/netscape/nativejsengine/JSRuntime;");
ASSERT_RETURN_VALUE(fid, JNI_FALSE);
rtObject = (*env)->GetObjectField(env, self, fid);
ASSERT_RETURN_VALUE(rtObject, JNI_FALSE);
clazz = (*env)->GetObjectClass(env, rtObject);
ASSERT_RETURN_VALUE(clazz, JNI_FALSE);
mid = (*env)->GetMethodID(env, clazz, "getNativeRuntime", "()J");
ASSERT_RETURN_VALUE(mid, JNI_FALSE);
rt = (JSRuntime *) (*env)->CallObjectMethod(env, rtObject, mid);
ASSERT_RETURN_VALUE(rt, JNI_FALSE);
cx = JS_NewContext(rt, 8192);
ASSERT_RETURN_VALUE(cx, JNI_FALSE);
JS_SetErrorReporter(cx, my_ErrorReporter);
glob = JS_NewObject(cx, &global_class, NULL, NULL);
ASSERT_RETURN_VALUE(glob, JNI_FALSE);
ok = JS_InitStandardClasses(cx, glob);
ASSERT_RETURN_VALUE(ok, JNI_FALSE);
ok = JS_DefineFunctions(cx, glob, shell_functions);
ASSERT_RETURN_VALUE(ok, JNI_FALSE);
fid = (*env)->GetFieldID(env, clazz_self, "_nativeContext", "J");
ASSERT_RETURN_VALUE(fid, JNI_FALSE);
(*env)->SetLongField(env, self, fid, (long) cx);
info = (ContextInfo*) malloc(sizeof(ContextInfo));
ASSERT_RETURN_VALUE(info, JNI_FALSE);
info->env = env;
info->contextObject = self;
JS_SetContextPrivate(cx, info);
#ifdef JSDEBUGGER
mid = (*env)->GetMethodID(env, clazz, "getNativeDebugSupport", "()J");
ASSERT_RETURN_VALUE(mid, JNI_FALSE);
jsdjc = (JSDJContext*) (*env)->CallObjectMethod(env, rtObject, mid);
if(jsdjc)
{
JSDContext* jsdc = JSDJ_GetJSDContext(jsdjc);
ASSERT_RETURN_VALUE(jsdc, JNI_FALSE);
JSDJ_SetJNIEnvForCurrentThread(jsdjc, env);
JSD_JSContextInUse(jsdc, cx);
}
#endif
return JNI_TRUE;
}
/*
* Class: com_netscape_nativejsengine_JSContext
* Method: _exit
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSContext__1exit
(JNIEnv *env, jobject self)
{
jfieldID fid;
jclass clazz;
JSContext *cx;
ContextInfo* info;
clazz = (*env)->GetObjectClass(env, self);
ASSERT_RETURN_VOID(clazz);
fid = (*env)->GetFieldID(env, clazz, "_nativeContext", "J");
ASSERT_RETURN_VOID(fid);
cx = (JSContext *) (*env)->GetLongField(env, self, fid);
ASSERT_RETURN_VOID(cx);
info = (ContextInfo*) JS_GetContextPrivate(cx);
ASSERT_RETURN_VOID(info);
free(info);
printf("context = %d\n", (int)cx);
JS_DestroyContext(cx);
}
/*
* Class: com_netscape_nativejsengine_JSContext
* Method: _eval
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSContext__1eval
(JNIEnv * env, jobject self, jstring str, jstring filename, jint lineno)
{
jfieldID fid;
jclass clazz_self;
JSContext *cx;
JSObject *glob;
jsval rval;
int len;
const char* Cstr;
const char* Cfilename;
jboolean isCopy;
clazz_self = (*env)->GetObjectClass(env, self);
ASSERT_RETURN_VOID(clazz_self);
fid = (*env)->GetFieldID(env, clazz_self, "_nativeContext", "J");
ASSERT_RETURN_VOID(fid);
cx = (JSContext *) (*env)->GetLongField(env, self, fid);
ASSERT_RETURN_VOID(cx);
glob = JS_GetGlobalObject(cx);
ASSERT_RETURN_VOID(glob);
len = (*env)->GetStringUTFLength(env, str);
Cstr = (*env)->GetStringUTFChars(env, str, &isCopy);
Cfilename = (*env)->GetStringUTFChars(env, filename, &isCopy);
#ifdef JSDEBUGGER
/*
* XXX this just overwrites any previous source for this url!
*/
_jamSourceIntoJSD(cx, Cstr, len, Cfilename);
#endif
JS_EvaluateScript(cx, glob, Cstr, len, Cfilename, lineno, &rval);
(*env)->ReleaseStringUTFChars(env, str, Cstr);
(*env)->ReleaseStringUTFChars(env, filename, Cfilename);
}
/*
* Class: com_netscape_nativejsengine_JSContext
* Method: _load
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_netscape_nativejsengine_JSContext__1load
(JNIEnv *env, jobject self, jstring filename)
{
jfieldID fid;
jclass clazz;
JSContext *cx;
const char* Cfilename;
jboolean isCopy;
JSObject *glob;
clazz = (*env)->GetObjectClass(env, self);
ASSERT_RETURN_VOID(clazz);
fid = (*env)->GetFieldID(env, clazz, "_nativeContext", "J");
ASSERT_RETURN_VOID(fid);
cx = (JSContext *) (*env)->GetLongField(env, self, fid);
ASSERT_RETURN_VOID(cx);
glob = JS_GetGlobalObject(cx);
ASSERT_RETURN_VOID(glob);
Cfilename = (*env)->GetStringUTFChars(env, filename, &isCopy);
_loadSingleFile(cx, glob, Cfilename);
(*env)->ReleaseStringUTFChars(env, filename, Cfilename);
}

954
mozilla/js/jsd/jsd.h Normal file
View File

@@ -0,0 +1,954 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* Header for JavaScript Debugging support - Internal ONLY declarations
*/
#ifndef jsd_h___
#define jsd_h___
/*
* NOTE: This is a *private* header file and should only be included by
* the sources in js/jsd. Defining EXPORT_JSD_API in an outside module
* using jsd would be bad.
*/
#define EXPORT_JSD_API 1 /* if used, must be set before include of jsdebug.h */
/*
* These can be controled by the makefile, but this allows a place to set
* the values always used in the mozilla client, but perhaps done differnetly
* in other embeddings.
*/
#ifdef MOZILLA_CLIENT
#define JSD_THREADSAFE 1
#define JSD_HAS_DANGEROUS_THREAD 1
#define JSD_USE_NSPR_LOCKS 1
#endif /* MOZILLA_CLIENT */
/* Get jstypes.h included first. After that we can use PR macros for doing
* this extern "C" stuff!
*/
#ifdef __cplusplus
extern "C"
{
#endif
#include "jstypes.h"
#ifdef __cplusplus
}
#endif
JS_BEGIN_EXTERN_C
#include "jsprf.h"
#include "jsutil.h" /* Added by JSIFY */
#include "jshash.h" /* Added by JSIFY */
#include "jsclist.h"
#include "jsdebug.h"
#include "jsapi.h"
#include "jsobj.h"
#include "jsfun.h"
#include "jsdbgapi.h"
#include "jsd_lock.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef LIVEWIRE
#include <base/pblock.h>
#include <base/session.h>
#include <frame/log.h>
#include <frame/req.h>
#endif /* LIVEWIRE */
JS_END_EXTERN_C
JS_BEGIN_EXTERN_C
#define JSD_MAJOR_VERSION 1
#define JSD_MINOR_VERSION 1
/***************************************************************************/
/* handy macros */
#undef CHECK_BIT_FLAG
#define CHECK_BIT_FLAG(f,b) ((f)&(b))
#undef SET_BIT_FLAG
#define SET_BIT_FLAG(f,b) ((f)|=(b))
#undef CLEAR_BIT_FLAG
#define CLEAR_BIT_FLAG(f,b) ((f)&=(~(b)))
/***************************************************************************/
/* These are not exposed in jsdebug.h - typedef here for consistency */
typedef struct JSDExecHook JSDExecHook;
typedef struct JSDAtom JSDAtom;
/***************************************************************************/
/* Our structures */
/*
* XXX What I'm calling a JSDContext is really more of a JSDTaskState.
*/
struct JSDContext
{
JSCList links; /* we are part of a JSCList */
JSBool inited;
JSD_ScriptHookProc scriptHook;
void* scriptHookData;
JSD_ExecutionHookProc interruptHook;
void* interruptHookData;
JSRuntime* jsrt;
JSD_ErrorReporter errorReporter;
void* errorReporterData;
JSCList threadsStates;
JSD_ExecutionHookProc debugBreakHook;
void* debugBreakHookData;
JSD_ExecutionHookProc debuggerHook;
void* debuggerHookData;
JSD_ExecutionHookProc throwHook;
void* throwHookData;
JSContext* dumbContext;
JSObject* glob;
JSD_UserCallbacks userCallbacks;
void* user;
JSCList scripts;
JSCList sources;
JSCList removedSources;
uintN sourceAlterCount;
JSHashTable* atoms;
JSCList objectsList;
JSHashTable* objectsTable;
#ifdef JSD_THREADSAFE
void* scriptsLock;
void* sourceTextLock;
void* objectsLock;
void* atomsLock;
void* threadStatesLock;
#endif /* JSD_THREADSAFE */
#ifdef JSD_HAS_DANGEROUS_THREAD
void* dangerousThread;
#endif /* JSD_HAS_DANGEROUS_THREAD */
};
struct JSDScript
{
JSCList links; /* we are part of a JSCList */
JSDContext* jsdc; /* JSDContext for this jsdscript */
JSScript* script; /* script we are wrapping */
JSFunction* function; /* back pointer to owning function (can be NULL) */
uintN lineBase; /* we cache this */
uintN lineExtent; /* we cache this */
JSCList hooks; /* JSCList of JSDExecHooks for this script */
char* url;
#ifdef LIVEWIRE
LWDBGApp* app;
LWDBGScript* lwscript;
#endif
};
struct JSDSourceText
{
JSCList links; /* we are part of a JSCList */
char* url;
char* text;
uintN textLength;
uintN textSpace;
JSBool dirty;
JSDSourceStatus status;
uintN alterCount;
JSBool doingEval;
};
struct JSDExecHook
{
JSCList links; /* we are part of a JSCList */
JSDScript* jsdscript;
jsuword pc;
JSD_ExecutionHookProc hook;
void* callerdata;
};
struct JSDThreadState
{
JSCList links; /* we are part of a JSCList */
JSContext* context;
void* thread;
JSCList stack;
uintN stackDepth;
};
struct JSDStackFrameInfo
{
JSCList links; /* we are part of a JSCList */
JSDThreadState* jsdthreadstate;
JSDScript* jsdscript;
jsuword pc;
JSStackFrame* fp;
};
#define GOT_PROTO ((short) (1 << 0))
#define GOT_PROPS ((short) (1 << 1))
#define GOT_PARENT ((short) (1 << 2))
#define GOT_CTOR ((short) (1 << 3))
struct JSDValue
{
jsval val;
intN nref;
JSCList props;
JSString* string;
const char* funName;
const char* className;
JSDValue* proto;
JSDValue* parent;
JSDValue* ctor;
uintN flags;
};
struct JSDProperty
{
JSCList links; /* we are part of a JSCList */
intN nref;
JSDValue* val;
JSDValue* name;
JSDValue* alias;
uintN slot;
uintN flags;
};
struct JSDAtom
{
char* str; /* must be first element in stuct for compare */
intN refcount;
};
struct JSDObject
{
JSCList links; /* we are part of a JSCList */
JSObject* obj;
JSDAtom* newURL;
uintN newLineno;
JSDAtom* ctorURL;
uintN ctorLineno;
JSDAtom* ctorName;
};
/***************************************************************************/
/* Code validation support */
#ifdef DEBUG
extern void JSD_ASSERT_VALID_CONTEXT(JSDContext* jsdc);
extern void JSD_ASSERT_VALID_SCRIPT(JSDScript* jsdscript);
extern void JSD_ASSERT_VALID_SOURCE_TEXT(JSDSourceText* jsdsrc);
extern void JSD_ASSERT_VALID_THREAD_STATE(JSDThreadState* jsdthreadstate);
extern void JSD_ASSERT_VALID_STACK_FRAME(JSDStackFrameInfo* jsdframe);
extern void JSD_ASSERT_VALID_EXEC_HOOK(JSDExecHook* jsdhook);
extern void JSD_ASSERT_VALID_VALUE(JSDValue* jsdval);
extern void JSD_ASSERT_VALID_PROPERTY(JSDProperty* jsdprop);
extern void JSD_ASSERT_VALID_OBJECT(JSDObject* jsdobj);
#else
#define JSD_ASSERT_VALID_CONTEXT(x) ((void)0)
#define JSD_ASSERT_VALID_SCRIPT(x) ((void)0)
#define JSD_ASSERT_VALID_SOURCE_TEXT(x) ((void)0)
#define JSD_ASSERT_VALID_THREAD_STATE(x)((void)0)
#define JSD_ASSERT_VALID_STACK_FRAME(x) ((void)0)
#define JSD_ASSERT_VALID_EXEC_HOOK(x) ((void)0)
#define JSD_ASSERT_VALID_VALUE(x) ((void)0)
#define JSD_ASSERT_VALID_PROPERTY(x) ((void)0)
#define JSD_ASSERT_VALID_OBJECT(x) ((void)0)
#endif
/***************************************************************************/
/* higher level functions */
extern JSDContext*
jsd_DebuggerOnForUser(JSRuntime* jsrt,
JSD_UserCallbacks* callbacks,
void* user);
extern JSDContext*
jsd_DebuggerOn(void);
extern void
jsd_DebuggerOff(JSDContext* jsdc);
extern void
jsd_SetUserCallbacks(JSRuntime* jsrt, JSD_UserCallbacks* callbacks, void* user);
extern JSDContext*
jsd_JSDContextForJSContext(JSContext* context);
extern JSBool
jsd_SetErrorReporter(JSDContext* jsdc,
JSD_ErrorReporter reporter,
void* callerdata);
extern JSBool
jsd_GetErrorReporter(JSDContext* jsdc,
JSD_ErrorReporter* reporter,
void** callerdata);
JS_STATIC_DLL_CALLBACK(JSBool)
jsd_DebugErrorHook(JSContext *cx, const char *message,
JSErrorReport *report, void *closure);
/***************************************************************************/
/* Script functions */
extern void
jsd_DestroyAllJSDScripts(JSDContext* jsdc);
extern JSDScript*
jsd_FindJSDScript(JSDContext* jsdc,
JSScript *script);
extern JSDScript*
jsd_IterateScripts(JSDContext* jsdc, JSDScript **iterp);
extern JSBool
jsd_IsActiveScript(JSDContext* jsdc, JSDScript *jsdscript);
extern const char*
jsd_GetScriptFilename(JSDContext* jsdc, JSDScript *jsdscript);
extern const char*
jsd_GetScriptFunctionName(JSDContext* jsdc, JSDScript *jsdscript);
extern uintN
jsd_GetScriptBaseLineNumber(JSDContext* jsdc, JSDScript *jsdscript);
extern uintN
jsd_GetScriptLineExtent(JSDContext* jsdc, JSDScript *jsdscript);
extern JSBool
jsd_SetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc hook, void* callerdata);
extern JSBool
jsd_GetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc* hook, void** callerdata);
extern jsuword
jsd_GetClosestPC(JSDContext* jsdc, JSDScript* jsdscript, uintN line);
extern uintN
jsd_GetClosestLine(JSDContext* jsdc, JSDScript* jsdscript, jsuword pc);
extern void JS_DLL_CALLBACK
jsd_NewScriptHookProc(
JSContext *cx,
const char *filename, /* URL this script loads from */
uintN lineno, /* line where this script starts */
JSScript *script,
JSFunction *fun,
void* callerdata);
extern void JS_DLL_CALLBACK
jsd_DestroyScriptHookProc(
JSContext *cx,
JSScript *script,
void* callerdata);
/* Script execution hook functions */
extern JSBool
jsd_SetExecutionHook(JSDContext* jsdc,
JSDScript* jsdscript,
jsuword pc,
JSD_ExecutionHookProc hook,
void* callerdata);
extern JSBool
jsd_ClearExecutionHook(JSDContext* jsdc,
JSDScript* jsdscript,
jsuword pc);
extern JSBool
jsd_ClearAllExecutionHooksForScript(JSDContext* jsdc, JSDScript* jsdscript);
extern JSBool
jsd_ClearAllExecutionHooks(JSDContext* jsdc);
extern void
jsd_ScriptCreated(JSDContext* jsdc,
JSContext *cx,
const char *filename, /* URL this script loads from */
uintN lineno, /* line where this script starts */
JSScript *script,
JSFunction *fun);
extern void
jsd_ScriptDestroyed(JSDContext* jsdc,
JSContext *cx,
JSScript *script);
/***************************************************************************/
/* Source Text functions */
extern JSDSourceText*
jsd_IterateSources(JSDContext* jsdc, JSDSourceText **iterp);
extern JSDSourceText*
jsd_FindSourceForURL(JSDContext* jsdc, const char* url);
extern const char*
jsd_GetSourceURL(JSDContext* jsdc, JSDSourceText* jsdsrc);
extern JSBool
jsd_GetSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc,
const char** ppBuf, intN* pLen);
extern void
jsd_ClearSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc);
extern JSDSourceStatus
jsd_GetSourceStatus(JSDContext* jsdc, JSDSourceText* jsdsrc);
extern JSBool
jsd_IsSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc);
extern void
jsd_SetSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc, JSBool dirty);
extern uintN
jsd_GetSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc);
extern uintN
jsd_IncrementSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc);
extern JSDSourceText*
jsd_NewSourceText(JSDContext* jsdc, const char* url);
extern JSDSourceText*
jsd_AppendSourceText(JSDContext* jsdc,
JSDSourceText* jsdsrc,
const char* text, /* *not* zero terminated */
size_t length,
JSDSourceStatus status);
extern JSDSourceText*
jsd_AppendUCSourceText(JSDContext* jsdc,
JSDSourceText* jsdsrc,
const jschar* text, /* *not* zero terminated */
size_t length,
JSDSourceStatus status);
/* convienence function for adding complete source of url in one call */
extern JSBool
jsd_AddFullSourceText(JSDContext* jsdc,
const char* text, /* *not* zero terminated */
size_t length,
const char* url);
extern void
jsd_DestroyAllSources(JSDContext* jsdc);
extern const char*
jsd_BuildNormalizedURL(const char* url_string);
extern void
jsd_StartingEvalUsingFilename(JSDContext* jsdc, const char* url);
extern void
jsd_FinishedEvalUsingFilename(JSDContext* jsdc, const char* url);
/***************************************************************************/
/* Interrupt Hook functions */
extern JSBool
jsd_SetInterruptHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata);
extern JSBool
jsd_ClearInterruptHook(JSDContext* jsdc);
extern JSBool
jsd_SetDebugBreakHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata);
extern JSBool
jsd_ClearDebugBreakHook(JSDContext* jsdc);
extern JSBool
jsd_SetDebuggerHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata);
extern JSBool
jsd_ClearDebuggerHook(JSDContext* jsdc);
extern JSTrapStatus
jsd_CallExecutionHook(JSDContext* jsdc,
JSContext *cx,
uintN type,
JSD_ExecutionHookProc hook,
void* hookData,
jsval* rval);
extern JSBool
jsd_SetThrowHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata);
extern JSBool
jsd_ClearThrowHook(JSDContext* jsdc);
extern JSTrapStatus JS_DLL_CALLBACK
jsd_DebuggerHandler(JSContext *cx, JSScript *script, jsbytecode *pc,
jsval *rval, void *closure);
extern JSTrapStatus JS_DLL_CALLBACK
jsd_ThrowHandler(JSContext *cx, JSScript *script, jsbytecode *pc,
jsval *rval, void *closure);
/***************************************************************************/
/* Stack Frame functions */
extern uintN
jsd_GetCountOfStackFrames(JSDContext* jsdc, JSDThreadState* jsdthreadstate);
extern JSDStackFrameInfo*
jsd_GetStackFrame(JSDContext* jsdc, JSDThreadState* jsdthreadstate);
extern JSDStackFrameInfo*
jsd_GetCallingStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe);
extern JSDScript*
jsd_GetScriptForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe);
extern jsuword
jsd_GetPCForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe);
extern JSDValue*
jsd_GetCallObjectForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe);
extern JSDValue*
jsd_GetScopeChainForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe);
extern JSDValue*
jsd_GetThisForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe);
extern JSDThreadState*
jsd_NewThreadState(JSDContext* jsdc, JSContext *cx);
extern void
jsd_DestroyThreadState(JSDContext* jsdc, JSDThreadState* jsdthreadstate);
extern JSBool
jsd_EvaluateScriptInStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe,
const char *bytes, uintN length,
const char *filename, uintN lineno, jsval *rval);
extern JSString*
jsd_ValToStringInStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe,
jsval val);
extern JSBool
jsd_IsValidThreadState(JSDContext* jsdc,
JSDThreadState* jsdthreadstate);
extern JSBool
jsd_IsValidFrameInThreadState(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe);
extern JSDValue*
jsd_GetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate);
extern JSBool
jsd_SetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate,
JSDValue* jsdval);
/***************************************************************************/
/* Locking support */
/* protos are in js_lock.h for:
* jsd_CreateLock
* jsd_Lock
* jsd_Unlock
* jsd_IsLocked
* jsd_CurrentThread
*/
#ifdef JSD_THREADSAFE
/* the system-wide lock */
extern void* _jsd_global_lock;
#define JSD_LOCK() \
JS_BEGIN_MACRO \
if(!_jsd_global_lock) \
_jsd_global_lock = jsd_CreateLock(); \
JS_ASSERT(_jsd_global_lock); \
jsd_Lock(_jsd_global_lock); \
JS_END_MACRO
#define JSD_UNLOCK() \
JS_BEGIN_MACRO \
JS_ASSERT(_jsd_global_lock); \
jsd_Unlock(_jsd_global_lock); \
JS_END_MACRO
/* locks for the subsystems of a given context */
#define JSD_INIT_LOCKS(jsdc) \
( (NULL != (jsdc->scriptsLock = jsd_CreateLock())) && \
(NULL != (jsdc->sourceTextLock = jsd_CreateLock())) && \
(NULL != (jsdc->atomsLock = jsd_CreateLock())) && \
(NULL != (jsdc->objectsLock = jsd_CreateLock())) && \
(NULL != (jsdc->threadStatesLock = jsd_CreateLock())) )
#define JSD_LOCK_SCRIPTS(jsdc) jsd_Lock(jsdc->scriptsLock)
#define JSD_UNLOCK_SCRIPTS(jsdc) jsd_Unlock(jsdc->scriptsLock)
#define JSD_LOCK_SOURCE_TEXT(jsdc) jsd_Lock(jsdc->sourceTextLock)
#define JSD_UNLOCK_SOURCE_TEXT(jsdc) jsd_Unlock(jsdc->sourceTextLock)
#define JSD_LOCK_ATOMS(jsdc) jsd_Lock(jsdc->atomsLock)
#define JSD_UNLOCK_ATOMS(jsdc) jsd_Unlock(jsdc->atomsLock)
#define JSD_LOCK_OBJECTS(jsdc) jsd_Lock(jsdc->objectsLock)
#define JSD_UNLOCK_OBJECTS(jsdc) jsd_Unlock(jsdc->objectsLock)
#define JSD_LOCK_THREADSTATES(jsdc) jsd_Lock(jsdc->threadStatesLock)
#define JSD_UNLOCK_THREADSTATES(jsdc) jsd_Unlock(jsdc->threadStatesLock)
#else /* !JSD_THREADSAFE */
#define JSD_LOCK() ((void)0)
#define JSD_UNLOCK() ((void)0)
#define JSD_INIT_LOCKS(jsdc) 1
#define JSD_LOCK_SCRIPTS(jsdc) ((void)0)
#define JSD_UNLOCK_SCRIPTS(jsdc) ((void)0)
#define JSD_LOCK_SOURCE_TEXT(jsdc) ((void)0)
#define JSD_UNLOCK_SOURCE_TEXT(jsdc) ((void)0)
#define JSD_LOCK_ATOMS(jsdc) ((void)0)
#define JSD_UNLOCK_ATOMS(jsdc) ((void)0)
#define JSD_LOCK_OBJECTS(jsdc) ((void)0)
#define JSD_UNLOCK_OBJECTS(jsdc) ((void)0)
#define JSD_LOCK_THREADSTATES(jsdc) ((void)0)
#define JSD_UNLOCK_THREADSTATES(jsdc) ((void)0)
#endif /* JSD_THREADSAFE */
/* NOTE: These are intended for ASSERTs. Thus we supply checks for both
* LOCKED and UNLOCKED (rather that just LOCKED and !LOCKED) so that in
* the DEBUG non-Threadsafe case we can have an ASSERT that always succeeds
* without having to special case things in the code.
*/
#if defined(JSD_THREADSAFE) && defined(DEBUG)
#define JSD_SCRIPTS_LOCKED(jsdc) (jsd_IsLocked(jsdc->scriptsLock))
#define JSD_SOURCE_TEXT_LOCKED(jsdc) (jsd_IsLocked(jsdc->sourceTextLock))
#define JSD_ATOMS_LOCKED(jsdc) (jsd_IsLocked(jsdc->atomsLock))
#define JSD_OBJECTS_LOCKED(jsdc) (jsd_IsLocked(jsdc->objectsLock))
#define JSD_THREADSTATES_LOCKED(jsdc) (jsd_IsLocked(jsdc->threadStatesLock))
#define JSD_SCRIPTS_UNLOCKED(jsdc) (!jsd_IsLocked(jsdc->scriptsLock))
#define JSD_SOURCE_TEXT_UNLOCKED(jsdc) (!jsd_IsLocked(jsdc->sourceTextLock))
#define JSD_ATOMS_UNLOCKED(jsdc) (!jsd_IsLocked(jsdc->atomsLock))
#define JSD_OBJECTS_UNLOCKED(jsdc) (!jsd_IsLocked(jsdc->objectsLock))
#define JSD_THREADSTATES_UNLOCKED(jsdc) (!jsd_IsLocked(jsdc->threadStatesLock))
#else
#define JSD_SCRIPTS_LOCKED(jsdc) 1
#define JSD_SOURCE_TEXT_LOCKED(jsdc) 1
#define JSD_ATOMS_LOCKED(jsdc) 1
#define JSD_OBJECTS_LOCKED(jsdc) 1
#define JSD_THREADSTATES_LOCKED(jsdc) 1
#define JSD_SCRIPTS_UNLOCKED(jsdc) 1
#define JSD_SOURCE_TEXT_UNLOCKED(jsdc) 1
#define JSD_ATOMS_UNLOCKED(jsdc) 1
#define JSD_OBJECTS_UNLOCKED(jsdc) 1
#define JSD_THREADSTATES_UNLOCKED(jsdc) 1
#endif /* defined(JSD_THREADSAFE) && defined(DEBUG) */
/***************************************************************************/
/* Threading support */
#ifdef JSD_THREADSAFE
#define JSD_CURRENT_THREAD() jsd_CurrentThread()
#else /* !JSD_THREADSAFE */
#define JSD_CURRENT_THREAD() ((void*)0)
#endif /* JSD_THREADSAFE */
/***************************************************************************/
/* Dangerous thread support */
#ifdef JSD_HAS_DANGEROUS_THREAD
#define JSD_IS_DANGEROUS_THREAD(jsdc) \
(JSD_CURRENT_THREAD() == jsdc->dangerousThread)
#else /* !JSD_HAS_DANGEROUS_THREAD */
#define JSD_IS_DANGEROUS_THREAD(jsdc) 0
#endif /* JSD_HAS_DANGEROUS_THREAD */
/***************************************************************************/
/* Value and Property Functions */
extern JSDValue*
jsd_NewValue(JSDContext* jsdc, jsval val);
extern void
jsd_DropValue(JSDContext* jsdc, JSDValue* jsdval);
extern jsval
jsd_GetValueWrappedJSVal(JSDContext* jsdc, JSDValue* jsdval);
extern void
jsd_RefreshValue(JSDContext* jsdc, JSDValue* jsdval);
/**************************************************/
extern JSBool
jsd_IsValueObject(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueNumber(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueInt(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueDouble(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueString(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueBoolean(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueNull(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueVoid(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValuePrimitive(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueFunction(JSDContext* jsdc, JSDValue* jsdval);
extern JSBool
jsd_IsValueNative(JSDContext* jsdc, JSDValue* jsdval);
/**************************************************/
extern JSBool
jsd_GetValueBoolean(JSDContext* jsdc, JSDValue* jsdval);
extern int32
jsd_GetValueInt(JSDContext* jsdc, JSDValue* jsdval);
extern jsdouble*
jsd_GetValueDouble(JSDContext* jsdc, JSDValue* jsdval);
extern JSString*
jsd_GetValueString(JSDContext* jsdc, JSDValue* jsdval);
extern const char*
jsd_GetValueFunctionName(JSDContext* jsdc, JSDValue* jsdval);
/**************************************************/
extern uintN
jsd_GetCountOfProperties(JSDContext* jsdc, JSDValue* jsdval);
extern JSDProperty*
jsd_IterateProperties(JSDContext* jsdc, JSDValue* jsdval, JSDProperty **iterp);
extern JSDProperty*
jsd_GetValueProperty(JSDContext* jsdc, JSDValue* jsdval, JSString* name);
extern JSDValue*
jsd_GetValuePrototype(JSDContext* jsdc, JSDValue* jsdval);
extern JSDValue*
jsd_GetValueParent(JSDContext* jsdc, JSDValue* jsdval);
extern JSDValue*
jsd_GetValueConstructor(JSDContext* jsdc, JSDValue* jsdval);
extern const char*
jsd_GetValueClassName(JSDContext* jsdc, JSDValue* jsdval);
/**************************************************/
extern void
jsd_DropProperty(JSDContext* jsdc, JSDProperty* jsdprop);
extern JSDValue*
jsd_GetPropertyName(JSDContext* jsdc, JSDProperty* jsdprop);
extern JSDValue*
jsd_GetPropertyValue(JSDContext* jsdc, JSDProperty* jsdprop);
extern JSDValue*
jsd_GetPropertyAlias(JSDContext* jsdc, JSDProperty* jsdprop);
extern uintN
jsd_GetPropertyFlags(JSDContext* jsdc, JSDProperty* jsdprop);
extern uintN
jsd_GetPropertyVarArgSlot(JSDContext* jsdc, JSDProperty* jsdprop);
/**************************************************/
/* Stepping Functions */
extern void * JS_DLL_CALLBACK
jsd_InterpreterHook(JSContext *cx, JSStackFrame *fp, JSBool before,
JSBool *ok, void *closure);
/**************************************************/
/* Object Functions */
extern JSBool
jsd_InitObjectManager(JSDContext* jsdc);
extern void
jsd_DestroyObjectManager(JSDContext* jsdc);
extern void JS_DLL_CALLBACK
jsd_ObjectHook(JSContext *cx, JSObject *obj, JSBool isNew, void *closure);
extern void
jsd_Constructing(JSDContext* jsdc, JSContext *cx, JSObject *obj,
JSStackFrame *fp);
extern JSDObject*
jsd_IterateObjects(JSDContext* jsdc, JSDObject** iterp);
extern JSObject*
jsd_GetWrappedObject(JSDContext* jsdc, JSDObject* jsdobj);
extern const char*
jsd_GetObjectNewURL(JSDContext* jsdc, JSDObject* jsdobj);
extern uintN
jsd_GetObjectNewLineNumber(JSDContext* jsdc, JSDObject* jsdobj);
extern const char*
jsd_GetObjectConstructorURL(JSDContext* jsdc, JSDObject* jsdobj);
extern uintN
jsd_GetObjectConstructorLineNumber(JSDContext* jsdc, JSDObject* jsdobj);
extern const char*
jsd_GetObjectConstructorName(JSDContext* jsdc, JSDObject* jsdobj);
extern JSDObject*
jsd_GetJSDObjectForJSObject(JSDContext* jsdc, JSObject* jsobj);
extern JSDObject*
jsd_GetObjectForValue(JSDContext* jsdc, JSDValue* jsdval);
/*
* returns new refcounted JSDValue
*/
extern JSDValue*
jsd_GetValueForObject(JSDContext* jsdc, JSDObject* jsdobj);
/**************************************************/
/* Atom Functions */
extern JSBool
jsd_CreateAtomTable(JSDContext* jsdc);
extern void
jsd_DestroyAtomTable(JSDContext* jsdc);
extern JSDAtom*
jsd_AddAtom(JSDContext* jsdc, const char* str);
extern JSDAtom*
jsd_CloneAtom(JSDContext* jsdc, JSDAtom* atom);
extern void
jsd_DropAtom(JSDContext* jsdc, JSDAtom* atom);
#define JSD_ATOM_TO_STRING(a) ((const char*)((a)->str))
/***************************************************************************/
/* Livewire specific API */
#ifdef LIVEWIRE
extern LWDBGScript*
jsdlw_GetLWScript(JSDContext* jsdc, JSDScript* jsdscript);
extern char*
jsdlw_BuildAppRelativeFilename(LWDBGApp* app, const char* filename);
extern JSDSourceText*
jsdlw_PreLoadSource(JSDContext* jsdc, LWDBGApp* app,
const char* filename, JSBool clear);
extern JSDSourceText*
jsdlw_ForceLoadSource(JSDContext* jsdc, JSDSourceText* jsdsrc);
extern JSBool
jsdlw_UserCodeAtPC(JSDContext* jsdc, JSDScript* jsdscript, jsuword pc);
extern JSBool
jsdlw_RawToProcessedLineNumber(JSDContext* jsdc, JSDScript* jsdscript,
uintN lineIn, uintN* lineOut);
extern JSBool
jsdlw_ProcessedToRawLineNumber(JSDContext* jsdc, JSDScript* jsdscript,
uintN lineIn, uintN* lineOut);
#if 0
/* our hook proc for LiveWire app start/stop */
extern void JS_DLL_CALLBACK
jsdlw_AppHookProc(LWDBGApp* app,
JSBool created,
void *callerdata);
#endif
#endif
/***************************************************************************/
JS_END_EXTERN_C
#endif /* jsd_h___ */

70
mozilla/js/jsd/jsd.mak Normal file
View File

@@ -0,0 +1,70 @@
PROJ = jsd
JSD = .
JS = $(JSD)\..\src
JSPROJ = js32
!IF "$(BUILD_OPT)" != ""
OBJ = Release
CC_FLAGS = /DNDEBUG
!ELSE
OBJ = Debug
CC_FLAGS = /DDEBUG
LINK_FLAGS = /DEBUG
!ENDIF
QUIET=@
CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\
/I $(JS)\
/I $(JSD)\
/DDEBUG /DWIN32 /D_CONSOLE /DXP_PC /D_WINDOWS /D_WIN32\
/DJSDEBUGGER\
!IF "$(JSD_THREADSAFE)" != ""
/DJSD_THREADSAFE\
!ENDIF
/DEXPORT_JSD_API\
$(CC_FLAGS)\
/c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $<
LFLAGS = /nologo /subsystem:console /DLL /incremental:no /machine:I386 \
$(LINK_FLAGS) /pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).dll
LLIBS = kernel32.lib advapi32.lib $(JS)\$(OBJ)\$(JSPROJ).lib
# unused... user32.lib gdi32.lib winspool.lib comdlg32.lib shell32.lib
CPP=cl.exe
LINK32=link.exe
all: $(OBJ) $(OBJ)\$(PROJ).dll
$(OBJ)\$(PROJ).dll: \
$(OBJ)\jsdebug.obj \
$(OBJ)\jsd_atom.obj \
$(OBJ)\jsd_high.obj \
$(OBJ)\jsd_hook.obj \
$(OBJ)\jsd_obj.obj \
$(OBJ)\jsd_scpt.obj \
$(OBJ)\jsd_stak.obj \
$(OBJ)\jsd_step.obj \
$(OBJ)\jsd_text.obj \
$(OBJ)\jsd_lock.obj \
$(OBJ)\jsd_val.obj
$(QUIET)$(LINK32) $(LFLAGS) $** $(LLIBS)
{$(JSD)}.c{$(OBJ)}.obj :
$(QUIET)$(CPP) $(CFLAGS)
$(OBJ) :
$(QUIET)mkdir $(OBJ)
clean:
@echo deleting old output
$(QUIET)del $(OBJ)\*.pch >NUL
$(QUIET)del $(OBJ)\*.obj >NUL
$(QUIET)del $(OBJ)\*.exp >NUL
$(QUIET)del $(OBJ)\*.lib >NUL
$(QUIET)del $(OBJ)\*.idb >NUL
$(QUIET)del $(OBJ)\*.pdb >NUL
$(QUIET)del $(OBJ)\*.dll >NUL

View File

@@ -0,0 +1,89 @@
; -*- Mode: Fundamental; tab-width: 4; indent-tabs-mode: nil -*-
;
; The contents of this file are subject to the Netscape Public License
; Version 1.0 (the "NPL"); you may not use this file except in
; compliance with the NPL. You may obtain a copy of the NPL at
; http://www.mozilla.org/NPL/
;
; Software distributed under the NPL is distributed on an "AS IS" basis,
; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
; for the specific language governing rights and limitations under the
; NPL.
;
; The Initial Developer of this code under the NPL is Netscape
; Communications Corporation. Portions created by Netscape are
; Copyright (C) 1998 Netscape Communications Corporation. All Rights
; Reserved.
LIBRARY JSD1640.DLL
EXETYPE WINDOWS
PROTMODE
DESCRIPTION 'Netscape 16-bit JavaScript Debugger Library'
CODE LOADONCALL MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE SINGLE
HEAPSIZE 8192
EXPORTS
WEP @1 RESIDENTNAME NONAME
_JSD_AppendSourceText
_JSD_ClearAllExecutionHooks
_JSD_ClearAllExecutionHooksForScript
_JSD_ClearDebugBreakHook
_JSD_ClearExecutionHook
_JSD_ClearInterruptHook
_JSD_ClearSourceText
_JSD_DebuggerOff
_JSD_DebuggerOn
_JSD_EvaluateScriptInStackFrame
_JSD_FindSourceForURL
_JSD_GetCallingStackFrame
_JSD_GetClosestLine
_JSD_GetClosestPC
_JSD_GetCountOfStackFrames
_JSD_GetDefaultJSContext
_JSD_GetMajorVersion
_JSD_GetMinorVersion
_JSD_GetPCForStackFrame
_JSD_GetScriptBaseLineNumber
_JSD_GetScriptFilename
_JSD_GetScriptForStackFrame
_JSD_GetScriptFunctionName
_JSD_GetScriptHook
_JSD_GetScriptLineExtent
_JSD_GetSourceAlterCount
_JSD_GetSourceStatus
_JSD_GetSourceText
_JSD_GetSourceURL
_JSD_GetStackFrame
_JSD_IncrementSourceAlterCount
_JSD_IsSourceDirty
_JSD_IterateScripts
_JSD_IterateSources
_JSD_LockScriptSubsystem
_JSD_LockSourceTextSubsystem
_JSD_NewSourceText
_JSD_SetDebugBreakHook
_JSD_SetErrorReporter
_JSD_SetExecutionHook
_JSD_SetInterruptHook
_JSD_SetScriptHook
_JSD_SetSourceDirty
_JSD_SetUserCallbacks
_JSD_UnlockScriptSubsystem
_JSD_UnlockSourceTextSubsystem
_Java_netscape_jsdebug_DebugController__0005fsetController_stub
_Java_netscape_jsdebug_DebugController_executeScriptInStackFrame_stub
_Java_netscape_jsdebug_DebugController_sendInterrupt_stub
_Java_netscape_jsdebug_DebugController_setInstructionHook0_stub
_Java_netscape_jsdebug_JSPC_getSourceLocation_stub
_Java_netscape_jsdebug_JSSourceTextProvider_loadSourceTextItem_stub
_Java_netscape_jsdebug_JSSourceTextProvider_refreshSourceTextVector_stub
_Java_netscape_jsdebug_JSStackFrameInfo_getCaller0_stub
_Java_netscape_jsdebug_JSStackFrameInfo_getPC_stub
_Java_netscape_jsdebug_JSThreadState_countStackFrames_stub
_Java_netscape_jsdebug_JSThreadState_getCurrentFrame_stub
_Java_netscape_jsdebug_Script_getClosestPC_stub

80
mozilla/js/jsd/jsd1640.rc Normal file
View File

@@ -0,0 +1,80 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/////////////////////////////////////////////////////////////////////////////
// Version stamp for this .DLL
#include <windows.h>
#include <ver.h>
VS_VERSION_INFO VERSIONINFO
FILEVERSION 4 // major, minor, release (alpha 1), build #
PRODUCTVERSION 4
FILEFLAGSMASK 0
FILEFLAGS 0 // final version
FILEOS VOS_DOS_WINDOWS16
FILETYPE VFT_DLL
FILESUBTYPE 0 // not used
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual
BEGIN
VALUE "CompanyName", "Netscape Communications Corporation\0"
VALUE "FileDescription", "Netscape 16-bit JavaScript Debugger Module\0"
VALUE "FileVersion", "4.0\0"
VALUE "InternalName", "JSD1640\0"
VALUE "LegalCopyright", "Copyright Netscape Communications. 1994-96\0"
VALUE "LegalTrademarks", "Netscape, Mozilla\0"
VALUE "OriginalFilename","JSD1640.DLL\0"
VALUE "ProductName", "NETSCAPE\0"
VALUE "ProductVersion", "4.0\0"
END
END
END

99
mozilla/js/jsd/jsd3240.rc Normal file
View File

@@ -0,0 +1,99 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winver.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,0,0,0
PRODUCTVERSION 4,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x10004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "Netscape Communications Corporation\0"
VALUE "FileDescription", "Netscape 32-bit JavaScript Debugger Module\0"
VALUE "FileVersion", "4.0\0"
VALUE "InternalName", "JSD3240\0"
VALUE "LegalCopyright", "Copyright Netscape Communications. 1994-96\0"
VALUE "LegalTrademarks", "Netscape, Mozilla\0"
VALUE "OriginalFilename", "jsd3240.dll\0"
VALUE "ProductName", "NETSCAPE\0"
VALUE "ProductVersion", "4.0\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""winver.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////

159
mozilla/js/jsd/jsd_atom.c Normal file
View File

@@ -0,0 +1,159 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Atom support
*/
#include "jsd.h"
/* #define TEST_ATOMS 1 */
#ifdef TEST_ATOMS
static void
_testAtoms(JSDContext*jsdc)
{
JSDAtom* atom0 = jsd_AddAtom(jsdc, "foo");
JSDAtom* atom1 = jsd_AddAtom(jsdc, "foo");
JSDAtom* atom2 = jsd_AddAtom(jsdc, "bar");
JSDAtom* atom3 = jsd_CloneAtom(jsdc, atom1);
JSDAtom* atom4 = jsd_CloneAtom(jsdc, atom2);
const char* c0 = JSD_ATOM_TO_STRING(atom0);
const char* c1 = JSD_ATOM_TO_STRING(atom1);
const char* c2 = JSD_ATOM_TO_STRING(atom2);
const char* c3 = JSD_ATOM_TO_STRING(atom3);
const char* c4 = JSD_ATOM_TO_STRING(atom4);
jsd_DropAtom(jsdc, atom0);
jsd_DropAtom(jsdc, atom1);
jsd_DropAtom(jsdc, atom2);
jsd_DropAtom(jsdc, atom3);
jsd_DropAtom(jsdc, atom4);
}
#endif
JS_STATIC_DLL_CALLBACK(intN)
_atom_smasher(JSHashEntry *he, intN i, void *arg)
{
JS_ASSERT(he);
JS_ASSERT(he->value);
JS_ASSERT(((JSDAtom*)(he->value))->str);
free(((JSDAtom*)(he->value))->str);
free(he->value);
he->value = NULL;
he->key = NULL;
return HT_ENUMERATE_NEXT;
}
JS_STATIC_DLL_CALLBACK(intN)
_compareAtomKeys(const void *v1, const void *v2)
{
return 0 == strcmp((const char*)v1, (const char*)v2);
}
JS_STATIC_DLL_CALLBACK(intN)
_compareAtoms(const void *v1, const void *v2)
{
return 0 == strcmp(((JSDAtom*)v1)->str, ((JSDAtom*)v2)->str);
}
JSBool
jsd_CreateAtomTable(JSDContext* jsdc)
{
jsdc->atoms = JS_NewHashTable(256, JS_HashString,
_compareAtomKeys, _compareAtoms,
NULL, NULL);
#ifdef TEST_ATOMS
_testAtoms(jsdc);
#endif
return (JSBool) jsdc->atoms;
}
void
jsd_DestroyAtomTable(JSDContext* jsdc)
{
if( jsdc->atoms )
{
JS_HashTableEnumerateEntries(jsdc->atoms, _atom_smasher, NULL);
JS_HashTableDestroy(jsdc->atoms);
jsdc->atoms = NULL;
}
}
JSDAtom*
jsd_AddAtom(JSDContext* jsdc, const char* str)
{
JSDAtom* atom;
if(!str)
{
JS_ASSERT(0);
return NULL;
}
JSD_LOCK_ATOMS(jsdc);
atom = (JSDAtom*) JS_HashTableLookup(jsdc->atoms, str);
if( atom )
atom->refcount++;
else
{
atom = (JSDAtom*) malloc(sizeof(JSDAtom));
if( atom )
{
atom->str = strdup(str);
atom->refcount = 1;
if(!JS_HashTableAdd(jsdc->atoms, atom->str, atom))
{
free(atom->str);
free(atom);
atom = NULL;
}
}
}
JSD_UNLOCK_ATOMS(jsdc);
return atom;
}
JSDAtom*
jsd_CloneAtom(JSDContext* jsdc, JSDAtom* atom)
{
JSD_LOCK_ATOMS(jsdc);
atom->refcount++;
JSD_UNLOCK_ATOMS(jsdc);
return atom;
}
void
jsd_DropAtom(JSDContext* jsdc, JSDAtom* atom)
{
JSD_LOCK_ATOMS(jsdc);
if(! --atom->refcount)
{
JS_HashTableRemove(jsdc->atoms, atom->str);
free(atom->str);
free(atom);
}
JSD_UNLOCK_ATOMS(jsdc);
}

348
mozilla/js/jsd/jsd_high.c Normal file
View File

@@ -0,0 +1,348 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - 'High Level' functions
*/
#include "jsd.h"
/***************************************************************************/
/* XXX not 'static' because of old Mac CodeWarrior bug */
JSCList _jsd_context_list = JS_INIT_STATIC_CLIST(&_jsd_context_list);
/* these are used to connect JSD_SetUserCallbacks() with JSD_DebuggerOn() */
static JSD_UserCallbacks _callbacks;
static void* _user = NULL;
static JSRuntime* _jsrt = NULL;
#ifdef JSD_HAS_DANGEROUS_THREAD
static void* _dangerousThread = NULL;
#endif
#ifdef JSD_THREADSAFE
void* _jsd_global_lock = NULL;
#endif
#ifdef DEBUG
void JSD_ASSERT_VALID_CONTEXT(JSDContext* jsdc)
{
JS_ASSERT(jsdc->inited);
JS_ASSERT(jsdc->jsrt);
JS_ASSERT(jsdc->dumbContext);
JS_ASSERT(jsdc->glob);
}
#endif
static JSClass global_class = {
"JSDGlobal", 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub
};
static JSBool
_validateUserCallbacks(JSD_UserCallbacks* callbacks)
{
return !callbacks ||
(callbacks->size && callbacks->size <= sizeof(JSD_UserCallbacks));
}
static JSDContext*
_newJSDContext(JSRuntime* jsrt,
JSD_UserCallbacks* callbacks,
void* user)
{
JSDContext* jsdc = NULL;
if( ! jsrt )
return NULL;
if( ! _validateUserCallbacks(callbacks) )
return NULL;
jsdc = (JSDContext*) calloc(1, sizeof(JSDContext));
if( ! jsdc )
goto label_newJSDContext_failure;
if( ! JSD_INIT_LOCKS(jsdc) )
goto label_newJSDContext_failure;
JS_INIT_CLIST(&jsdc->links);
jsdc->jsrt = jsrt;
if( callbacks )
memcpy(&jsdc->userCallbacks, callbacks, callbacks->size);
jsdc->user = user;
#ifdef JSD_HAS_DANGEROUS_THREAD
jsdc->dangerousThread = _dangerousThread;
#endif
JS_INIT_CLIST(&jsdc->threadsStates);
JS_INIT_CLIST(&jsdc->scripts);
JS_INIT_CLIST(&jsdc->sources);
JS_INIT_CLIST(&jsdc->removedSources);
jsdc->sourceAlterCount = 1;
if( ! jsd_CreateAtomTable(jsdc) )
goto label_newJSDContext_failure;
if( ! jsd_InitObjectManager(jsdc) )
goto label_newJSDContext_failure;
jsdc->dumbContext = JS_NewContext(jsdc->jsrt, 256);
if( ! jsdc->dumbContext )
goto label_newJSDContext_failure;
jsdc->glob = JS_NewObject(jsdc->dumbContext, &global_class, NULL, NULL);
if( ! jsdc->glob )
goto label_newJSDContext_failure;
if( ! JS_InitStandardClasses(jsdc->dumbContext, jsdc->glob) )
goto label_newJSDContext_failure;
jsdc->inited = JS_TRUE;
JSD_LOCK();
JS_INSERT_LINK(&jsdc->links, &_jsd_context_list);
JSD_UNLOCK();
return jsdc;
label_newJSDContext_failure:
jsd_DestroyObjectManager(jsdc);
jsd_DestroyAtomTable(jsdc);
if( jsdc )
free(jsdc);
return NULL;
}
static void
_destroyJSDContext(JSDContext* jsdc)
{
JSD_ASSERT_VALID_CONTEXT(jsdc);
JSD_LOCK();
JS_REMOVE_LINK(&jsdc->links);
JSD_UNLOCK();
jsd_DestroyObjectManager(jsdc);
jsd_DestroyAtomTable(jsdc);
jsdc->inited = JS_FALSE;
/*
* We should free jsdc here, but we let it leak in case there are any
* asynchronous hooks calling into the system using it as a handle
*
* XXX we also leak the locks
*/
}
/***************************************************************************/
JSDContext*
jsd_DebuggerOnForUser(JSRuntime* jsrt,
JSD_UserCallbacks* callbacks,
void* user)
{
JSDContext* jsdc;
JSContext* iter = NULL;
jsdc = _newJSDContext(jsrt, callbacks, user);
if( ! jsdc )
return NULL;
/* set hooks here */
JS_SetNewScriptHookProc(jsdc->jsrt, jsd_NewScriptHookProc, jsdc);
JS_SetDestroyScriptHookProc(jsdc->jsrt, jsd_DestroyScriptHookProc, jsdc);
JS_SetDebuggerHandler(jsdc->jsrt, jsd_DebuggerHandler, jsdc);
JS_SetExecuteHook(jsdc->jsrt, jsd_InterpreterHook, jsdc);
JS_SetCallHook(jsdc->jsrt, jsd_InterpreterHook, jsdc);
JS_SetObjectHook(jsdc->jsrt, jsd_ObjectHook, jsdc);
JS_SetThrowHook(jsdc->jsrt, jsd_ThrowHandler, jsdc);
JS_SetDebugErrorHook(jsdc->jsrt, jsd_DebugErrorHook, jsdc);
#ifdef LIVEWIRE
LWDBG_SetNewScriptHookProc(jsd_NewScriptHookProc, jsdc);
#endif
if( jsdc->userCallbacks.setContext )
jsdc->userCallbacks.setContext(jsdc, jsdc->user);
return jsdc;
}
JSDContext*
jsd_DebuggerOn(void)
{
JS_ASSERT(_jsrt);
JS_ASSERT(_validateUserCallbacks(&_callbacks));
return jsd_DebuggerOnForUser(_jsrt, &_callbacks, _user);
}
void
jsd_DebuggerOff(JSDContext* jsdc)
{
/* clear hooks here */
JS_SetNewScriptHookProc(jsdc->jsrt, NULL, NULL);
JS_SetDestroyScriptHookProc(jsdc->jsrt, NULL, NULL);
JS_SetDebuggerHandler(jsdc->jsrt, NULL, NULL);
JS_SetExecuteHook(jsdc->jsrt, NULL, NULL);
JS_SetCallHook(jsdc->jsrt, NULL, NULL);
JS_SetObjectHook(jsdc->jsrt, NULL, NULL);
JS_SetThrowHook(jsdc->jsrt, NULL, NULL);
JS_SetDebugErrorHook(jsdc->jsrt, NULL, NULL);
#ifdef LIVEWIRE
LWDBG_SetNewScriptHookProc(NULL,NULL);
#endif
/* clean up */
jsd_DestroyAllJSDScripts(jsdc);
jsd_DestroyAllSources(jsdc);
_destroyJSDContext(jsdc);
if( jsdc->userCallbacks.setContext )
jsdc->userCallbacks.setContext(NULL, jsdc->user);
}
void
jsd_SetUserCallbacks(JSRuntime* jsrt, JSD_UserCallbacks* callbacks, void* user)
{
_jsrt = jsrt;
_user = user;
#ifdef JSD_HAS_DANGEROUS_THREAD
_dangerousThread = JSD_CURRENT_THREAD();
#endif
if( callbacks )
memcpy(&_callbacks, callbacks, sizeof(JSD_UserCallbacks));
else
memset(&_callbacks, 0 , sizeof(JSD_UserCallbacks));
}
JSDContext*
jsd_JSDContextForJSContext(JSContext* context)
{
JSDContext* iter;
JSDContext* jsdc = NULL;
JSRuntime* runtime = JS_GetRuntime(context);
JSD_LOCK();
for( iter = (JSDContext*)_jsd_context_list.next;
iter != (JSDContext*)&_jsd_context_list;
iter = (JSDContext*)iter->links.next )
{
if( runtime == iter->jsrt )
{
jsdc = iter;
break;
}
}
JSD_UNLOCK();
return jsdc;
}
JS_STATIC_DLL_CALLBACK(JSBool)
jsd_DebugErrorHook(JSContext *cx, const char *message,
JSErrorReport *report, void *closure)
{
JSDContext* jsdc = (JSDContext*) closure;
JSD_ErrorReporter errorReporter;
void* errorReporterData;
if( ! jsdc )
{
JS_ASSERT(0);
return JS_TRUE;
}
if( JSD_IS_DANGEROUS_THREAD(jsdc) )
return JS_TRUE;
/* local in case hook gets cleared on another thread */
JSD_LOCK();
errorReporter = jsdc->errorReporter;
errorReporterData = jsdc->errorReporterData;
JSD_UNLOCK();
if(!errorReporter)
return JS_TRUE;
switch(errorReporter(jsdc, cx, message, report, errorReporterData))
{
case JSD_ERROR_REPORTER_PASS_ALONG:
return JS_TRUE;
case JSD_ERROR_REPORTER_RETURN:
return JS_FALSE;
case JSD_ERROR_REPORTER_DEBUG:
{
jsval rval;
JSD_ExecutionHookProc hook;
void* hookData;
/* local in case hook gets cleared on another thread */
JSD_LOCK();
hook = jsdc->debugBreakHook;
hookData = jsdc->debugBreakHookData;
JSD_UNLOCK();
jsd_CallExecutionHook(jsdc, cx, JSD_HOOK_DEBUG_REQUESTED,
hook, hookData, &rval);
/* XXX Should make this dependent on ExecutionHook retval */
return JS_TRUE;
}
case JSD_ERROR_REPORTER_CLEAR_RETURN:
if(report && JSREPORT_IS_EXCEPTION(report->flags))
JS_ClearPendingException(cx);
return JS_FALSE;
default:
JS_ASSERT(0);
break;
}
return JS_TRUE;
}
JSBool
jsd_SetErrorReporter(JSDContext* jsdc,
JSD_ErrorReporter reporter,
void* callerdata)
{
JSD_LOCK();
jsdc->errorReporter = reporter;
jsdc->errorReporterData = callerdata;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_GetErrorReporter(JSDContext* jsdc,
JSD_ErrorReporter* reporter,
void** callerdata)
{
JSD_LOCK();
if( reporter )
*reporter = jsdc->errorReporter;
if( callerdata )
*callerdata = jsdc->errorReporterData;
JSD_UNLOCK();
return JS_TRUE;
}

260
mozilla/js/jsd/jsd_hook.c Normal file
View File

@@ -0,0 +1,260 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Hook support
*/
#include "jsd.h"
JSTrapStatus JS_DLL_CALLBACK
jsd_InterruptHandler(JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval,
void *closure)
{
JSDScript* jsdscript;
JSDContext* jsdc = (JSDContext*) closure;
JSD_ExecutionHookProc hook;
void* hookData;
if( ! jsdc || ! jsdc->inited )
return JSTRAP_CONTINUE;
if( JSD_IS_DANGEROUS_THREAD(jsdc) )
return JSTRAP_CONTINUE;
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
JSD_UNLOCK_SCRIPTS(jsdc);
if( ! jsdscript )
return JSTRAP_CONTINUE;
#ifdef LIVEWIRE
if( ! jsdlw_UserCodeAtPC(jsdc, jsdscript, (jsuword)pc) )
return JSTRAP_CONTINUE;
#endif
/* local in case jsdc->interruptHook gets cleared on another thread */
JSD_LOCK();
hook = jsdc->interruptHook;
hookData = jsdc->interruptHookData;
JSD_UNLOCK();
return jsd_CallExecutionHook(jsdc, cx, JSD_HOOK_INTERRUPTED,
hook, hookData, rval);
}
JSTrapStatus JS_DLL_CALLBACK
jsd_DebuggerHandler(JSContext *cx, JSScript *script, jsbytecode *pc,
jsval *rval, void *closure)
{
JSDScript* jsdscript;
JSDContext* jsdc = (JSDContext*) closure;
JSD_ExecutionHookProc hook;
void* hookData;
if( ! jsdc || ! jsdc->inited )
return JSTRAP_CONTINUE;
if( JSD_IS_DANGEROUS_THREAD(jsdc) )
return JSTRAP_CONTINUE;
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
JSD_UNLOCK_SCRIPTS(jsdc);
if( ! jsdscript )
return JSTRAP_CONTINUE;
/* local in case jsdc->debuggerHook gets cleared on another thread */
JSD_LOCK();
hook = jsdc->debuggerHook;
hookData = jsdc->debuggerHookData;
JSD_UNLOCK();
return jsd_CallExecutionHook(jsdc, cx, JSD_HOOK_DEBUGGER_KEYWORD,
hook, hookData, rval);
}
JSTrapStatus JS_DLL_CALLBACK
jsd_ThrowHandler(JSContext *cx, JSScript *script, jsbytecode *pc,
jsval *rval, void *closure)
{
JSDScript* jsdscript;
JSDContext* jsdc = (JSDContext*) closure;
JSD_ExecutionHookProc hook;
void* hookData;
JS_GetPendingException(cx, rval);
if( ! jsdc || ! jsdc->inited )
return JSD_HOOK_RETURN_CONTINUE_THROW;
if( JSD_IS_DANGEROUS_THREAD(jsdc) )
return JSD_HOOK_RETURN_CONTINUE_THROW;
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
JSD_UNLOCK_SCRIPTS(jsdc);
if( ! jsdscript )
return JSD_HOOK_RETURN_CONTINUE_THROW;
/* local in case jsdc->throwHook gets cleared on another thread */
JSD_LOCK();
hook = jsdc->throwHook;
hookData = jsdc->throwHookData;
JSD_UNLOCK();
return jsd_CallExecutionHook(jsdc, cx, JSD_HOOK_THROW,
hook, hookData, rval);
}
JSTrapStatus
jsd_CallExecutionHook(JSDContext* jsdc,
JSContext *cx,
uintN type,
JSD_ExecutionHookProc hook,
void* hookData,
jsval* rval)
{
uintN hookanswer = JSD_HOOK_THROW == type ?
JSD_HOOK_RETURN_CONTINUE_THROW :
JSD_HOOK_RETURN_CONTINUE;
JSDThreadState* jsdthreadstate;
if(hook && NULL != (jsdthreadstate = jsd_NewThreadState(jsdc,cx)))
{
hookanswer = hook(jsdc, jsdthreadstate, type, hookData, rval);
jsd_DestroyThreadState(jsdc, jsdthreadstate);
}
switch(hookanswer)
{
case JSD_HOOK_RETURN_ABORT:
case JSD_HOOK_RETURN_HOOK_ERROR:
return JSTRAP_ERROR;
case JSD_HOOK_RETURN_RET_WITH_VAL:
return JSTRAP_RETURN;
case JSD_HOOK_RETURN_THROW_WITH_VAL:
return JSTRAP_THROW;
case JSD_HOOK_RETURN_CONTINUE:
break;
case JSD_HOOK_RETURN_CONTINUE_THROW:
/* only makes sense for jsd_ThrowHandler (which init'd rval) */
JS_ASSERT(JSD_HOOK_THROW == type);
return JSTRAP_THROW;
default:
JS_ASSERT(0);
break;
}
return JSTRAP_CONTINUE;
}
JSBool
jsd_SetInterruptHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata)
{
JSD_LOCK();
jsdc->interruptHookData = callerdata;
jsdc->interruptHook = hook;
JS_SetInterrupt(jsdc->jsrt, jsd_InterruptHandler, (void*) jsdc);
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_ClearInterruptHook(JSDContext* jsdc)
{
JSD_LOCK();
JS_ClearInterrupt(jsdc->jsrt, NULL, NULL );
jsdc->interruptHook = NULL;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_SetDebugBreakHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata)
{
JSD_LOCK();
jsdc->debugBreakHookData = callerdata;
jsdc->debugBreakHook = hook;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_ClearDebugBreakHook(JSDContext* jsdc)
{
JSD_LOCK();
jsdc->debugBreakHook = NULL;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_SetDebuggerHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata)
{
JSD_LOCK();
jsdc->debuggerHookData = callerdata;
jsdc->debuggerHook = hook;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_ClearDebuggerHook(JSDContext* jsdc)
{
JSD_LOCK();
jsdc->debuggerHook = NULL;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_SetThrowHook(JSDContext* jsdc,
JSD_ExecutionHookProc hook,
void* callerdata)
{
JSD_LOCK();
jsdc->throwHookData = callerdata;
jsdc->throwHook = hook;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_ClearThrowHook(JSDContext* jsdc)
{
JSD_LOCK();
jsdc->throwHook = NULL;
JSD_UNLOCK();
return JS_TRUE;
}

801
mozilla/js/jsd/jsd_java.c Normal file
View File

@@ -0,0 +1,801 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* this is all going away... replaced by code in js/jsd/java */
#if 0
#include "native.h"
#include "jsdebug.h"
#ifndef XP_MAC
#include "_gen/netscape_jsdebug_DebugController.h"
#include "_gen/netscape_jsdebug_Script.h"
#include "_gen/netscape_jsdebug_JSThreadState.h"
#include "_gen/netscape_jsdebug_JSStackFrameInfo.h"
#include "_gen/netscape_jsdebug_JSPC.h"
#include "_gen/netscape_jsdebug_JSSourceTextProvider.h"
#include "_gen/netscape_jsdebug_JSErrorReporter.h"
#else
#include "n_jsdebug_DebugController.h"
#include "netscape_jsdebug_Script.h"
#include "n_jsdebug_JSThreadState.h"
#include "n_jsdebug_JSStackFrameInfo.h"
#include "netscape_jsdebug_JSPC.h"
#include "n_j_JSSourceTextProvider.h"
#include "n_jsdebug_JSErrorReporter.h"
#endif
static JSDContext* context = 0;
static struct Hnetscape_jsdebug_DebugController* controller = 0;
/***************************************************************************/
/* helpers */
static JHandle*
_constructInteger(ExecEnv *ee, long i)
{
return (JHandle*)
execute_java_constructor(ee, "java/lang/Integer", 0, "(I)", i);
}
static JHandle*
_putHash(ExecEnv *ee, JHandle* tbl, JHandle* key, JHandle* ob)
{
return (JHandle*)
execute_java_dynamic_method(
ee, tbl, "put",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",
key, ob );
}
static JHandle*
_getHash(ExecEnv *ee, JHandle* tbl, JHandle* key)
{
return (JHandle*)
execute_java_dynamic_method(
ee, tbl, "get",
"(Ljava/lang/Object;)Ljava/lang/Object;",
key );
}
static JHandle*
_removeHash(ExecEnv *ee, JHandle* tbl, JHandle* key)
{
return (JHandle*)
execute_java_dynamic_method(
ee, tbl, "remove",
"(Ljava/lang/Object;)Ljava/lang/Object;",
key );
}
struct Hnetscape_jsdebug_JSStackFrameInfo*
_constructJSStackFrameInfo( ExecEnv* ee, JSDStackFrameInfo* jsdframe,
struct Hnetscape_jsdebug_JSThreadState* threadState )
{
struct Hnetscape_jsdebug_JSStackFrameInfo* frame;
frame = (struct Hnetscape_jsdebug_JSStackFrameInfo*)
execute_java_constructor( ee, "netscape/jsdebug/JSStackFrameInfo", 0,
"(Lnetscape/jsdebug/JSThreadState;)",
threadState );
if( ! frame )
return NULL;
/* XXX fill in additional fields */
unhand(frame)->_nativePtr = (long) jsdframe;
return frame;
}
struct Hnetscape_jsdebug_JSPC*
_constructJSPC( ExecEnv* ee, struct Hnetscape_jsdebug_Script* script, long pc )
{
struct Hnetscape_jsdebug_JSPC * pcOb;
pcOb = (struct Hnetscape_jsdebug_JSPC *)
execute_java_constructor( ee, "netscape/jsdebug/JSPC", 0,
"(Lnetscape/jsdebug/Script;I)",
script, pc );
if( ! pcOb )
return NULL;
/* XXX fill in additional fields */
return pcOb;
}
static Hnetscape_jsdebug_Script*
_scriptObFromJSDScriptPtr( ExecEnv* ee, JSDScript* jsdscript )
{
JHandle* tbl = (JHandle*) unhand(controller)->scriptTable;
JHandle* key = _constructInteger(ee,(long)jsdscript);
return (Hnetscape_jsdebug_Script*) _getHash( ee, tbl, key );
}
/***************************************************************************/
void PR_CALLBACK
_scriptHook( JSDContext* jsdc,
JSDScript* jsdscript,
JSBool creating,
void* callerdata )
{
Hnetscape_jsdebug_Script* script;
ExecEnv* ee = EE();
if( ! context || ! controller || ! ee )
return;
if( creating )
{
char* url = (char*)JSD_GetScriptFilename (jsdc, jsdscript);
char* function = (char*)JSD_GetScriptFunctionName (jsdc, jsdscript);
int base = JSD_GetScriptBaseLineNumber (jsdc, jsdscript);
int extent = JSD_GetScriptLineExtent (jsdc, jsdscript);
if( ! url )
{
return;
/* url = ""; */
}
/* create Java Object for Script */
script = (Hnetscape_jsdebug_Script*)
execute_java_constructor(ee, "netscape/jsdebug/Script", 0, "()");
if( ! script )
return;
/* set the members */
unhand(script)->_url = makeJavaString(url,strlen(url));
unhand(script)->_function = function ? makeJavaString(function,strlen(function)) : 0;
unhand(script)->_baseLineNumber = base;
unhand(script)->_lineExtent = extent;
unhand(script)->_nativePtr = (long)jsdscript;
/* add it to the hash table */
_putHash( ee, (JHandle*) unhand(controller)->scriptTable,
_constructInteger(ee, (long)jsdscript), (JHandle*)script );
/* call the hook */
if( unhand(controller)->scriptHook )
{
execute_java_dynamic_method( ee,(JHandle*)unhand(controller)->scriptHook,
"justLoadedScript",
"(Lnetscape/jsdebug/Script;)V",
script );
}
}
else
{
JHandle* tbl = (JHandle*) unhand(controller)->scriptTable;
JHandle* key = _constructInteger(ee,(long)jsdscript);
/* find Java Object for Script */
script = (Hnetscape_jsdebug_Script*) _getHash( ee, tbl, key );
if( ! script )
return;
/* remove it from the hash table */
_removeHash( ee, tbl, key );
/* call the hook */
if( unhand(controller)->scriptHook )
{
execute_java_dynamic_method( ee,(JHandle*)unhand(controller)->scriptHook,
"aboutToUnloadScript",
"(Lnetscape/jsdebug/Script;)V",
script );
}
/* set the Script as invalid */
execute_java_dynamic_method( ee,(JHandle*)script,
"_setInvalid",
"()V" );
}
}
/***************************************************************************/
PRUintn PR_CALLBACK
_executionHook( JSDContext* jsdc,
JSDThreadState* jsdstate,
PRUintn type,
void* callerdata )
{
Hnetscape_jsdebug_JSThreadState* threadState;
Hnetscape_jsdebug_Script* script;
JHandle* pcOb;
JSDStackFrameInfo* jsdframe;
JSDScript* jsdscript;
int pc;
JHandle* tblScript;
JHandle* keyScript;
ExecEnv* ee = EE();
if( ! context || ! controller || ! ee )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* get the JSDStackFrameInfo */
jsdframe = JSD_GetStackFrame(jsdc, jsdstate);
if( ! jsdframe )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* get the JSDScript */
jsdscript = JSD_GetScriptForStackFrame(jsdc, jsdstate, jsdframe);
if( ! jsdscript )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* find Java Object for Script */
tblScript = (JHandle*) unhand(controller)->scriptTable;
keyScript = _constructInteger(ee, (long)jsdscript);
script = (Hnetscape_jsdebug_Script*) _getHash( ee, tblScript, keyScript );
if( ! script )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* generate a JSPC */
pc = JSD_GetPCForStackFrame(jsdc, jsdstate, jsdframe);
pcOb = (JHandle*)
_constructJSPC(ee, script, pc);
if( ! pcOb )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* build a JSThreadState */
threadState = (struct Hnetscape_jsdebug_JSThreadState*)
execute_java_constructor( ee, "netscape/jsdebug/JSThreadState",0,"()");
if( ! threadState )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* populate the ThreadState */
/* XXX FILL IN THE REST... */
unhand(threadState)->valid = 1; /* correct value for true? */
unhand(threadState)->currentFramePtr = (long) jsdframe;
unhand(threadState)->nativeThreadState = (long) jsdstate;
unhand(threadState)->continueState = netscape_jsdebug_JSThreadState_DEBUG_STATE_RUN;
/* XXX FILL IN THE REST... */
/* find and call the appropriate Hook */
if( JSD_HOOK_INTERRUPTED == type )
{
JHandle* hook;
/* clear the JSD level hook (must reset on next sendInterrupt0()*/
JSD_ClearInterruptHook(context);
hook = (JHandle*) unhand(controller)->interruptHook;
if( ! hook )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* call the hook */
execute_java_dynamic_method(
ee, hook, "aboutToExecute",
"(Lnetscape/jsdebug/ThreadStateBase;Lnetscape/jsdebug/PC;)V",
threadState, pcOb );
}
else if( JSD_HOOK_DEBUG_REQUESTED == type )
{
JHandle* hook;
hook = (JHandle*) unhand(controller)->debugBreakHook;
if( ! hook )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* call the hook */
execute_java_dynamic_method(
ee, hook, "aboutToExecute",
"(Lnetscape/jsdebug/ThreadStateBase;Lnetscape/jsdebug/PC;)V",
threadState, pcOb );
}
else if( JSD_HOOK_BREAKPOINT == type )
{
JHandle* hook;
hook = (JHandle*)
execute_java_dynamic_method(
ee,(JHandle*)controller,
"getInstructionHook0",
"(Lnetscape/jsdebug/PC;)Lnetscape/jsdebug/InstructionHook;",
pcOb );
if( ! hook )
return JSD_HOOK_RETURN_HOOK_ERROR;
/* call the hook */
execute_java_dynamic_method(
ee, hook, "aboutToExecute",
"(Lnetscape/jsdebug/ThreadStateBase;)V",
threadState );
}
if( netscape_jsdebug_JSThreadState_DEBUG_STATE_THROW ==
unhand(threadState)->continueState )
return JSD_HOOK_RETURN_ABORT;
return JSD_HOOK_RETURN_CONTINUE;
}
PRUintn PR_CALLBACK
_errorReporter( JSDContext* jsdc,
JSContext* cx,
const char* message,
JSErrorReport* report,
void* callerdata )
{
JHandle* reporter;
JHandle* msg = NULL;
JHandle* filename = NULL;
int lineno = 0;
JHandle* linebuf = NULL;
int tokenOffset = 0;
ExecEnv* ee = EE();
if( ! context || ! controller || ! ee )
return JSD_ERROR_REPORTER_PASS_ALONG;
reporter = (JHandle*) unhand(controller)->errorReporter;
if( ! reporter )
return JSD_ERROR_REPORTER_PASS_ALONG;
if( message )
msg = (JHandle*) makeJavaString((char*)message, strlen(message));
if( report && report->filename )
filename = (JHandle*) makeJavaString((char*)report->filename, strlen(report->filename));
if( report && report->linebuf )
linebuf = (JHandle*) makeJavaString((char*)report->linebuf, strlen(report->linebuf));
if( report )
lineno = report->lineno;
if( report && report->linebuf && report->tokenptr )
tokenOffset = report->tokenptr - report->linebuf;
return (int)
execute_java_dynamic_method(
ee, reporter, "reportError",
"(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)I",
msg,
filename,
lineno,
linebuf,
tokenOffset );
}
/***************************************************************************/
/* from "_gen\netscape_jsdebug_DebugController.h" */
/* XXX HACK */
JSDContext* _simContext = 0;
void netscape_jsdebug_DebugController__setController(struct Hnetscape_jsdebug_DebugController * self,/*boolean*/ long on)
{
if(on)
{
context = JSD_DebuggerOn();
if( ! context )
return;
_simContext = context; /* XXX HACK */
unhand(self)->_nativeContext = (long) context;
controller = self;
JSD_SetScriptHook(context, _scriptHook, (void*)1 );
JSD_SetErrorReporter(context, _errorReporter, (void*)1 );
JSD_SetDebugBreakHook(context, _executionHook, (void*)1 );
}
else
{
/* XXX stop somehow... */
/* kill context */
JSD_SetDebugBreakHook(context, NULL, NULL );
JSD_SetErrorReporter(context, NULL, NULL);
JSD_SetScriptHook(context, NULL, NULL);
context = 0;
controller = 0;
}
}
void netscape_jsdebug_DebugController_setInstructionHook0(struct Hnetscape_jsdebug_DebugController * self,struct Hnetscape_jsdebug_PC * pcOb)
{
Hnetscape_jsdebug_Script* script;
JSDScript* jsdscript;
PRUintn pc;
ExecEnv* ee = EE();
if( ! context || ! controller || ! ee )
return;
script = (Hnetscape_jsdebug_Script*)
execute_java_dynamic_method(ee, (JHandle*)pcOb, "getScript","()Lnetscape/jsdebug/Script;");
if( ! script )
return;
jsdscript = (JSDScript*) unhand(script)->_nativePtr;
if( ! jsdscript )
return;
pc = (PRUintn)
execute_java_dynamic_method(ee, (JHandle*)pcOb, "getPC","()I");
JSD_SetExecutionHook(context, jsdscript, pc, _executionHook, 0);
}
void netscape_jsdebug_DebugController_sendInterrupt0(struct Hnetscape_jsdebug_DebugController * self)
{
if( ! context || ! controller )
return;
JSD_SetInterruptHook(context, _executionHook, 0);
}
struct Hjava_lang_String *netscape_jsdebug_DebugController_executeScriptInStackFrame0(struct Hnetscape_jsdebug_DebugController *self,struct Hnetscape_jsdebug_JSStackFrameInfo *frame,struct Hjava_lang_String *src,struct Hjava_lang_String *filename,long lineno)
{
struct Hnetscape_jsdebug_JSThreadState* threadStateOb;
JSDThreadState* jsdthreadstate;
JSDStackFrameInfo* jsdframe;
char* filenameC;
char* srcC;
JSString* jsstr;
jsval rval;
JSBool success;
int srclen;
threadStateOb = (struct Hnetscape_jsdebug_JSThreadState*)unhand(frame)->threadState;
jsdthreadstate = (JSDThreadState*) unhand(threadStateOb)->nativeThreadState;
jsdframe = (JSDStackFrameInfo*) unhand(frame)->_nativePtr;
if( ! context || ! controller || ! jsdframe )
return NULL;
filenameC = allocCString(filename);
if( ! filenameC )
return NULL;
srcC = allocCString(src);
if( ! srcC )
{
free(filenameC);
return NULL;
}
srclen = strlen(srcC);
success = JSD_EvaluateScriptInStackFrame(context, jsdthreadstate, jsdframe,
srcC, srclen,
filenameC, lineno, &rval);
/* XXX crashing on Windows under Symantec (though I can't see why!)*/
free(filenameC);
free(srcC);
if( ! success )
return NULL;
if( JSVAL_IS_NULL(rval) || JSVAL_IS_VOID(rval) )
return NULL;
jsstr = JSD_ValToStringInStackFrame(context,jsdthreadstate,jsdframe,rval);
if( ! jsstr )
return NULL;
/* XXXbe should use JS_GetStringChars and preserve Unicode. */
return makeJavaString((char*)JS_GetStringBytes(jsstr), JS_GetStringLength(jsstr));
}
long netscape_jsdebug_DebugController_getNativeMajorVersion(struct Hnetscape_jsdebug_DebugController* self)
{
return (long) JSD_GetMajorVersion();
}
long netscape_jsdebug_DebugController_getNativeMinorVersion(struct Hnetscape_jsdebug_DebugController* self)
{
return (long) JSD_GetMinorVersion();
}
/***************************************************************************/
/* from "_gen\netscape_jsdebug_Script.h" */
struct Hnetscape_jsdebug_JSPC *netscape_jsdebug_Script_getClosestPC(struct Hnetscape_jsdebug_Script * self,long line)
{
PRUintn pc;
JSDScript* jsdscript;
if( ! context || ! controller )
return 0;
jsdscript = (JSDScript*) unhand(self)->_nativePtr;
if( ! jsdscript )
return 0;
pc = JSD_GetClosestPC(context, jsdscript, line);
if( -1 == pc )
return 0;
return _constructJSPC( 0, self, pc);
}
/***************************************************************************/
/* from "_gen\netscape_jsdebug_JSThreadState.h" */
long netscape_jsdebug_JSThreadState_countStackFrames(struct Hnetscape_jsdebug_JSThreadState * self)
{
JSDThreadState* jsdstate;
if( ! context || ! controller )
return 0;
jsdstate = (JSDThreadState*) unhand(self)->nativeThreadState;
if( ! jsdstate )
return 0;
return (long) JSD_GetCountOfStackFrames(context, jsdstate);
}
struct Hnetscape_jsdebug_StackFrameInfo *netscape_jsdebug_JSThreadState_getCurrentFrame(struct Hnetscape_jsdebug_JSThreadState * self)
{
JSDThreadState* jsdstate;
JSDStackFrameInfo* jsdframe;
if( ! context || ! controller )
return NULL;
jsdstate = (JSDThreadState*) unhand(self)->nativeThreadState;
if( ! jsdstate )
return NULL;
jsdframe = JSD_GetStackFrame(context, jsdstate);
if( ! jsdframe )
return NULL;
return (struct Hnetscape_jsdebug_StackFrameInfo*)
_constructJSStackFrameInfo( 0, jsdframe, self );
}
/***************************************************************************/
/* from "_gen\netscape_jsdebug_JSStackFrameInfo.h" */
struct Hnetscape_jsdebug_StackFrameInfo *netscape_jsdebug_JSStackFrameInfo_getCaller0(struct Hnetscape_jsdebug_JSStackFrameInfo * self)
{
JSDStackFrameInfo* jsdframeCur;
JSDStackFrameInfo* jsdframeCaller;
struct Hnetscape_jsdebug_JSThreadState* threadState;
JSDThreadState* jsdthreadstate;
if( ! context || ! controller )
return NULL;
jsdframeCur = (JSDStackFrameInfo*) unhand(self)->_nativePtr;
if( ! jsdframeCur )
return NULL;
threadState = (struct Hnetscape_jsdebug_JSThreadState*) unhand(self)->threadState;
if( ! threadState )
return NULL;
jsdthreadstate = (JSDThreadState*) unhand(threadState)->nativeThreadState;
if( ! jsdthreadstate )
return NULL;
jsdframeCaller = JSD_GetCallingStackFrame(context, jsdthreadstate, jsdframeCur);
if( ! jsdframeCaller )
return NULL;
return (struct Hnetscape_jsdebug_StackFrameInfo*)
_constructJSStackFrameInfo( 0, jsdframeCaller, threadState );
}
struct Hnetscape_jsdebug_PC *netscape_jsdebug_JSStackFrameInfo_getPC(struct Hnetscape_jsdebug_JSStackFrameInfo * self)
{
JSDScript* jsdscript;
JSDStackFrameInfo* jsdframe;
struct Hnetscape_jsdebug_Script* script;
struct Hnetscape_jsdebug_JSThreadState* threadState;
JSDThreadState* jsdthreadstate;
int pc;
ExecEnv* ee = EE();
if( ! context || ! controller || ! ee )
return NULL;
jsdframe = (JSDStackFrameInfo*) unhand(self)->_nativePtr;
if( ! jsdframe )
return NULL;
threadState = (struct Hnetscape_jsdebug_JSThreadState*) unhand(self)->threadState;
if( ! threadState )
return NULL;
jsdthreadstate = (JSDThreadState*) unhand(threadState)->nativeThreadState;
if( ! jsdthreadstate )
return NULL;
jsdscript = JSD_GetScriptForStackFrame(context, jsdthreadstate, jsdframe );
if( ! jsdscript )
return NULL;
script = _scriptObFromJSDScriptPtr(ee, jsdscript);
if( ! script )
return NULL;
pc = JSD_GetPCForStackFrame(context, jsdthreadstate, jsdframe);
if( ! pc )
return NULL;
return (struct Hnetscape_jsdebug_PC*) _constructJSPC(ee, script, pc);
}
/***************************************************************************/
/* from "_gen\netscape_jsdebug_JSPC.h" */
struct Hnetscape_jsdebug_SourceLocation *netscape_jsdebug_JSPC_getSourceLocation(struct Hnetscape_jsdebug_JSPC * self)
{
JSDScript* jsdscript;
struct Hnetscape_jsdebug_Script* script;
struct Hnetscape_jsdebug_JSPC* newPCOb;
int line;
int newpc;
int pc;
ExecEnv* ee = EE();
if( ! context || ! controller || ! ee )
return NULL;
script = unhand(self)->script;
if( ! script )
return NULL;
jsdscript = (JSDScript*) unhand(script)->_nativePtr;
if( ! jsdscript )
return NULL;
pc = unhand(self)->pc;
line = JSD_GetClosestLine(context, jsdscript, pc);
newpc = JSD_GetClosestPC(context, jsdscript, line);
newPCOb = _constructJSPC(ee, script, newpc );
if( ! newPCOb )
return NULL;
return (struct Hnetscape_jsdebug_SourceLocation *)
execute_java_constructor( ee, "netscape/jsdebug/JSSourceLocation", 0,
"(Lnetscape/jsdebug/JSPC;I)",
newPCOb, line );
}
/***************************************************************************/
/* from "_gen\netscape_jsdebug_JSSourceTextProvider.h" */
struct Hnetscape_jsdebug_SourceTextItem *netscape_jsdebug_JSSourceTextProvider_loadSourceTextItem0(struct Hnetscape_jsdebug_JSSourceTextProvider * self,struct Hjava_lang_String * url)
{
/* this should attempt to load the source for the indicated URL */
return NULL;
}
void netscape_jsdebug_JSSourceTextProvider_refreshSourceTextVector(struct Hnetscape_jsdebug_JSSourceTextProvider * self)
{
JHandle* vec;
JHandle* itemOb;
JSDSourceText* iterp = 0;
JSDSourceText* item;
const char* url;
struct Hjava_lang_String* urlOb;
ExecEnv* ee = EE();
if( ! context || ! controller || ! ee )
return;
/* create new vector */
vec = (JHandle*) execute_java_constructor(ee, "netscape/util/Vector", 0, "()");
if( ! vec )
return;
/* lock the native subsystem */
JSD_LockSourceTextSubsystem(context);
/* iterate through the native items */
while( 0 != (item = JSD_IterateSources(context, &iterp)) )
{
int urlStrLen;
int status = JSD_GetSourceStatus(context,item);
/* try to find Java object */
url = JSD_GetSourceURL(context, item);
if( ! url || 0 == (urlStrLen = strlen(url)) ) /* ignoring those with no url */
continue;
urlOb = makeJavaString((char*)url,urlStrLen);
if( ! urlOb )
continue;
itemOb = (JHandle*)
execute_java_dynamic_method( ee, (JHandle*)self, "findSourceTextItem0",
"(Ljava/lang/String;)Lnetscape/jsdebug/SourceTextItem;",
urlOb );
if( ! itemOb )
{
/* if not found then generate new item */
struct Hjava_lang_String* textOb;
const char* str;
int length;
if( ! JSD_GetSourceText(context, item, &str, &length ) )
{
str = "";
length = 0;
}
textOb = makeJavaString((char*)str, length);
itemOb = (JHandle*)
execute_java_constructor(ee, "netscape/jsdebug/SourceTextItem",0,
"(Ljava/lang/String;Ljava/lang/String;I)",
urlOb, textOb, status );
}
else if( JSD_IsSourceDirty(context, item) &&
JSD_SOURCE_CLEARED != status )
{
/* if found and dirty then update */
struct Hjava_lang_String* textOb;
const char* str;
int length;
if( ! JSD_GetSourceText(context, item, &str, &length ) )
{
str = "";
length = 0;
}
textOb = makeJavaString((char*)str, length);
execute_java_dynamic_method(ee, itemOb, "setText",
"(Ljava/lang/String;)V", textOb);
execute_java_dynamic_method(ee, itemOb, "setStatus",
"(I)V", status );
execute_java_dynamic_method(ee, itemOb, "setDirty", "(Z)V", 1 );
}
/* we have our copy; clear the native cached text */
if( JSD_SOURCE_INITED != status &&
JSD_SOURCE_PARTIAL != status &&
JSD_SOURCE_CLEARED != status )
{
JSD_ClearSourceText(context, item);
}
/* set the item clean */
JSD_SetSourceDirty(context, item, FALSE );
/* add the item to the vector */
if( itemOb )
execute_java_dynamic_method(ee, vec, "addElement",
"(Ljava/lang/Object;)V", itemOb );
}
/* unlock the native subsystem */
JSD_UnlockSourceTextSubsystem(context);
/* set main vector to our new vector */
unhand(self)->_sourceTextVector = (struct Hnetscape_util_Vector*) vec;
}
#endif

236
mozilla/js/jsd/jsd_lock.c Normal file
View File

@@ -0,0 +1,236 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Locking and threading support
*/
/*
* ifdef JSD_USE_NSPR_LOCKS then you musat build and run against NSPR2.
* Otherwise, there are stubs that can be filled in with your own locking
* code. Also, note that these stubs include a jsd_CurrentThread()
* implementation that only works on Win32 - this is needed for the inprocess
* Java-based debugger.
*/
#include "jsd.h"
#ifdef JSD_THREADSAFE
#ifdef JSD_USE_NSPR_LOCKS
#include "prlock.h"
#include "prthread.h"
#ifdef JSD_ATTACH_THREAD_HACK
#include "pprthred.h" /* need this as long as JS_AttachThread is needed */
#endif
typedef struct JSDStaticLock
{
void* owner;
PRLock* lock;
int count;
#ifdef DEBUG
uint16 sig;
#endif
} JSDStaticLock;
/*
* This exists to wrap non-NSPR theads (e.g. Java threads) in NSPR wrappers.
* XXX We ignore the memory leak issue.
* It is claimed that future versions of NSPR will automatically wrap on
* the call to PR_GetCurrentThread.
*
* XXX We ignore the memory leak issue - i.e. we never call PR_DetachThread.
*
*/
#undef _CURRENT_THREAD
#ifdef JSD_ATTACH_THREAD_HACK
#define _CURRENT_THREAD(out) \
JS_BEGIN_MACRO \
out = (void*) PR_GetCurrentThread(); \
if(!out) \
out = (void*) JS_AttachThread(PR_USER_THREAD,PR_PRIORITY_NORMAL,NULL);\
JS_ASSERT(out); \
JS_END_MACRO
#else
#define _CURRENT_THREAD(out) \
JS_BEGIN_MACRO \
out = (void*) PR_GetCurrentThread(); \
JS_ASSERT(out); \
JS_END_MACRO
#endif
#ifdef DEBUG
#define JSD_LOCK_SIG 0x10CC10CC
void ASSERT_VALID_LOCK(JSDStaticLock* lock)
{
JS_ASSERT(lock);
JS_ASSERT(lock->lock);
JS_ASSERT(lock->count >= 0);
JS_ASSERT((! lock->count && ! lock->owner) || (lock->count && lock->owner));
JS_ASSERT(lock->sig == (uint16) JSD_LOCK_SIG);
}
#else
#define ASSERT_VALID_LOCK(x) ((void)0)
#endif
void*
jsd_CreateLock()
{
JSDStaticLock* lock;
if( ! (lock = calloc(1, sizeof(JSDStaticLock))) ||
! (lock->lock = PR_NewLock()) )
{
if(lock)
{
free(lock);
lock = NULL;
}
}
#ifdef DEBUG
if(lock) lock->sig = (uint16) JSD_LOCK_SIG;
#endif
return lock;
}
void
jsd_Lock(JSDStaticLock* lock)
{
void* me;
_CURRENT_THREAD(me);
ASSERT_VALID_LOCK(lock);
if(lock->owner == me)
lock->count++;
else
{
PR_Lock(lock->lock); /* this can block... */
JS_ASSERT(lock->owner == 0);
lock->count = 1;
lock->owner = me;
}
ASSERT_VALID_LOCK(lock);
}
void
jsd_Unlock(JSDStaticLock* lock)
{
void* me;
ASSERT_VALID_LOCK(lock);
_CURRENT_THREAD(me);
if(lock->owner != me)
{
JS_ASSERT(0); /* it's an error to unlock a lock you don't own */
return;
}
if(--lock->count == 0)
{
lock->owner = NULL;
PR_Unlock(lock->lock);
}
ASSERT_VALID_LOCK(lock);
}
#ifdef DEBUG
JSBool
jsd_IsLocked(JSDStaticLock* lock)
{
void* me;
ASSERT_VALID_LOCK(lock);
_CURRENT_THREAD(me);
return lock->owner == me ? JS_TRUE : JS_FALSE;
}
#endif /* DEBUG */
void*
jsd_CurrentThread()
{
void* me;
_CURRENT_THREAD(me);
return me;
}
#else /* ! JSD_USE_NSPR_LOCKS */
#ifdef WIN32
#pragma message("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
#pragma message("!! you are compiling the stubbed version of jsd_lock.c !!")
#pragma message("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
#endif
/*
* NOTE: 'Real' versions of these locks must be reentrant in the sense that
* they support nested calls to lock and unlock.
*/
void*
jsd_CreateLock()
{
return (void*)1;
}
void
jsd_Lock(void* lock)
{
}
void
jsd_Unlock(void* lock)
{
}
#ifdef DEBUG
JSBool
jsd_IsLocked(void* lock)
{
return JS_TRUE;
}
#endif /* DEBUG */
/*
* This Windows only thread id code is here to allow the Java-based
* JSDebugger to work with the single threaded js.c shell (even without
* real locking and threading support).
*/
#ifdef WIN32
/* bogus (but good enough) declaration*/
extern void* __stdcall GetCurrentThreadId(void);
#endif
void*
jsd_CurrentThread()
{
#ifdef WIN32
return GetCurrentThreadId();
#else
return (void*)1;
#endif
}
#endif /* JSD_USE_NSPR_LOCKS */
#endif /* JSD_THREADSAFE */

53
mozilla/js/jsd/jsd_lock.h Normal file
View File

@@ -0,0 +1,53 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* Header for JavaScript Debugging support - Locking and threading functions
*/
#ifndef jsd_lock_h___
#define jsd_lock_h___
/*
* If you want to support threading and locking, define JSD_THREADSAFE and
* implement the functions below.
*/
/*
* NOTE: These locks must be reentrant in the sense that they support
* nested calls to lock and unlock.
*/
extern void*
jsd_CreateLock();
extern void
jsd_Lock(void* lock);
extern void
jsd_Unlock(void* lock);
#ifdef DEBUG
extern JSBool
jsd_IsLocked(void* lock);
#endif /* DEBUG */
extern void*
jsd_CurrentThread();
#endif /* jsd_lock_h___ */

307
mozilla/js/jsd/jsd_obj.c Normal file
View File

@@ -0,0 +1,307 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Object support
*/
#include "jsd.h"
/*
* #define JSD_TRACE 1
*/
#ifdef JSD_TRACE
#define TRACEOBJ(jsdc, jsdobj, which) _traceObj(jsdc, jsdobj, which)
static char *
_describeObj(JSDContext* jsdc, JSDObject *jsdobj)
{
return
JS_smprintf("%0x new'd in %s at line %d using ctor %s in %s at line %d",
(int)jsdobj,
JSD_GetObjectNewURL(jsdc, jsdobj),
JSD_GetObjectNewLineNumber(jsdc, jsdobj),
JSD_GetObjectConstructorName(jsdc, jsdobj),
JSD_GetObjectConstructorURL(jsdc, jsdobj),
JSD_GetObjectConstructorLineNumber(jsdc, jsdobj));
}
static void
_traceObj(JSDContext* jsdc, JSDObject* jsdobj, int which)
{
char* description;
if( !jsdobj )
return;
description = _describeObj(jsdc, jsdobj);
printf("%s : %s\n",
which == 0 ? "new " :
which == 1 ? "final" :
"ctor ",
description);
if(description)
free(description);
}
#else
#define TRACEOBJ(jsdc, jsdobj, which) ((void)0)
#endif /* JSD_TRACE */
#ifdef DEBUG
void JSD_ASSERT_VALID_OBJECT(JSDObject* jsdobj)
{
JS_ASSERT(jsdobj);
JS_ASSERT(!JS_CLIST_IS_EMPTY(&jsdobj->links));
JS_ASSERT(jsdobj->obj);
}
#endif
static void
_destroyJSDObject(JSDContext* jsdc, JSDObject* jsdobj)
{
JS_ASSERT(JSD_OBJECTS_LOCKED(jsdc));
JS_REMOVE_LINK(&jsdobj->links);
JS_HashTableRemove(jsdc->objectsTable, jsdobj->obj);
if(jsdobj->newURL)
jsd_DropAtom(jsdc, jsdobj->newURL);
if(jsdobj->ctorURL)
jsd_DropAtom(jsdc, jsdobj->ctorURL);
if(jsdobj->ctorName)
jsd_DropAtom(jsdc, jsdobj->ctorName);
free(jsdobj);
}
static JSDObject*
_createJSDObject(JSDContext* jsdc, JSContext *cx, JSObject *obj)
{
JSDObject* jsdobj;
JSStackFrame* fp;
JSStackFrame* iter = NULL;
const char* newURL;
jsbytecode* pc;
JS_ASSERT(JSD_OBJECTS_LOCKED(jsdc));
jsdobj = (JSDObject*) calloc(1, sizeof(JSDObject));
if( jsdobj )
{
JS_INIT_CLIST(&jsdobj->links);
JS_APPEND_LINK(&jsdobj->links, &jsdc->objectsList);
jsdobj->obj = obj;
JS_HashTableAdd(jsdc->objectsTable, obj, jsdobj);
/* walk the stack to find js frame (if any) causing creation */
while( NULL != (fp = JS_FrameIterator(cx, &iter)) )
{
if( !JS_IsNativeFrame(cx, fp) )
{
JSScript* script = JS_GetFrameScript(cx, fp);
if( !script )
continue;
newURL = JS_GetScriptFilename(cx, script);
if( newURL )
jsdobj->newURL = jsd_AddAtom(jsdc, newURL);
pc = JS_GetFramePC(cx, fp);
if( pc )
jsdobj->newLineno = JS_PCToLineNumber(cx, script, pc);
break;
}
}
}
return jsdobj;
}
void JS_DLL_CALLBACK
jsd_ObjectHook(JSContext *cx, JSObject *obj, JSBool isNew, void *closure)
{
JSDObject* jsdobj;
JSDContext* jsdc = (JSDContext*) closure;
if( ! jsdc || ! jsdc->inited )
return;
JSD_LOCK_OBJECTS(jsdc);
if(isNew)
{
jsdobj = _createJSDObject(jsdc, cx, obj);
TRACEOBJ(jsdc, jsdobj, 0);
}
else
{
jsdobj = jsd_GetJSDObjectForJSObject(jsdc, obj);
if( jsdobj )
{
TRACEOBJ(jsdc, jsdobj, 1);
_destroyJSDObject(jsdc, jsdobj);
}
}
JSD_UNLOCK_OBJECTS(jsdc);
}
void
jsd_Constructing(JSDContext* jsdc, JSContext *cx, JSObject *obj,
JSStackFrame *fp)
{
JSDObject* jsdobj;
JSScript* script;
JSDScript* jsdscript;
const char* ctorURL;
const char* ctorName;
JSD_LOCK_OBJECTS(jsdc);
jsdobj = jsd_GetJSDObjectForJSObject(jsdc, obj);
if( jsdobj && !jsdobj->ctorURL && !JS_IsNativeFrame(cx, fp) )
{
script = JS_GetFrameScript(cx, fp);
if( script )
{
ctorURL = JS_GetScriptFilename(cx, script);
if( ctorURL )
jsdobj->ctorURL = jsd_AddAtom(jsdc, ctorURL);
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
JSD_UNLOCK_SCRIPTS(jsdc);
if( jsdscript )
{
ctorName = jsd_GetScriptFunctionName(jsdc, jsdscript);
if( ctorName )
jsdobj->ctorName = jsd_AddAtom(jsdc, ctorName);
}
jsdobj->ctorLineno = JS_GetScriptBaseLineNumber(cx, script);
}
}
TRACEOBJ(jsdc, jsdobj, 3);
JSD_UNLOCK_OBJECTS(jsdc);
}
JS_STATIC_DLL_CALLBACK(JSHashNumber)
_hash_root(const void *key)
{
return ((JSHashNumber) key) >> 2; /* help lame MSVC1.5 on Win16 */
}
JSBool
jsd_InitObjectManager(JSDContext* jsdc)
{
JS_INIT_CLIST(&jsdc->objectsList);
jsdc->objectsTable = JS_NewHashTable(256, _hash_root,
JS_CompareValues, JS_CompareValues,
NULL, NULL);
return (JSBool) jsdc->objectsTable;
}
void
jsd_DestroyObjectManager(JSDContext* jsdc)
{
JSD_LOCK_OBJECTS(jsdc);
while( !JS_CLIST_IS_EMPTY(&jsdc->objectsList) )
_destroyJSDObject(jsdc, (JSDObject*)JS_NEXT_LINK(&jsdc->objectsList));
JS_HashTableDestroy(jsdc->objectsTable);
JSD_UNLOCK_OBJECTS(jsdc);
}
JSDObject*
jsd_IterateObjects(JSDContext* jsdc, JSDObject** iterp)
{
JSDObject *jsdobj = *iterp;
JS_ASSERT(JSD_OBJECTS_LOCKED(jsdc));
if( !jsdobj )
jsdobj = (JSDObject *)jsdc->objectsList.next;
if( jsdobj == (JSDObject *)&jsdc->objectsList )
return NULL;
*iterp = (JSDObject*) jsdobj->links.next;
return jsdobj;
}
JSObject*
jsd_GetWrappedObject(JSDContext* jsdc, JSDObject* jsdobj)
{
return jsdobj->obj;
}
const char*
jsd_GetObjectNewURL(JSDContext* jsdc, JSDObject* jsdobj)
{
if( jsdobj->newURL )
return JSD_ATOM_TO_STRING(jsdobj->newURL);
return NULL;
}
uintN
jsd_GetObjectNewLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
{
return jsdobj->newLineno;
}
const char*
jsd_GetObjectConstructorURL(JSDContext* jsdc, JSDObject* jsdobj)
{
if( jsdobj->ctorURL )
return JSD_ATOM_TO_STRING(jsdobj->ctorURL);
return NULL;
}
uintN
jsd_GetObjectConstructorLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
{
return jsdobj->ctorLineno;
}
const char*
jsd_GetObjectConstructorName(JSDContext* jsdc, JSDObject* jsdobj)
{
if( jsdobj->ctorName )
return JSD_ATOM_TO_STRING(jsdobj->ctorName);
return NULL;
}
JSDObject*
jsd_GetJSDObjectForJSObject(JSDContext* jsdc, JSObject* jsobj)
{
JSDObject* jsdobj;
JSD_LOCK_OBJECTS(jsdc);
jsdobj = (JSDObject*) JS_HashTableLookup(jsdc->objectsTable, jsobj);
JSD_UNLOCK_OBJECTS(jsdc);
return jsdobj;
}
JSDObject*
jsd_GetObjectForValue(JSDContext* jsdc, JSDValue* jsdval)
{
return jsd_GetJSDObjectForJSObject(jsdc, JSVAL_TO_OBJECT(jsdval->val));
}
JSDValue*
jsd_GetValueForObject(JSDContext* jsdc, JSDObject* jsdobj)
{
return jsd_NewValue(jsdc, OBJECT_TO_JSVAL(jsdobj->obj));
}

668
mozilla/js/jsd/jsd_scpt.c Normal file
View File

@@ -0,0 +1,668 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Script support
*/
#include "jsd.h"
/* Comment this out to disable (NT specific) dumping as we go */
/*
** #ifdef DEBUG
** #define JSD_DUMP 1
** #endif
*/
#define NOT_SET_YET -1
/***************************************************************************/
#ifdef DEBUG
void JSD_ASSERT_VALID_SCRIPT(JSDScript* jsdscript)
{
JS_ASSERT(jsdscript);
JS_ASSERT(jsdscript->script);
}
void JSD_ASSERT_VALID_EXEC_HOOK(JSDExecHook* jsdhook)
{
JS_ASSERT(jsdhook);
JS_ASSERT(jsdhook->hook);
}
#endif
#ifdef LIVEWIRE
static JSBool
HasFileExtention(const char* name, const char* ext)
{
int i;
int len = strlen(ext);
const char* p = strrchr(name,'.');
if( !p )
return JS_FALSE;
p++;
for(i = 0; i < len; i++ )
{
JS_ASSERT(islower(ext[i]));
if( 0 == p[i] || tolower(p[i]) != ext[i] )
return JS_FALSE;
}
if( 0 != p[i] )
return JS_FALSE;
return JS_TRUE;
}
#endif /* LIVEWIRE */
static JSDScript*
_newJSDScript(JSDContext* jsdc,
JSContext *cx,
JSScript *script,
JSFunction* function)
{
JSDScript* jsdscript;
uintN lineno;
const char* raw_filename;
JS_ASSERT(JSD_SCRIPTS_LOCKED(jsdc));
/* these are inlined javascript: urls and we can't handle them now */
lineno = (uintN) JS_GetScriptBaseLineNumber(cx, script);
if( lineno == 0 )
return NULL;
jsdscript = (JSDScript*) calloc(1, sizeof(JSDScript));
if( ! jsdscript )
return NULL;
raw_filename = JS_GetScriptFilename(cx,script);
JS_APPEND_LINK(&jsdscript->links, &jsdc->scripts);
jsdscript->jsdc = jsdc;
jsdscript->script = script;
jsdscript->function = function;
jsdscript->lineBase = lineno;
jsdscript->lineExtent = (uintN)NOT_SET_YET;
#ifndef LIVEWIRE
jsdscript->url = (char*) jsd_BuildNormalizedURL(raw_filename);
#else
jsdscript->app = LWDBG_GetCurrentApp();
if( jsdscript->app && raw_filename )
{
jsdscript->url = jsdlw_BuildAppRelativeFilename(jsdscript->app, raw_filename);
if( function )
{
jsdscript->lwscript =
LWDBG_GetScriptOfFunction(jsdscript->app,
JS_GetFunctionName(function));
/* also, make sure this file is added to filelist if is .js file */
if( HasFileExtention(raw_filename,"js") ||
HasFileExtention(raw_filename,"sjs") )
{
jsdlw_PreLoadSource(jsdc, jsdscript->app, raw_filename, JS_FALSE);
}
}
else
{
jsdscript->lwscript = LWDBG_GetCurrentTopLevelScript();
}
}
#endif
JS_INIT_CLIST(&jsdscript->hooks);
return jsdscript;
}
static void
_destroyJSDScript(JSDContext* jsdc,
JSDScript* jsdscript)
{
JS_ASSERT(JSD_SCRIPTS_LOCKED(jsdc));
/* destroy all hooks */
jsd_ClearAllExecutionHooksForScript(jsdc, jsdscript);
JS_REMOVE_LINK(&jsdscript->links);
if(jsdscript->url)
free(jsdscript->url);
if(jsdscript)
free(jsdscript);
}
/***************************************************************************/
#ifdef JSD_DUMP
static void
_dumpJSDScript(JSDContext* jsdc, JSDScript* jsdscript, const char* leadingtext)
{
const char* name;
const char* fun;
uintN base;
uintN extent;
char Buf[256];
name = jsd_GetScriptFilename(jsdc, jsdscript);
fun = jsd_GetScriptFunctionName(jsdc, jsdscript);
base = jsd_GetScriptBaseLineNumber(jsdc, jsdscript);
extent = jsd_GetScriptLineExtent(jsdc, jsdscript);
sprintf( Buf, "%sscript=%08X, %s, %s, %d-%d\n",
leadingtext,
(unsigned) jsdscript->script,
name ? name : "no URL",
fun ? fun : "no fun",
base, base + extent - 1 );
OutputDebugString( Buf );
}
static void
_dumpJSDScriptList( JSDContext* jsdc )
{
JSDScript* iterp = NULL;
JSDScript* jsdscript = NULL;
OutputDebugString( "*** JSDScriptDump\n" );
while( NULL != (jsdscript = jsd_IterateScripts(jsdc, &iterp)) )
_dumpJSDScript( jsdc, jsdscript, " script: " );
}
#endif /* JSD_DUMP */
/***************************************************************************/
void
jsd_DestroyAllJSDScripts( JSDContext* jsdc )
{
JSDScript *jsdscript;
JSDScript *next;
JS_ASSERT(JSD_SCRIPTS_LOCKED(jsdc));
for( jsdscript = (JSDScript*)jsdc->scripts.next;
jsdscript != (JSDScript*)&jsdc->scripts;
jsdscript = next )
{
next = (JSDScript*)jsdscript->links.next;
_destroyJSDScript( jsdc, jsdscript );
}
}
JSDScript*
jsd_FindJSDScript( JSDContext* jsdc,
JSScript *script )
{
JSDScript *jsdscript;
JS_ASSERT(JSD_SCRIPTS_LOCKED(jsdc));
for( jsdscript = (JSDScript *)jsdc->scripts.next;
jsdscript != (JSDScript *)&jsdc->scripts;
jsdscript = (JSDScript *)jsdscript->links.next )
{
if (jsdscript->script == script)
return jsdscript;
}
return NULL;
}
JSDScript*
jsd_IterateScripts(JSDContext* jsdc, JSDScript **iterp)
{
JSDScript *jsdscript = *iterp;
JS_ASSERT(JSD_SCRIPTS_LOCKED(jsdc));
if( !jsdscript )
jsdscript = (JSDScript *)jsdc->scripts.next;
if( jsdscript == (JSDScript *)&jsdc->scripts )
return NULL;
*iterp = (JSDScript*) jsdscript->links.next;
return jsdscript;
}
JSBool
jsd_IsActiveScript(JSDContext* jsdc, JSDScript *jsdscript)
{
JSDScript *current;
JS_ASSERT(JSD_SCRIPTS_LOCKED(jsdc));
for( current = (JSDScript *)jsdc->scripts.next;
current != (JSDScript *)&jsdc->scripts;
current = (JSDScript *)current->links.next )
{
if(jsdscript == current)
return JS_TRUE;
}
return JS_FALSE;
}
const char*
jsd_GetScriptFilename(JSDContext* jsdc, JSDScript *jsdscript)
{
return jsdscript->url;
}
const char*
jsd_GetScriptFunctionName(JSDContext* jsdc, JSDScript *jsdscript)
{
if( ! jsdscript->function )
return NULL;
return JS_GetFunctionName(jsdscript->function);
}
uintN
jsd_GetScriptBaseLineNumber(JSDContext* jsdc, JSDScript *jsdscript)
{
return jsdscript->lineBase;
}
uintN
jsd_GetScriptLineExtent(JSDContext* jsdc, JSDScript *jsdscript)
{
if( NOT_SET_YET == jsdscript->lineExtent )
jsdscript->lineExtent = JS_GetScriptLineExtent(jsdc->dumbContext, jsdscript->script);
return jsdscript->lineExtent;
}
jsuword
jsd_GetClosestPC(JSDContext* jsdc, JSDScript* jsdscript, uintN line)
{
#ifdef LIVEWIRE
if( jsdscript && jsdscript->lwscript )
{
uintN newline;
jsdlw_RawToProcessedLineNumber(jsdc, jsdscript, line, &newline);
if( line != newline )
line = newline;
}
#endif
return (jsuword) JS_LineNumberToPC(jsdc->dumbContext,
jsdscript->script, line );
}
uintN
jsd_GetClosestLine(JSDContext* jsdc, JSDScript* jsdscript, jsuword pc)
{
uintN first = jsdscript->lineBase;
uintN last = first + jsd_GetScriptLineExtent(jsdc, jsdscript) - 1;
uintN line = JS_PCToLineNumber(jsdc->dumbContext,
jsdscript->script, (jsbytecode*)pc);
if( line < first )
return first;
if( line > last )
return last;
#ifdef LIVEWIRE
if( jsdscript && jsdscript->lwscript )
{
uintN newline;
jsdlw_ProcessedToRawLineNumber(jsdc, jsdscript, line, &newline);
line = newline;
}
#endif
return line;
}
JSBool
jsd_SetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc hook, void* callerdata)
{
JSD_LOCK();
jsdc->scriptHook = hook;
jsdc->scriptHookData = callerdata;
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_GetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc* hook, void** callerdata)
{
JSD_LOCK();
if( hook )
*hook = jsdc->scriptHook;
if( callerdata )
*callerdata = jsdc->scriptHookData;
JSD_UNLOCK();
return JS_TRUE;
}
/***************************************************************************/
void JS_DLL_CALLBACK
jsd_NewScriptHookProc(
JSContext *cx,
const char *filename, /* URL this script loads from */
uintN lineno, /* line where this script starts */
JSScript *script,
JSFunction *fun,
void* callerdata )
{
JSDScript* jsdscript = NULL;
JSDContext* jsdc = (JSDContext*) callerdata;
JSD_ScriptHookProc hook;
void* hookData;
JSD_ASSERT_VALID_CONTEXT(jsdc);
if( JSD_IS_DANGEROUS_THREAD(jsdc) )
return;
#ifdef LIVEWIRE
if( 1 == lineno )
jsdlw_PreLoadSource(jsdc, LWDBG_GetCurrentApp(), filename, JS_TRUE );
#endif
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = _newJSDScript(jsdc, cx, script, fun);
JSD_UNLOCK_SCRIPTS(jsdc);
if( ! jsdscript )
return;
#ifdef JSD_DUMP
JSD_LOCK_SCRIPTS(jsdc);
_dumpJSDScript(jsdc, jsdscript, "***NEW Script: ");
_dumpJSDScriptList( jsdc );
JSD_UNLOCK_SCRIPTS(jsdc);
#endif /* JSD_DUMP */
/* local in case jsdc->scriptHook gets cleared on another thread */
JSD_LOCK();
hook = jsdc->scriptHook;
hookData = jsdc->scriptHookData;
JSD_UNLOCK();
if( hook )
hook(jsdc, jsdscript, JS_TRUE, hookData);
}
void JS_DLL_CALLBACK
jsd_DestroyScriptHookProc(
JSContext *cx,
JSScript *script,
void* callerdata )
{
JSDScript* jsdscript = NULL;
JSDContext* jsdc = (JSDContext*) callerdata;
JSD_ScriptHookProc hook;
void* hookData;
JSD_ASSERT_VALID_CONTEXT(jsdc);
if( JSD_IS_DANGEROUS_THREAD(jsdc) )
return;
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
JSD_UNLOCK_SCRIPTS(jsdc);
if( ! jsdscript )
return;
#ifdef JSD_DUMP
JSD_LOCK_SCRIPTS(jsdc);
_dumpJSDScript(jsdc, jsdscript, "***DESTROY Script: ");
JSD_UNLOCK_SCRIPTS(jsdc);
#endif /* JSD_DUMP */
/* local in case hook gets cleared on another thread */
JSD_LOCK();
hook = jsdc->scriptHook;
hookData = jsdc->scriptHookData;
JSD_UNLOCK();
if( hook )
hook(jsdc, jsdscript, JS_FALSE, hookData);
JSD_LOCK_SCRIPTS(jsdc);
_destroyJSDScript(jsdc, jsdscript);
JSD_UNLOCK_SCRIPTS(jsdc);
#ifdef JSD_DUMP
JSD_LOCK_SCRIPTS(jsdc);
_dumpJSDScriptList(jsdc);
JSD_UNLOCK_SCRIPTS(jsdc);
#endif /* JSD_DUMP */
}
/***************************************************************************/
static JSDExecHook*
_findHook(JSDContext* jsdc, JSDScript* jsdscript, jsuword pc)
{
JSDExecHook* jsdhook;
JSCList* list = &jsdscript->hooks;
for( jsdhook = (JSDExecHook*)list->next;
jsdhook != (JSDExecHook*)list;
jsdhook = (JSDExecHook*)jsdhook->links.next )
{
if (jsdhook->pc == pc)
return jsdhook;
}
return NULL;
}
static JSBool
_isActiveHook(JSDContext* jsdc, JSScript *script, JSDExecHook* jsdhook)
{
JSDExecHook* current;
JSCList* list;
JSDScript* jsdscript;
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
if( ! jsdscript)
{
JSD_UNLOCK_SCRIPTS(jsdc);
return JS_FALSE;
}
list = &jsdscript->hooks;
for( current = (JSDExecHook*)list->next;
current != (JSDExecHook*)list;
current = (JSDExecHook*)current->links.next )
{
if(current == jsdhook)
{
JSD_UNLOCK_SCRIPTS(jsdc);
return JS_TRUE;
}
}
JSD_UNLOCK_SCRIPTS(jsdc);
return JS_FALSE;
}
JSTrapStatus JS_DLL_CALLBACK
jsd_TrapHandler(JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval,
void *closure)
{
JSDExecHook* jsdhook = (JSDExecHook*) closure;
JSD_ExecutionHookProc hook;
void* hookData;
JSDContext* jsdc;
JSDScript* jsdscript;
JSD_LOCK();
if( NULL == (jsdc = jsd_JSDContextForJSContext(cx)) ||
! _isActiveHook(jsdc, script, jsdhook) )
{
JSD_UNLOCK();
return JSTRAP_CONTINUE;
}
JSD_ASSERT_VALID_EXEC_HOOK(jsdhook);
JS_ASSERT(jsdhook->pc == (jsuword)pc);
JS_ASSERT(jsdhook->jsdscript->script == script);
JS_ASSERT(jsdhook->jsdscript->jsdc == jsdc);
hook = jsdhook->hook;
hookData = jsdhook->callerdata;
jsdscript = jsdhook->jsdscript;
/* do not use jsdhook-> after this point */
JSD_UNLOCK();
if( ! jsdc || ! jsdc->inited )
return JSTRAP_CONTINUE;
if( JSD_IS_DANGEROUS_THREAD(jsdc) )
return JSTRAP_CONTINUE;
#ifdef LIVEWIRE
if( ! jsdlw_UserCodeAtPC(jsdc, jsdscript, (jsuword)pc) )
return JSTRAP_CONTINUE;
#endif
return jsd_CallExecutionHook(jsdc, cx, JSD_HOOK_BREAKPOINT,
hook, hookData, rval);
}
JSBool
jsd_SetExecutionHook(JSDContext* jsdc,
JSDScript* jsdscript,
jsuword pc,
JSD_ExecutionHookProc hook,
void* callerdata)
{
JSDExecHook* jsdhook;
JSD_LOCK();
if( ! hook )
{
jsd_ClearExecutionHook(jsdc, jsdscript, pc);
JSD_UNLOCK();
return JS_TRUE;
}
jsdhook = _findHook(jsdc, jsdscript, pc);
if( jsdhook )
{
jsdhook->hook = hook;
jsdhook->callerdata = callerdata;
return JS_TRUE;
}
/* else... */
jsdhook = (JSDExecHook*)calloc(1, sizeof(JSDExecHook));
if( ! jsdhook )
return JS_FALSE;
jsdhook->jsdscript = jsdscript;
jsdhook->pc = pc;
jsdhook->hook = hook;
jsdhook->callerdata = callerdata;
if( ! JS_SetTrap(jsdc->dumbContext, jsdscript->script,
(jsbytecode*)pc, jsd_TrapHandler, (void*) jsdhook) )
{
free(jsdhook);
return JS_FALSE;
}
JS_APPEND_LINK(&jsdhook->links, &jsdscript->hooks);
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_ClearExecutionHook(JSDContext* jsdc,
JSDScript* jsdscript,
jsuword pc)
{
JSDExecHook* jsdhook;
JSD_LOCK();
jsdhook = _findHook(jsdc, jsdscript, pc);
if( ! jsdhook )
{
JS_ASSERT(0);
JSD_UNLOCK();
return JS_FALSE;
}
JS_ClearTrap(jsdc->dumbContext, jsdscript->script,
(jsbytecode*)pc, NULL, NULL );
JS_REMOVE_LINK(&jsdhook->links);
free(jsdhook);
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_ClearAllExecutionHooksForScript(JSDContext* jsdc, JSDScript* jsdscript)
{
JSDExecHook* jsdhook;
JSCList* list = &jsdscript->hooks;
JSD_LOCK();
while( (JSDExecHook*)list != (jsdhook = (JSDExecHook*)list->next) )
{
JS_REMOVE_LINK(&jsdhook->links);
free(jsdhook);
}
JS_ClearScriptTraps(jsdc->dumbContext, jsdscript->script);
JSD_UNLOCK();
return JS_TRUE;
}
JSBool
jsd_ClearAllExecutionHooks(JSDContext* jsdc)
{
JSDScript* jsdscript;
JSDScript* iterp = NULL;
JSD_LOCK();
while( NULL != (jsdscript = jsd_IterateScripts(jsdc, &iterp)) )
jsd_ClearAllExecutionHooksForScript(jsdc, jsdscript);
JSD_UNLOCK();
return JS_TRUE;
}
void
jsd_ScriptCreated(JSDContext* jsdc,
JSContext *cx,
const char *filename, /* URL this script loads from */
uintN lineno, /* line where this script starts */
JSScript *script,
JSFunction *fun)
{
jsd_NewScriptHookProc(cx, filename, lineno, script, fun, jsdc);
}
void
jsd_ScriptDestroyed(JSDContext* jsdc,
JSContext *cx,
JSScript *script)
{
jsd_DestroyScriptHookProc(cx, script, jsdc);
}

429
mozilla/js/jsd/jsd_stak.c Normal file
View File

@@ -0,0 +1,429 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Call stack support
*/
#include "jsd.h"
#ifdef DEBUG
void JSD_ASSERT_VALID_THREAD_STATE(JSDThreadState* jsdthreadstate)
{
JS_ASSERT(jsdthreadstate);
JS_ASSERT(jsdthreadstate->stackDepth > 0);
}
void JSD_ASSERT_VALID_STACK_FRAME(JSDStackFrameInfo* jsdframe)
{
JS_ASSERT(jsdframe);
JS_ASSERT(jsdframe->jsdthreadstate);
}
#endif
static JSDStackFrameInfo*
_addNewFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSScript* script,
jsuword pc,
JSStackFrame* fp)
{
JSDStackFrameInfo* jsdframe;
JSDScript* jsdscript;
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
JSD_UNLOCK_SCRIPTS(jsdc);
if( ! jsdscript )
return NULL;
jsdframe = (JSDStackFrameInfo*) calloc(1, sizeof(JSDStackFrameInfo));
if( ! jsdframe )
return NULL;
jsdframe->jsdthreadstate = jsdthreadstate;
jsdframe->jsdscript = jsdscript ;
jsdframe->pc = pc ;
jsdframe->fp = fp ;
JS_APPEND_LINK(&jsdframe->links, &jsdthreadstate->stack);
jsdthreadstate->stackDepth++;
return jsdframe;
}
static void
_destroyFrame(JSDStackFrameInfo* jsdframe)
{
/* kill any alloc'd objects in frame here... */
if( jsdframe )
free(jsdframe);
}
JSDThreadState*
jsd_NewThreadState(JSDContext* jsdc, JSContext *cx )
{
JSDThreadState* jsdthreadstate;
JSStackFrame * iter = NULL;
JSStackFrame * fp;
jsdthreadstate = (JSDThreadState*)calloc(1, sizeof(JSDThreadState));
if( ! jsdthreadstate )
return NULL;
jsdthreadstate->context = cx;
jsdthreadstate->thread = JSD_CURRENT_THREAD();
JS_INIT_CLIST(&jsdthreadstate->stack);
jsdthreadstate->stackDepth = 0;
while( NULL != (fp = JS_FrameIterator(cx, &iter)) )
{
JSScript* script = JS_GetFrameScript(cx, fp);
jsuword pc = (jsuword) JS_GetFramePC(cx, fp);
if( ! script || ! pc || JS_IsNativeFrame(cx, fp) )
continue;
_addNewFrame( jsdc, jsdthreadstate, script, pc, fp );
}
/* if there is no stack, then this threadstate can not be constructed */
if( 0 == jsdthreadstate->stackDepth )
{
free(jsdthreadstate);
return NULL;
}
JSD_LOCK_THREADSTATES(jsdc);
JS_APPEND_LINK(&jsdthreadstate->links, &jsdc->threadsStates);
JSD_UNLOCK_THREADSTATES(jsdc);
return jsdthreadstate;
}
void
jsd_DestroyThreadState(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
{
JSDStackFrameInfo* jsdframe;
JSCList* list;
JSD_ASSERT_VALID_THREAD_STATE(jsdthreadstate);
JS_ASSERT(JSD_CURRENT_THREAD() == jsdthreadstate->thread);
JSD_LOCK_THREADSTATES(jsdc);
JS_REMOVE_LINK(&jsdthreadstate->links);
JSD_UNLOCK_THREADSTATES(jsdc);
list = &jsdthreadstate->stack;
while( (JSDStackFrameInfo*)list != (jsdframe = (JSDStackFrameInfo*)list->next) )
{
JS_REMOVE_LINK(&jsdframe->links);
_destroyFrame(jsdframe);
}
free(jsdthreadstate);
}
uintN
jsd_GetCountOfStackFrames(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
{
uintN count = 0;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidThreadState(jsdc, jsdthreadstate) )
count = jsdthreadstate->stackDepth;
JSD_UNLOCK_THREADSTATES(jsdc);
return count;
}
JSDStackFrameInfo*
jsd_GetStackFrame(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
{
JSDStackFrameInfo* jsdframe = NULL;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidThreadState(jsdc, jsdthreadstate) )
jsdframe = (JSDStackFrameInfo*) JS_LIST_HEAD(&jsdthreadstate->stack);
JSD_UNLOCK_THREADSTATES(jsdc);
return jsdframe;
}
JSDStackFrameInfo*
jsd_GetCallingStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe)
{
JSDStackFrameInfo* nextjsdframe = NULL;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe) )
if( JS_LIST_HEAD(&jsdframe->links) != &jsdframe->jsdthreadstate->stack )
nextjsdframe = (JSDStackFrameInfo*) JS_LIST_HEAD(&jsdframe->links);
JSD_UNLOCK_THREADSTATES(jsdc);
return nextjsdframe;
}
JSDScript*
jsd_GetScriptForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe)
{
JSDScript* jsdscript = NULL;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe) )
jsdscript = jsdframe->jsdscript;
JSD_UNLOCK_THREADSTATES(jsdc);
return jsdscript;
}
jsuword
jsd_GetPCForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe)
{
jsuword pc = 0;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe) )
pc = jsdframe->pc;
JSD_UNLOCK_THREADSTATES(jsdc);
return pc;
}
JSDValue*
jsd_GetCallObjectForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe)
{
JSObject* obj;
JSDValue* jsdval = NULL;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe) )
{
obj = JS_GetFrameCallObject(jsdthreadstate->context, jsdframe->fp);
if(obj)
jsdval = JSD_NewValue(jsdc, OBJECT_TO_JSVAL(obj));
}
JSD_UNLOCK_THREADSTATES(jsdc);
return jsdval;
}
JSDValue*
jsd_GetScopeChainForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe)
{
JSObject* obj;
JSDValue* jsdval = NULL;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe) )
{
obj = JS_GetFrameScopeChain(jsdthreadstate->context, jsdframe->fp);
if(obj)
jsdval = JSD_NewValue(jsdc, OBJECT_TO_JSVAL(obj));
}
JSD_UNLOCK_THREADSTATES(jsdc);
return jsdval;
}
JSDValue*
jsd_GetThisForStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe)
{
JSObject* obj;
JSDValue* jsdval = NULL;
JSD_LOCK_THREADSTATES(jsdc);
if( jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe) )
{
obj = JS_GetFrameThis(jsdthreadstate->context, jsdframe->fp);
if(obj)
jsdval = JSD_NewValue(jsdc, OBJECT_TO_JSVAL(obj));
}
JSD_UNLOCK_THREADSTATES(jsdc);
return jsdval;
}
JSBool
jsd_EvaluateScriptInStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe,
const char *bytes, uintN length,
const char *filename, uintN lineno, jsval *rval)
{
JSBool retval;
JSBool valid;
JSExceptionState* exceptionState;
JSContext* cx;
JS_ASSERT(JSD_CURRENT_THREAD() == jsdthreadstate->thread);
JSD_LOCK_THREADSTATES(jsdc);
valid = jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe);
JSD_UNLOCK_THREADSTATES(jsdc);
if( ! valid )
return JS_FALSE;
cx = jsdthreadstate->context;
JS_ASSERT(cx);
exceptionState = JS_SaveExceptionState(cx);
jsd_StartingEvalUsingFilename(jsdc, filename);
retval = JS_EvaluateInStackFrame(cx, jsdframe->fp, bytes, length,
filename, lineno, rval);
jsd_FinishedEvalUsingFilename(jsdc, filename);
JS_RestoreExceptionState(cx, exceptionState);
return retval;
}
JSString*
jsd_ValToStringInStackFrame(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe,
jsval val)
{
JSBool valid;
JSString* retval;
JSExceptionState* exceptionState;
JSContext* cx;
JSD_LOCK_THREADSTATES(jsdc);
valid = jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe);
JSD_UNLOCK_THREADSTATES(jsdc);
if( ! valid )
return NULL;
cx = jsdthreadstate->context;
JS_ASSERT(cx);
exceptionState = JS_SaveExceptionState(cx);
retval = JS_ValueToString(cx, val);
JS_RestoreExceptionState(cx, exceptionState);
return retval;
}
JSBool
jsd_IsValidThreadState(JSDContext* jsdc,
JSDThreadState* jsdthreadstate)
{
JSDThreadState *cur;
JS_ASSERT( JSD_THREADSTATES_LOCKED(jsdc) );
for( cur = (JSDThreadState*)jsdc->threadsStates.next;
cur != (JSDThreadState*)&jsdc->threadsStates;
cur = (JSDThreadState*)cur->links.next )
{
if( cur == jsdthreadstate )
return JS_TRUE;
}
return JS_FALSE;
}
JSBool
jsd_IsValidFrameInThreadState(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
JSDStackFrameInfo* jsdframe)
{
JS_ASSERT(JSD_THREADSTATES_LOCKED(jsdc));
if( ! jsd_IsValidThreadState(jsdc, jsdthreadstate) )
return JS_FALSE;
if( jsdframe->jsdthreadstate != jsdthreadstate )
return JS_FALSE;
JSD_ASSERT_VALID_THREAD_STATE(jsdthreadstate);
JSD_ASSERT_VALID_STACK_FRAME(jsdframe);
return JS_TRUE;
}
static JSContext*
_getContextForThreadState(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
{
JSBool valid;
JSD_LOCK_THREADSTATES(jsdc);
valid = jsd_IsValidThreadState(jsdc, jsdthreadstate);
JSD_UNLOCK_THREADSTATES(jsdc);
if( valid )
return jsdthreadstate->context;
return NULL;
}
JSDValue*
jsd_GetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
{
JSContext* cx;
jsval val;
if(!(cx = _getContextForThreadState(jsdc, jsdthreadstate)))
return NULL;
if(JS_GetPendingException(cx, &val))
return jsd_NewValue(jsdc, val);
return NULL;
}
JSBool
jsd_SetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate,
JSDValue* jsdval)
{
JSContext* cx;
if(!(cx = _getContextForThreadState(jsdc, jsdthreadstate)))
return JS_FALSE;
if(jsdval)
JS_SetPendingException(cx, JSD_GetValueWrappedJSVal(jsdc, jsdval));
else
JS_ClearPendingException(cx);
return JS_TRUE;
}

116
mozilla/js/jsd/jsd_step.c Normal file
View File

@@ -0,0 +1,116 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Stepping support
*/
#include "jsd.h"
/*
* #define JSD_TRACE 1
*/
#ifdef JSD_TRACE
static char*
_indentSpaces(int i)
{
#define MAX_INDENT 63
static char* p = NULL;
if(!p)
{
p = calloc(1, MAX_INDENT+1);
if(!p) return "";
memset(p, ' ', MAX_INDENT);
}
if(i > MAX_INDENT) return p;
return p + MAX_INDENT-i;
}
static void
_interpreterTrace(JSDContext* jsdc, JSContext *cx, JSStackFrame *fp,
JSBool before, JSBool *ok)
{
JSDScript* jsdscript = NULL;
JSScript * script;
static indent = 0;
char* buf;
const char* funName = NULL;
script = JS_GetFrameScript(cx, fp);
if(script)
{
JSD_LOCK_SCRIPTS(jsdc);
jsdscript = jsd_FindJSDScript(jsdc, script);
JSD_UNLOCK_SCRIPTS(jsdc);
if(jsdscript)
funName = JSD_GetScriptFunctionName(jsdc, jsdscript);
}
if(!funName)
funName = "TOP_LEVEL";
if(before)
{
buf = JS_smprintf("%sentering %s %s this: %0x\n",
_indentSpaces(indent++),
funName,
JS_IsContructorFrame(cx, fp) ? "constructing":"",
(int)JS_GetFrameThis(cx, fp));
}
else
{
buf = JS_smprintf("%sleaving %s\n",
_indentSpaces(--indent),
funName);
}
JS_ASSERT(indent >= 0);
if(!buf)
return;
printf(buf);
free(buf);
}
#endif
void * JS_DLL_CALLBACK
jsd_InterpreterHook(JSContext *cx, JSStackFrame *fp, JSBool before,
JSBool *ok, void *closure)
{
JSDContext* jsdc = (JSDContext*) closure;
if( ! jsdc || ! jsdc->inited )
return NULL;
if(before && JS_IsContructorFrame(cx, fp))
jsd_Constructing(jsdc, cx, JS_GetFrameThis(cx, fp), fp);
#ifdef JSD_TRACE
_interpreterTrace(jsdc, cx, fp, before, ok);
return closure;
#else
return NULL;
#endif
/*
* use this before calling any hook...
* if( JSD_IS_DANGEROUS_THREAD(jsdc) )
* return NULL;
*/
}

547
mozilla/js/jsd/jsd_text.c Normal file
View File

@@ -0,0 +1,547 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Source Text functions
*/
#include "jsd.h"
#ifdef DEBUG
void JSD_ASSERT_VALID_SOURCE_TEXT(JSDSourceText* jsdsrc)
{
JS_ASSERT(jsdsrc);
JS_ASSERT(jsdsrc->url);
}
#endif
/***************************************************************************/
/* XXX add notification */
static void
_clearText(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
if( jsdsrc->text )
free(jsdsrc->text);
jsdsrc->text = NULL;
jsdsrc->textLength = 0;
jsdsrc->textSpace = 0;
jsdsrc->status = JSD_SOURCE_CLEARED;
jsdsrc->dirty = JS_TRUE;
jsdsrc->alterCount = jsdc->sourceAlterCount++ ;
jsdsrc->doingEval = JS_FALSE;
}
static JSBool
_appendText(JSDContext* jsdc, JSDSourceText* jsdsrc,
const char* text, size_t length)
{
#define MEMBUF_GROW 1000
uintN neededSize = jsdsrc->textLength + length;
if( neededSize > jsdsrc->textSpace )
{
char* newBuf;
uintN iNewSize;
/* if this is the first alloc, the req might be all that's needed*/
if( ! jsdsrc->textSpace )
iNewSize = length;
else
iNewSize = (neededSize * 5 / 4) + MEMBUF_GROW;
newBuf = (char*) realloc(jsdsrc->text, iNewSize);
if( ! newBuf )
{
/* try again with the minimal size really asked for */
iNewSize = neededSize;
newBuf = (char*) realloc(jsdsrc->text, iNewSize);
if( ! newBuf )
{
/* out of memory */
_clearText( jsdc, jsdsrc );
jsdsrc->status = JSD_SOURCE_FAILED;
return JS_FALSE;
}
}
jsdsrc->text = newBuf;
jsdsrc->textSpace = iNewSize;
}
memcpy(jsdsrc->text + jsdsrc->textLength, text, length);
jsdsrc->textLength += length;
return JS_TRUE;
}
static JSDSourceText*
_newSource(JSDContext* jsdc, const char* url)
{
JSDSourceText* jsdsrc = (JSDSourceText*)calloc(1,sizeof(JSDSourceText));
if( ! jsdsrc )
return NULL;
jsdsrc->url = (char*) url; /* already a copy */
jsdsrc->status = JSD_SOURCE_INITED;
jsdsrc->dirty = JS_TRUE;
jsdsrc->alterCount = jsdc->sourceAlterCount++ ;
return jsdsrc;
}
static void
_destroySource(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
JS_ASSERT(NULL == jsdsrc->text); /* must _clearText() first */
free(jsdsrc->url);
free(jsdsrc);
}
static void
_removeSource(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
JS_REMOVE_LINK(&jsdsrc->links);
_clearText(jsdc, jsdsrc);
_destroySource(jsdc, jsdsrc);
}
static JSDSourceText*
_addSource(JSDContext* jsdc, const char* url)
{
JSDSourceText* jsdsrc = _newSource(jsdc, url);
if( ! jsdsrc )
return NULL;
JS_INSERT_LINK(&jsdsrc->links, &jsdc->sources);
return jsdsrc;
}
static void
_moveSourceToFront(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
JS_REMOVE_LINK(&jsdsrc->links);
JS_INSERT_LINK(&jsdsrc->links, &jsdc->sources);
}
static void
_moveSourceToRemovedList(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
_clearText(jsdc, jsdsrc);
JS_REMOVE_LINK(&jsdsrc->links);
JS_INSERT_LINK(&jsdsrc->links, &jsdc->removedSources);
}
static void
_removeSourceFromRemovedList( JSDContext* jsdc, JSDSourceText* jsdsrc )
{
JS_REMOVE_LINK(&jsdsrc->links);
_destroySource( jsdc, jsdsrc );
}
static JSBool
_isSourceInSourceList(JSDContext* jsdc, JSDSourceText* jsdsrcToFind)
{
JSDSourceText *jsdsrc;
for( jsdsrc = (JSDSourceText*)jsdc->sources.next;
jsdsrc != (JSDSourceText*)&jsdc->sources;
jsdsrc = (JSDSourceText*)jsdsrc->links.next )
{
if( jsdsrc == jsdsrcToFind )
return JS_TRUE;
}
return JS_FALSE;
}
/* compare strings in a case insensitive manner with a length limit
*/
static int
strncasecomp (const char* one, const char * two, int n)
{
const char *pA;
const char *pB;
for(pA=one, pB=two;; pA++, pB++)
{
int tmp;
if (pA == one+n)
return 0;
if (!(*pA && *pB))
return *pA - *pB;
tmp = tolower(*pA) - tolower(*pB);
if (tmp)
return tmp;
}
}
static char file_url_prefix[] = "file:";
#define FILE_URL_PREFIX_LEN (sizeof file_url_prefix - 1)
const char*
jsd_BuildNormalizedURL( const char* url_string )
{
char *new_url_string;
if( ! url_string )
return NULL;
if (!strncasecomp(url_string, file_url_prefix, FILE_URL_PREFIX_LEN) &&
url_string[FILE_URL_PREFIX_LEN + 0] == '/' &&
url_string[FILE_URL_PREFIX_LEN + 1] == '/') {
new_url_string = JS_smprintf("%s%s",
file_url_prefix,
url_string + FILE_URL_PREFIX_LEN + 2);
} else {
new_url_string = strdup(url_string);
}
return new_url_string;
}
/***************************************************************************/
void
jsd_DestroyAllSources( JSDContext* jsdc )
{
JSDSourceText *jsdsrc;
JSDSourceText *next;
for( jsdsrc = (JSDSourceText*)jsdc->sources.next;
jsdsrc != (JSDSourceText*)&jsdc->sources;
jsdsrc = next )
{
next = (JSDSourceText*)jsdsrc->links.next;
_removeSource( jsdc, jsdsrc );
}
for( jsdsrc = (JSDSourceText*)jsdc->removedSources.next;
jsdsrc != (JSDSourceText*)&jsdc->removedSources;
jsdsrc = next )
{
next = (JSDSourceText*)jsdsrc->links.next;
_removeSourceFromRemovedList( jsdc, jsdsrc );
}
}
JSDSourceText*
jsd_IterateSources(JSDContext* jsdc, JSDSourceText **iterp)
{
JSDSourceText *jsdsrc = *iterp;
if( !jsdsrc )
jsdsrc = (JSDSourceText *)jsdc->sources.next;
if( jsdsrc == (JSDSourceText *)&jsdc->sources )
return NULL;
*iterp = (JSDSourceText *)jsdsrc->links.next;
return jsdsrc;
}
JSDSourceText*
jsd_FindSourceForURL(JSDContext* jsdc, const char* url)
{
JSDSourceText *jsdsrc;
for( jsdsrc = (JSDSourceText *)jsdc->sources.next;
jsdsrc != (JSDSourceText *)&jsdc->sources;
jsdsrc = (JSDSourceText *)jsdsrc->links.next )
{
if( 0 == strcmp(jsdsrc->url, url) )
return jsdsrc;
}
return NULL;
}
const char*
jsd_GetSourceURL(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
return jsdsrc->url;
}
JSBool
jsd_GetSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc,
const char** ppBuf, intN* pLen )
{
*ppBuf = jsdsrc->text;
*pLen = jsdsrc->textLength;
return JS_TRUE;
}
void
jsd_ClearSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
if( JSD_SOURCE_INITED != jsdsrc->status &&
JSD_SOURCE_PARTIAL != jsdsrc->status )
{
_clearText(jsdc, jsdsrc);
}
}
JSDSourceStatus
jsd_GetSourceStatus(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
return jsdsrc->status;
}
JSBool
jsd_IsSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
return jsdsrc->dirty;
}
void
jsd_SetSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc, JSBool dirty)
{
jsdsrc->dirty = dirty;
}
uintN
jsd_GetSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
return jsdsrc->alterCount;
}
uintN
jsd_IncrementSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc)
{
return jsdsrc->alterCount = jsdc->sourceAlterCount++;
}
/***************************************************************************/
#if defined(DEBUG) && 0
void DEBUG_ITERATE_SOURCES( JSDContext* jsdc )
{
JSDSourceText* iterp = NULL;
JSDSourceText* jsdsrc = NULL;
int dummy;
while( NULL != (jsdsrc = jsd_IterateSources(jsdc, &iterp)) )
{
const char* url;
const char* text;
int len;
JSBool dirty;
JSDStreamStatus status;
JSBool gotSrc;
url = JSD_GetSourceURL(jsdc, jsdsrc);
dirty = JSD_IsSourceDirty(jsdc, jsdsrc);
status = JSD_GetSourceStatus(jsdc, jsdsrc);
gotSrc = JSD_GetSourceText(jsdc, jsdsrc, &text, &len );
dummy = 0; /* gives us a line to set breakpoint... */
}
}
#else
#define DEBUG_ITERATE_SOURCES(x) ((void)x)
#endif
/***************************************************************************/
JSDSourceText*
jsd_NewSourceText(JSDContext* jsdc, const char* url)
{
JSDSourceText* jsdsrc;
const char* new_url_string;
JSD_LOCK_SOURCE_TEXT(jsdc);
#ifdef LIVEWIRE
new_url_string = url; /* we take ownership of alloc'd string */
#else
new_url_string = jsd_BuildNormalizedURL(url);
#endif
if( ! new_url_string )
return NULL;
jsdsrc = jsd_FindSourceForURL(jsdc, new_url_string);
if( jsdsrc )
{
if( jsdsrc->doingEval )
{
#ifdef LIVEWIRE
free((char*)new_url_string);
#endif
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return NULL;
}
else
_moveSourceToRemovedList(jsdc, jsdsrc);
}
jsdsrc = _addSource( jsdc, new_url_string );
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return jsdsrc;
}
JSDSourceText*
jsd_AppendSourceText(JSDContext* jsdc,
JSDSourceText* jsdsrc,
const char* text, /* *not* zero terminated */
size_t length,
JSDSourceStatus status)
{
JSD_LOCK_SOURCE_TEXT(jsdc);
if( jsdsrc->doingEval )
{
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return NULL;
}
if( ! _isSourceInSourceList( jsdc, jsdsrc ) )
{
_removeSourceFromRemovedList( jsdc, jsdsrc );
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return NULL;
}
if( text && length && ! _appendText( jsdc, jsdsrc, text, length ) )
{
jsdsrc->dirty = JS_TRUE;
jsdsrc->alterCount = jsdc->sourceAlterCount++ ;
jsdsrc->status = JSD_SOURCE_FAILED;
_moveSourceToRemovedList(jsdc, jsdsrc);
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return NULL;
}
jsdsrc->dirty = JS_TRUE;
jsdsrc->alterCount = jsdc->sourceAlterCount++ ;
jsdsrc->status = status;
DEBUG_ITERATE_SOURCES(jsdc);
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return jsdsrc;
}
JSDSourceText*
jsd_AppendUCSourceText(JSDContext* jsdc,
JSDSourceText* jsdsrc,
const jschar* text, /* *not* zero terminated */
size_t length,
JSDSourceStatus status)
{
#define UNICODE_TRUNCATE_BUF_SIZE 1024
static char* buf = NULL;
int remaining = length;
if(!text || !length)
return jsd_AppendSourceText(jsdc, jsdsrc, NULL, 0, status);
JSD_LOCK_SOURCE_TEXT(jsdc);
if(!buf)
{
buf = malloc(UNICODE_TRUNCATE_BUF_SIZE);
if(!buf)
{
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return NULL;
}
}
while(remaining && jsdsrc) {
int bytes = JS_MIN(remaining, UNICODE_TRUNCATE_BUF_SIZE);
int i;
for(i = 0; i < bytes; i++)
buf[i] = (const char) *(text++);
jsdsrc = jsd_AppendSourceText(jsdc,jsdsrc,
buf, bytes,
JSD_SOURCE_PARTIAL);
remaining -= bytes;
}
if(jsdsrc && status != JSD_SOURCE_PARTIAL)
jsdsrc = jsd_AppendSourceText(jsdc, jsdsrc, NULL, 0, status);
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return jsdsrc;
}
/* convienence function for adding complete source of url in one call */
JSBool
jsd_AddFullSourceText(JSDContext* jsdc,
const char* text, /* *not* zero terminated */
size_t length,
const char* url)
{
JSDSourceText* jsdsrc;
JSD_LOCK_SOURCE_TEXT(jsdc);
jsdsrc = jsd_NewSourceText(jsdc, url);
if( jsdsrc )
jsdsrc = jsd_AppendSourceText(jsdc, jsdsrc,
text, length, JSD_SOURCE_PARTIAL );
if( jsdsrc )
jsdsrc = jsd_AppendSourceText(jsdc, jsdsrc,
NULL, 0, JSD_SOURCE_COMPLETED );
JSD_UNLOCK_SOURCE_TEXT(jsdc);
return jsdsrc ? JS_TRUE : JS_FALSE;
}
/***************************************************************************/
void
jsd_StartingEvalUsingFilename(JSDContext* jsdc, const char* url)
{
JSDSourceText* jsdsrc;
/* NOTE: We leave it locked! */
JSD_LOCK_SOURCE_TEXT(jsdc);
jsdsrc = jsd_FindSourceForURL(jsdc, url);
if(jsdsrc)
{
#if 0
#ifndef JSD_LOWLEVEL_SOURCE
JS_ASSERT(! jsdsrc->doingEval);
#endif
#endif
jsdsrc->doingEval = JS_TRUE;
}
}
void
jsd_FinishedEvalUsingFilename(JSDContext* jsdc, const char* url)
{
JSDSourceText* jsdsrc;
/* NOTE: We ASSUME it is locked! */
jsdsrc = jsd_FindSourceForURL(jsdc, url);
if(jsdsrc)
{
#if 0
#ifndef JSD_LOWLEVEL_SOURCE
/*
* when using this low level source addition, this jsdsrc might
* not have existed before the eval, but does exist now (without
* this flag set!)
*/
JS_ASSERT(jsdsrc->doingEval);
#endif
#endif
jsdsrc->doingEval = JS_FALSE;
}
JSD_UNLOCK_SOURCE_TEXT(jsdc);
}

601
mozilla/js/jsd/jsd_val.c Normal file
View File

@@ -0,0 +1,601 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JavaScript Debugging support - Value and Property support
*/
#include "jsd.h"
#ifdef DEBUG
void JSD_ASSERT_VALID_VALUE(JSDValue* jsdval)
{
JS_ASSERT(jsdval);
JS_ASSERT(jsdval->nref > 0);
if(!JS_CLIST_IS_EMPTY(&jsdval->props))
{
JS_ASSERT(CHECK_BIT_FLAG(jsdval->flags, GOT_PROPS));
JS_ASSERT(JSVAL_IS_OBJECT(jsdval->val));
}
if(jsdval->proto)
{
JS_ASSERT(CHECK_BIT_FLAG(jsdval->flags, GOT_PROTO));
JS_ASSERT(jsdval->proto->nref > 0);
}
if(jsdval->parent)
{
JS_ASSERT(CHECK_BIT_FLAG(jsdval->flags, GOT_PARENT));
JS_ASSERT(jsdval->parent->nref > 0);
}
if(jsdval->ctor)
{
JS_ASSERT(CHECK_BIT_FLAG(jsdval->flags, GOT_CTOR));
JS_ASSERT(jsdval->ctor->nref > 0);
}
}
void JSD_ASSERT_VALID_PROPERTY(JSDProperty* jsdprop)
{
JS_ASSERT(jsdprop);
JS_ASSERT(jsdprop->name);
JS_ASSERT(jsdprop->name->nref > 0);
JS_ASSERT(jsdprop->val);
JS_ASSERT(jsdprop->val->nref > 0);
if(jsdprop->alias)
JS_ASSERT(jsdprop->alias->nref > 0);
}
#endif
JSBool
jsd_IsValueObject(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_OBJECT(jsdval->val);
}
JSBool
jsd_IsValueNumber(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_NUMBER(jsdval->val);
}
JSBool
jsd_IsValueInt(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_INT(jsdval->val);
}
JSBool
jsd_IsValueDouble(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_DOUBLE(jsdval->val);
}
JSBool
jsd_IsValueString(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_STRING(jsdval->val);
}
JSBool
jsd_IsValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_BOOLEAN(jsdval->val);
}
JSBool
jsd_IsValueNull(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_NULL(jsdval->val);
}
JSBool
jsd_IsValueVoid(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_VOID(jsdval->val);
}
JSBool
jsd_IsValuePrimitive(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_PRIMITIVE(jsdval->val);
}
JSBool
jsd_IsValueFunction(JSDContext* jsdc, JSDValue* jsdval)
{
return JSVAL_IS_FUNCTION(jsdc->dumbContext, jsdval->val);
}
JSBool
jsd_IsValueNative(JSDContext* jsdc, JSDValue* jsdval)
{
JSContext* cx = jsdc->dumbContext;
jsval val = jsdval->val;
JSFunction* fun;
JSExceptionState* exceptionState;
if(!JSVAL_IS_OBJECT(val))
return JS_FALSE;
if(JSVAL_IS_FUNCTION(cx, val))
{
exceptionState = JS_SaveExceptionState(cx);
fun = JS_ValueToFunction(cx, val);
JS_RestoreExceptionState(cx, exceptionState);
if(!fun)
{
JS_ASSERT(0);
return JS_FALSE;
}
return JS_GetFunctionScript(cx, fun) ? JS_FALSE : JS_TRUE;
}
return JSVAL_TO_OBJECT(val) && OBJ_IS_NATIVE(JSVAL_TO_OBJECT(val));
}
/***************************************************************************/
JSBool
jsd_GetValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
{
jsval val = jsdval->val;
if(!JSVAL_IS_BOOLEAN(val))
return JS_FALSE;
return JSVAL_TO_BOOLEAN(val);
}
int32
jsd_GetValueInt(JSDContext* jsdc, JSDValue* jsdval)
{
jsval val = jsdval->val;
if(!JSVAL_IS_INT(val))
return 0;
return JSVAL_TO_INT(val);
}
jsdouble*
jsd_GetValueDouble(JSDContext* jsdc, JSDValue* jsdval)
{
jsval val = jsdval->val;
if(!JSVAL_IS_DOUBLE(val))
return 0;
return JSVAL_TO_DOUBLE(val);
}
JSString*
jsd_GetValueString(JSDContext* jsdc, JSDValue* jsdval)
{
JSContext* cx = jsdc->dumbContext;
JSExceptionState* exceptionState;
if(!jsdval->string)
{
/* if the jsval is a string, then we don't need to double root it */
if(JSVAL_IS_STRING(jsdval->val))
jsdval->string = JSVAL_TO_STRING(jsdval->val);
else
{
exceptionState = JS_SaveExceptionState(cx);
jsdval->string = JS_ValueToString(cx, jsdval->val);
JS_RestoreExceptionState(cx, exceptionState);
if(jsdval->string)
{
if(!JS_AddRoot(cx, &jsdval->string))
jsdval->string = NULL;
}
}
}
return jsdval->string;
}
const char*
jsd_GetValueFunctionName(JSDContext* jsdc, JSDValue* jsdval)
{
JSContext* cx = jsdc->dumbContext;
jsval val = jsdval->val;
JSFunction* fun;
JSExceptionState* exceptionState;
if(!jsdval->funName && JSVAL_IS_FUNCTION(cx, val))
{
exceptionState = JS_SaveExceptionState(cx);
fun = JS_ValueToFunction(cx, val);
JS_RestoreExceptionState(cx, exceptionState);
if(!fun)
return NULL;
jsdval->funName = JS_GetFunctionName(fun);
}
return jsdval->funName;
}
/***************************************************************************/
JSDValue*
jsd_NewValue(JSDContext* jsdc, jsval val)
{
JSDValue* jsdval;
if(!(jsdval = (JSDValue*) calloc(1, sizeof(JSDValue))))
return NULL;
if(JSVAL_IS_GCTHING(val))
{
if(!JS_AddRoot(jsdc->dumbContext, &jsdval->val))
{
free(jsdval);
return NULL;
}
}
jsdval->val = val;
jsdval->nref = 1;
JS_INIT_CLIST(&jsdval->props);
return jsdval;
}
void
jsd_DropValue(JSDContext* jsdc, JSDValue* jsdval)
{
JS_ASSERT(jsdval->nref > 0);
if(0 == --jsdval->nref)
{
jsd_RefreshValue(jsdc, jsdval);
if(JSVAL_IS_GCTHING(jsdval->val))
JS_RemoveRoot(jsdc->dumbContext, &jsdval->val);
free(jsdval);
}
}
jsval
jsd_GetValueWrappedJSVal(JSDContext* jsdc, JSDValue* jsdval)
{
return jsdval->val;
}
static JSDProperty* _newProperty(JSDContext* jsdc, JSPropertyDesc* pd,
uintN additionalFlags)
{
JSDProperty* jsdprop;
if(!(jsdprop = (JSDProperty*) calloc(1, sizeof(JSDProperty))))
return NULL;
JS_INIT_CLIST(&jsdprop->links);
jsdprop->nref = 1;
jsdprop->flags = pd->flags | additionalFlags;
jsdprop->slot = pd->slot;
if(!(jsdprop->name = jsd_NewValue(jsdc, pd->id)))
goto new_prop_fail;
if(!(jsdprop->val = jsd_NewValue(jsdc, pd->value)))
goto new_prop_fail;
if((jsdprop->flags & JSDPD_ALIAS) &&
!(jsdprop->alias = jsd_NewValue(jsdc, pd->alias)))
goto new_prop_fail;
return jsdprop;
new_prop_fail:
jsd_DropProperty(jsdc, jsdprop);
return NULL;
}
static void _freeProps(JSDContext* jsdc, JSDValue* jsdval)
{
JSDProperty* jsdprop;
while(jsdprop = (JSDProperty*)jsdval->props.next,
jsdprop != (JSDProperty*)&jsdval->props)
{
JS_REMOVE_AND_INIT_LINK(&jsdprop->links);
jsd_DropProperty(jsdc, jsdprop);
}
JS_ASSERT(JS_CLIST_IS_EMPTY(&jsdval->props));
CLEAR_BIT_FLAG(jsdval->flags, GOT_PROPS);
}
static JSBool _buildProps(JSDContext* jsdc, JSDValue* jsdval)
{
JSContext* cx = jsdc->dumbContext;
JSPropertyDescArray pda;
uintN i;
JS_ASSERT(JS_CLIST_IS_EMPTY(&jsdval->props));
JS_ASSERT(!(CHECK_BIT_FLAG(jsdval->flags, GOT_PROPS)));
JS_ASSERT(JSVAL_IS_OBJECT(jsdval->val));
if(!JSVAL_IS_OBJECT(jsdval->val) || JSVAL_IS_NULL(jsdval->val))
return JS_FALSE;
if(!JS_GetPropertyDescArray(cx, JSVAL_TO_OBJECT(jsdval->val), &pda))
return JS_FALSE;
for(i = 0; i < pda.length; i++)
{
JSDProperty* prop = _newProperty(jsdc, &pda.array[i], 0);
if(!prop)
{
_freeProps(jsdc, jsdval);
break;
}
JS_APPEND_LINK(&prop->links, &jsdval->props);
}
JS_PutPropertyDescArray(cx, &pda);
SET_BIT_FLAG(jsdval->flags, GOT_PROPS);
return !JS_CLIST_IS_EMPTY(&jsdval->props);
}
#undef DROP_CLEAR_VALUE
#define DROP_CLEAR_VALUE(jsdc, x) if(x){jsd_DropValue(jsdc,x); x = NULL;}
void
jsd_RefreshValue(JSDContext* jsdc, JSDValue* jsdval)
{
JSContext* cx = jsdc->dumbContext;
if(jsdval->string)
{
/* if the jsval is a string, then we didn't need to root the string */
if(!JSVAL_IS_STRING(jsdval->val))
JS_RemoveRoot(cx, &jsdval->string);
jsdval->string = NULL;
}
jsdval->funName = NULL;
jsdval->className = NULL;
DROP_CLEAR_VALUE(jsdc, jsdval->proto);
DROP_CLEAR_VALUE(jsdc, jsdval->parent);
DROP_CLEAR_VALUE(jsdc, jsdval->ctor);
_freeProps(jsdc, jsdval);
jsdval->flags = 0;
}
/***************************************************************************/
uintN
jsd_GetCountOfProperties(JSDContext* jsdc, JSDValue* jsdval)
{
JSDProperty* jsdprop;
uintN count = 0;
if(!(CHECK_BIT_FLAG(jsdval->flags, GOT_PROPS)))
if(!_buildProps(jsdc, jsdval))
return 0;
for(jsdprop = (JSDProperty*)jsdval->props.next;
jsdprop != (JSDProperty*)&jsdval->props;
jsdprop = (JSDProperty*)jsdprop->links.next)
{
count++;
}
return count;
}
JSDProperty*
jsd_IterateProperties(JSDContext* jsdc, JSDValue* jsdval, JSDProperty **iterp)
{
JSDProperty* jsdprop = *iterp;
if(!(CHECK_BIT_FLAG(jsdval->flags, GOT_PROPS)))
{
JS_ASSERT(!jsdprop);
if(!_buildProps(jsdc, jsdval))
return NULL;
}
if(!jsdprop)
jsdprop = (JSDProperty*)jsdval->props.next;
if(jsdprop == (JSDProperty*)&jsdval->props)
return NULL;
*iterp = (JSDProperty*)jsdprop->links.next;
JS_ASSERT(jsdprop);
jsdprop->nref++;
return jsdprop;
}
JSDProperty*
jsd_GetValueProperty(JSDContext* jsdc, JSDValue* jsdval, JSString* name)
{
JSContext* cx = jsdc->dumbContext;
JSDProperty* jsdprop;
JSDProperty* iter = NULL;
JSObject* obj;
uintN attrs = 0;
JSBool found;
JSPropertyDesc pd;
const jschar * nameChars;
size_t nameLen;
jsval val;
if(!jsd_IsValueObject(jsdc, jsdval))
return NULL;
/* If we already have the prop, then return it */
while(NULL != (jsdprop = jsd_IterateProperties(jsdc, jsdval, &iter)))
{
JSString* propName = jsd_GetValueString(jsdc, jsdprop->name);
if(propName && !JS_CompareStrings(propName, name))
return jsdprop;
JSD_DropProperty(jsdc, jsdprop);
}
/* Not found in property list, look it up explicitly */
if(!(obj = JSVAL_TO_OBJECT(jsdval->val)))
return NULL;
nameChars = JS_GetStringChars(name);
nameLen = JS_GetStringLength(name);
/* It's OK if this fails - we just don't get attribs */
JS_GetUCPropertyAttributes(cx, obj, nameChars, nameLen, &attrs, &found);
if(!JS_GetUCProperty(cx, obj, nameChars, nameLen, &val))
return NULL;
/* XXX screwy! no good way to detect that property does not exist at all */
if(!found && JSVAL_IS_VOID(val))
return NULL;
pd.id = STRING_TO_JSVAL(name);
pd.value = val;
pd.alias = pd.slot = pd.spare = 0;
pd.flags = 0
| (attrs & JSPROP_ENUMERATE) ? JSPD_ENUMERATE : 0
| (attrs & JSPROP_READONLY) ? JSPD_READONLY : 0
| (attrs & JSPROP_PERMANENT) ? JSPD_PERMANENT : 0;
return _newProperty(jsdc, &pd, JSDPD_HINTED);
}
JSDValue*
jsd_GetValuePrototype(JSDContext* jsdc, JSDValue* jsdval)
{
if(!(CHECK_BIT_FLAG(jsdval->flags, GOT_PROTO)))
{
JSObject* obj;
JSObject* proto;
JS_ASSERT(!jsdval->proto);
SET_BIT_FLAG(jsdval->flags, GOT_PROTO);
if(!JSVAL_IS_OBJECT(jsdval->val))
return NULL;
if(!(obj = JSVAL_TO_OBJECT(jsdval->val)))
return NULL;
if(!(proto = OBJ_GET_PROTO(jsdc->dumbContext,obj)))
return NULL;
jsdval->proto = jsd_NewValue(jsdc, OBJECT_TO_JSVAL(proto));
}
if(jsdval->proto)
jsdval->proto->nref++;
return jsdval->proto;
}
JSDValue*
jsd_GetValueParent(JSDContext* jsdc, JSDValue* jsdval)
{
if(!(CHECK_BIT_FLAG(jsdval->flags, GOT_PARENT)))
{
JSObject* obj;
JSObject* parent;
JS_ASSERT(!jsdval->parent);
SET_BIT_FLAG(jsdval->flags, GOT_PARENT);
if(!JSVAL_IS_OBJECT(jsdval->val))
return NULL;
if(!(obj = JSVAL_TO_OBJECT(jsdval->val)))
return NULL;
if(!(parent = OBJ_GET_PARENT(jsdc->dumbContext,obj)))
return NULL;
jsdval->parent = jsd_NewValue(jsdc, OBJECT_TO_JSVAL(parent));
}
if(jsdval->parent)
jsdval->parent->nref++;
return jsdval->parent;
}
JSDValue*
jsd_GetValueConstructor(JSDContext* jsdc, JSDValue* jsdval)
{
if(!(CHECK_BIT_FLAG(jsdval->flags, GOT_CTOR)))
{
JSObject* obj;
JSObject* proto;
JSObject* ctor;
JS_ASSERT(!jsdval->ctor);
SET_BIT_FLAG(jsdval->flags, GOT_CTOR);
if(!JSVAL_IS_OBJECT(jsdval->val))
return NULL;
if(!(obj = JSVAL_TO_OBJECT(jsdval->val)))
return NULL;
if(!(proto = OBJ_GET_PROTO(jsdc->dumbContext,obj)))
return NULL;
if(!(ctor = JS_GetConstructor(jsdc->dumbContext,proto)))
return NULL;
jsdval->ctor = jsd_NewValue(jsdc, OBJECT_TO_JSVAL(ctor));
}
if(jsdval->ctor)
jsdval->ctor->nref++;
return jsdval->ctor;
}
const char*
jsd_GetValueClassName(JSDContext* jsdc, JSDValue* jsdval)
{
jsval val = jsdval->val;
if(!jsdval->className && JSVAL_IS_OBJECT(val))
{
JSObject* obj;
if(!(obj = JSVAL_TO_OBJECT(val)))
return NULL;
if(OBJ_GET_CLASS(jsdc->dumbContext, obj))
jsdval->className = OBJ_GET_CLASS(jsdc->dumbContext, obj)->name;
}
return jsdval->className;
}
/***************************************************************************/
/***************************************************************************/
JSDValue*
jsd_GetPropertyName(JSDContext* jsdc, JSDProperty* jsdprop)
{
jsdprop->name->nref++;
return jsdprop->name;
}
JSDValue*
jsd_GetPropertyValue(JSDContext* jsdc, JSDProperty* jsdprop)
{
jsdprop->val->nref++;
return jsdprop->val;
}
JSDValue*
jsd_GetPropertyAlias(JSDContext* jsdc, JSDProperty* jsdprop)
{
if(jsdprop->alias)
jsdprop->alias->nref++;
return jsdprop->alias;
}
uintN
jsd_GetPropertyFlags(JSDContext* jsdc, JSDProperty* jsdprop)
{
return jsdprop->flags;
}
uintN
jsd_GetPropertyVarArgSlot(JSDContext* jsdc, JSDProperty* jsdprop)
{
return jsdprop->slot;
}
void
jsd_DropProperty(JSDContext* jsdc, JSDProperty* jsdprop)
{
JS_ASSERT(jsdprop->nref > 0);
if(0 == --jsdprop->nref)
{
JS_ASSERT(JS_CLIST_IS_EMPTY(&jsdprop->links));
DROP_CLEAR_VALUE(jsdc, jsdprop->val);
DROP_CLEAR_VALUE(jsdc, jsdprop->name);
DROP_CLEAR_VALUE(jsdc, jsdprop->alias);
free(jsdprop);
}
}

View File

@@ -0,0 +1,12 @@
/* jband - 10/26/98 - */
js/jsd/jsdb is a console debugger using only native code. It is experimental.
The only makefile supplied is for Win32.
jsdb.mak will build a debugger enabled js/src/js.c shell. The debugger is
implemented by reflecting the JSD api into JavaScript. The actual debugger
logic is fully implemented in debugger.js. The debugger can debug itself. It
can also be modified and reloaded at runtime.
The JavaScript keyword 'debugger' is used to break into the debugger. A 'help()'
command is supplied to show available commands when exectution is stopped.

File diff suppressed because it is too large Load Diff

46
mozilla/js/jsd/jsdb/f.js Normal file
View File

@@ -0,0 +1,46 @@
/**
* for(var p in Script.scripts) {
*
* var script = Script.scripts[p];
* var handle = script.handle;
* var base = script.base;
* var limit = base + script.extent;
*
* print(script+"\n");
*
* for(var i = base; i < limit; i++) {
* var pc = jsd.GetClosestPC(handle,i)
* var hascode = String(pc).length && i == jsd.GetClosestLine(handle,pc);
* print("line "+i+" "+ (hascode ? "has code" : "has NO code"));
* }
* print("...............................\n");
* }
*/
function rlocals()
{
var retval = "";
var name = "___UNIQUE_NAME__";
var fun = ""+
"var text = \\\"\\\";"+
"for(var p in ob)"+
"{"+
" if(text != \\\"\\\")"+
" text += \\\",\\\";"+
" text += p;"+
"}"+
"return text;";
reval(name+" = new Function(\"ob\",\""+fun+"\")");
// show(name);
retval = _reval([name+"("+"arguments.callee"+")"]);
reval("delete "+name);
return retval;
}
function e(a)
{
return eval(a);
}

449
mozilla/js/jsd/jsdb/jsdb.c Normal file
View File

@@ -0,0 +1,449 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* JSDB public and callback functions
*/
#include "jsdbpriv.h"
/***************************************************************************/
JS_STATIC_DLL_CALLBACK(void)
_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report)
{
int i, j, k, n;
fputs("jsdb: ", stderr);
if (!report) {
fprintf(stderr, "%s\n", message);
return;
}
if (report->filename)
fprintf(stderr, "%s, ", report->filename);
if (report->lineno)
fprintf(stderr, "line %u: ", report->lineno);
fputs(message, stderr);
if (!report->linebuf) {
putc('\n', stderr);
return;
}
fprintf(stderr, ":\n%s\n", report->linebuf);
n = report->tokenptr - report->linebuf;
for (i = j = 0; i < n; i++) {
if (report->linebuf[i] == '\t') {
for (k = (j + 8) & ~7; j < k; j++)
putc('.', stderr);
continue;
}
putc('.', stderr);
j++;
}
fputs("^\n", stderr);
}
JS_STATIC_DLL_CALLBACK(void)
jsdb_ScriptHookProc(JSDContext* jsdc,
JSDScript* jsdscript,
JSBool creating,
void* callerdata)
{
JSDB_Data* data = (JSDB_Data*) callerdata;
JSFunction* fun;
if(data->jsScriptHook &&
NULL != (fun = JS_ValueToFunction(data->cxDebugger, data->jsScriptHook)))
{
jsval result;
jsval args[2] = {P2H_SCRIPT(data->cxDebugger, jsdscript),
creating ? JSVAL_TRUE : JSVAL_FALSE };
JS_CallFunction(data->cxDebugger, NULL, fun, 2, args, &result);
}
}
uintN JS_DLL_CALLBACK
jsdb_ExecHookHandler(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
uintN type,
void* callerdata,
jsval* rval)
{
uintN ourRetVal = JSD_HOOK_RETURN_CONTINUE;
jsval result;
JSFunction* fun;
int answer;
JSDB_Data* data = (JSDB_Data*) callerdata;
JS_ASSERT(data);
/* if we're already stopped, then don't stop */
if(data->jsdthreadstate)
return JSD_HOOK_RETURN_CONTINUE;
if(!jsdb_SetThreadState(data, jsdthreadstate))
goto label_bail;
if(data->jsExecutionHook &&
NULL != (fun = JS_ValueToFunction(data->cxDebugger, data->jsExecutionHook)))
{
jsval arg = INT_TO_JSVAL((int)type);
if(!JS_CallFunction(data->cxDebugger, NULL, fun, 1, &arg, &result))
goto label_bail;
if(!JSVAL_IS_INT(result))
goto label_bail;
answer = JSVAL_TO_INT(result);
if((answer == JSD_HOOK_RETURN_RET_WITH_VAL ||
answer == JSD_HOOK_RETURN_THROW_WITH_VAL) &&
!jsdb_EvalReturnExpression(data, rval))
{
goto label_bail;
}
if(answer >= JSD_HOOK_RETURN_HOOK_ERROR &&
answer <= JSD_HOOK_RETURN_CONTINUE_THROW)
ourRetVal = answer;
else
ourRetVal = JSD_HOOK_RETURN_CONTINUE;
}
label_bail:
jsdb_SetThreadState(data, NULL);
return ourRetVal;
}
typedef enum
{
ARG_MSG = 0,
ARG_FILENAME,
ARG_LINENO,
ARG_LINEBUF,
ARG_TOKEN_OFFSET,
ARG_LIMIT
} ER_ARGS;
uintN JS_DLL_CALLBACK
jsdb_ErrorReporter(JSDContext* jsdc,
JSContext* cx,
const char* message,
JSErrorReport* report,
void* callerdata)
{
uintN ourRetVal = JSD_ERROR_REPORTER_PASS_ALONG;
jsval result;
JSFunction* fun;
int32 answer;
JSDB_Data* data = (JSDB_Data*) callerdata;
JS_ASSERT(data);
if(data->jsErrorReporterHook &&
NULL != (fun = JS_ValueToFunction(data->cxDebugger,
data->jsErrorReporterHook)))
{
jsval args[ARG_LIMIT] = {JSVAL_NULL};
if(message)
args[ARG_MSG] =
STRING_TO_JSVAL(JS_NewStringCopyZ(cx, message));
if(report && report->filename)
args[ARG_FILENAME] =
STRING_TO_JSVAL(JS_NewStringCopyZ(cx, report->filename));
if(report && report->linebuf)
args[ARG_LINEBUF] =
STRING_TO_JSVAL(JS_NewStringCopyZ(cx, report->linebuf));
if(report)
args[ARG_LINENO] =
INT_TO_JSVAL(report->lineno);
if(report && report->linebuf && report->tokenptr)
args[ARG_TOKEN_OFFSET] =
INT_TO_JSVAL((int)(report->tokenptr - report->linebuf));
if(!JS_CallFunction(data->cxDebugger, NULL, fun, ARG_LIMIT, args, &result))
return ourRetVal;
if(JS_ValueToInt32(data->cxDebugger, result, &answer))
ourRetVal = (uintN) answer;
}
return ourRetVal;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
uintN i;
JSString *str;
const char *filename;
JSScript *script;
JSBool ok;
jsval result;
ok = JS_TRUE;
for (i = 0; i < argc; i++) {
str = JS_ValueToString(cx, argv[i]);
if (!str) {
ok = JS_FALSE;
break;
}
argv[i] = STRING_TO_JSVAL(str);
filename = JS_GetStringBytes(str);
errno = 0;
script = JS_CompileFile(cx, obj, filename);
if (!script)
continue;
ok = JS_ExecuteScript(cx, obj, script, &result);
JS_DestroyScript(cx, script);
if (!ok)
break;
}
JS_GC(cx);
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,""));
return ok;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
JSString *str = JS_ValueToString(cx, argv[0]);
if (!str)
return JS_FALSE;
printf(JS_GetStringBytes(str));
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,""));
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Gets(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char buf[1024];
if(! gets(buf))
return JS_FALSE;
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, buf));
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
Version(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
if (argc > 0 && JSVAL_IS_INT(argv[0]))
*rval = INT_TO_JSVAL(JS_SetVersion(cx, JSVAL_TO_INT(argv[0])));
else
*rval = INT_TO_JSVAL(JS_GetVersion(cx));
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
SafeEval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
static char default_filename[] = "jsdb_eval";
/* JSContext *cx2; */
JSString* textJSString;
char* filename;
int32 lineno;
JSDB_Data* data = (JSDB_Data*) JS_GetContextPrivate(cx);
JS_ASSERT(data);
if(argc < 1 || !(textJSString = JS_ValueToString(cx, argv[0])))
{
JS_ReportError(cx, "safeEval requires source text as a first argument");
return JS_FALSE;
}
if(argc < 2)
filename = default_filename;
else
{
JSString* filenameJSString;
if(!(filenameJSString = JS_ValueToString(cx, argv[1])))
{
JS_ReportError(cx, "safeEval passed non-string filename as 2nd param");
return JS_FALSE;
}
filename = JS_GetStringBytes(filenameJSString);
}
if(argc < 3)
lineno = 1;
else
{
if(!JS_ValueToInt32(cx, argv[2], &lineno))
{
JS_ReportError(cx, "safeEval passed non-int lineno as 3rd param");
return JS_FALSE;
}
}
if(! JS_EvaluateScript(cx, obj,
JS_GetStringBytes(textJSString),
JS_GetStringLength(textJSString),
filename, lineno, rval))
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,""));
return JS_TRUE;
}
JS_STATIC_DLL_CALLBACK(JSBool)
NativeBreak(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
#ifdef _WINDOWS
_asm int 3;
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,"did _asm int 3;"));
#else
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,"only supported for Windows"));
#endif
return JS_TRUE;
}
static JSFunctionSpec debugger_functions[] = {
{"version", Version, 0},
{"load", Load, 1},
{"write", Write, 0},
{"gets", Gets, 0},
{"safeEval", SafeEval, 3},
{"nativeBreak", NativeBreak, 0},
{0}
};
static JSClass debugger_global_class = {
"debugger_global", 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub
};
/***************************************************************************/
#ifdef JSD_LOWLEVEL_SOURCE
/*
* This facilitates sending source to JSD (the debugger system) in the shell
* where the source is loaded using the JSFILE hack in jsscan. The function
* below is used as a callback for the jsdbgapi JS_SetSourceHandler hook.
* A more normal embedding (e.g. mozilla) loads source itself and can send
* source directly to JSD without using this hook scheme.
*/
static void
SendSourceToJSDebugger(const char *filename, uintN lineno,
jschar *str, size_t length,
void **listenerTSData, JSDContext* jsdc)
{
JSDSourceText *jsdsrc = (JSDSourceText *) *listenerTSData;
if (!jsdsrc) {
if (!filename)
filename = "typein";
if (1 == lineno) {
jsdsrc = JSD_NewSourceText(jsdc, filename);
} else {
jsdsrc = JSD_FindSourceForURL(jsdc, filename);
if (jsdsrc && JSD_SOURCE_PARTIAL !=
JSD_GetSourceStatus(jsdc, jsdsrc)) {
jsdsrc = NULL;
}
}
}
if (jsdsrc) {
jsdsrc = JSD_AppendUCSourceText(jsdc,jsdsrc, str, length,
JSD_SOURCE_PARTIAL);
}
*listenerTSData = jsdsrc;
}
#endif /* JSD_LOWLEVEL_SOURCE */
static JSBool
_initReturn(const char* str, JSBool retval)
{
if(str)
printf("%s\n", str);
if(retval)
; /* printf("debugger initialized\n"); */
else
{
JS_ASSERT(0);
printf("debugger FAILED to initialize\n");
}
return retval;
}
#define MAX_DEBUGGER_DEPTH 3
JS_EXPORT_API(JSBool)
JSDB_InitDebugger(JSRuntime* rt, JSDContext* jsdc, int depth)
{
jsval rvalIgnore;
static char load_deb[] = "load('debugger.js')";
JSDB_Data* data = (JSDB_Data*) calloc(1, sizeof(JSDB_Data));
if(!data)
return _initReturn("memory alloc error", JS_FALSE);
data->rtTarget = rt;
data->jsdcTarget = jsdc;
data->debuggerDepth = depth+1;
if(!(data->rtDebugger = JS_NewRuntime(8L * 1024L * 1024L)))
return _initReturn("debugger runtime creation error", JS_FALSE);
if(!(data->cxDebugger = JS_NewContext(data->rtDebugger, 8192)))
return _initReturn("debugger creation error", JS_FALSE);
JS_SetContextPrivate(data->cxDebugger, data);
JS_SetErrorReporter(data->cxDebugger, _ErrorReporter);
if(!(data->globDebugger =
JS_NewObject(data->cxDebugger, &debugger_global_class, NULL, NULL)))
return _initReturn("debugger global object creation error", JS_FALSE);
if(!JS_InitStandardClasses(data->cxDebugger, data->globDebugger))
return _initReturn("debugger InitStandardClasses error", JS_FALSE);
if(!JS_DefineFunctions(data->cxDebugger, data->globDebugger, debugger_functions))
return _initReturn("debugger DefineFunctions error", JS_FALSE);
if(!jsdb_ReflectJSD(data))
return _initReturn("debugger reflection of JSD API error", JS_FALSE);
if(data->debuggerDepth < MAX_DEBUGGER_DEPTH)
{
JSDContext* jsdc;
if(!(jsdc = JSD_DebuggerOnForUser(data->rtDebugger, NULL, NULL)))
return _initReturn("failed to create jsdc for nested debugger", JS_FALSE);
JSD_JSContextInUse(jsdc, data->cxDebugger);
if(!JSDB_InitDebugger(data->rtDebugger, jsdc, data->debuggerDepth))
return _initReturn("failed to init nested debugger", JS_FALSE);
}
JSD_SetScriptHook(jsdc, jsdb_ScriptHookProc, data);
JSD_SetDebuggerHook(jsdc, jsdb_ExecHookHandler, data);
JSD_SetThrowHook(jsdc, jsdb_ExecHookHandler, data);
JSD_SetDebugBreakHook(jsdc, jsdb_ExecHookHandler, data);
JSD_SetErrorReporter(jsdc, jsdb_ErrorReporter, data);
#ifdef JSD_LOWLEVEL_SOURCE
JS_SetSourceHandler(data->rtDebugger, SendSourceToJSDebugger, jsdc);
#endif /* JSD_LOWLEVEL_SOURCE */
JS_EvaluateScript(data->cxDebugger, data->globDebugger,
load_deb, sizeof(load_deb)-1, "jsdb_autoload", 1,
&rvalIgnore);
return _initReturn(NULL, JS_TRUE);
}

View File

@@ -0,0 +1,50 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* Public headers for JSDB
*/
#ifndef jsdb_h___
#define jsdb_h___
/* Get jstypes.h included first. After that we can use PR macros for doing
* this extern "C" stuff!
*/
#ifdef __cplusplus
extern "C"
{
#endif
#include "jstypes.h"
#ifdef __cplusplus
}
#endif
JS_BEGIN_EXTERN_C
#include "jsapi.h"
#include "jsdebug.h"
JS_END_EXTERN_C
JS_BEGIN_EXTERN_C
extern JS_EXPORT_API(JSBool)
JSDB_InitDebugger(JSRuntime* rt, JSDContext* jsdc, int depth);
JS_END_EXTERN_C
#endif /* jsdb_h___ */

View File

@@ -0,0 +1,102 @@
PROJ = jsdb
JSDB = .
JSD = $(JSDB)\..
JSSRC = $(JSD)\..\src
!IF "$(BUILD_OPT)" != ""
OBJ = Release
CC_FLAGS = /DNDEBUG
!ELSE
OBJ = Debug
CC_FLAGS = /DDEBUG
LINK_FLAGS = /DEBUG
!ENDIF
CFLAGS = /nologo /MDd /W3 /Gm /GX /Zi /Od\
/I $(JSSRC)\
/I $(JSD)\
/I $(JSDB)\
$(CC_FLAGS)\
/DWIN32 /DXP_PC /D_WINDOWS /D_WIN32\
/DJSDEBUGGER\
/DJSDEBUGGER_C_UI\
/DJSD_LOWLEVEL_SOURCE\
/DJSFILE\
/c /Fp$(OBJ)\$(PROJ).pch /Fd$(OBJ)\$(PROJ).pdb /YX -Fo$@ $<
LFLAGS = /nologo /subsystem:console /incremental:no /machine:I386 $(LINK_FLAGS)\
/pdb:$(OBJ)\$(PROJ).pdb -out:$(OBJ)\$(PROJ).exe
LLIBS = kernel32.lib advapi32.lib $(JSSRC)\$(OBJ)\js32.lib $(JSD)\$(OBJ)\jsd.lib
CPP=cl.exe
LINK32=link.exe
all: $(OBJ) dlls $(OBJ)\$(PROJ).exe $(OBJ)\debugger.js
HEADERS = $(JSDB)\jsdb.h \
$(JSDB)\jsdbpriv.h
OBJECTS = $(OBJ)\js.obj \
$(OBJ)\jsdb.obj \
$(OBJ)\jsdrefl.obj
$(OBJECTS) : $(HEADERS)
$(OBJ)\$(PROJ).exe: $(OBJECTS)
$(LINK32) $(LFLAGS) $** $(LLIBS)
.c{$(OBJ)}.obj:
$(CPP) $(CFLAGS)
{$(JSSRC)}.c.obj:
$(CPP) $(CFLAGS)
$(OBJ) :
mkdir $(OBJ)
$(OBJ)\js32.dll :
@cd ..\..\src
@nmake -f js.mak CFG="js - Win32 Debug"
@cd ..\jsd\jsdb
@echo Copying dll from js/src
@copy $(JSSRC)\$(OBJ)\js32.dll $(OBJ) >NUL
@copy $(JSSRC)\$(OBJ)\js32.pdb $(OBJ) >NUL
$(OBJ)\jsd.dll :
@cd ..
@nmake -f jsd.mak JSD_THREADSAFE=1
@cd jsdb
@echo Copying dll from js/jsd
@copy $(JSD)\$(OBJ)\jsd.dll $(OBJ) >NUL
@copy $(JSD)\$(OBJ)\jsd.pdb $(OBJ) >NUL
dlls : $(OBJ)\js32.dll $(OBJ)\jsd.dll
$(OBJ)\debugger.js: *.js
@echo Copying *.js
@copy *.js $(OBJ) >NUL
clean:
@echo Deleting built files
@del $(OBJ)\*.pch >NUL
@del $(OBJ)\*.obj >NUL
@del $(OBJ)\*.exp >NUL
@del $(OBJ)\*.lib >NUL
@del $(OBJ)\*.idb >NUL
@del $(OBJ)\*.pdb >NUL
@del $(OBJ)\*.dll >NUL
@del $(OBJ)\*.exe >NUL
deep_clean: clean
@cd ..\..\src
@nmake -f js.mak CFG="js - Win32 Debug" clean
@cd ..\jsd\jsdb
@cd ..
@nmake -f jsd.mak clean
@cd jsdb

View File

@@ -0,0 +1,117 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
* Private Headers for JSDB
*/
#ifndef jsdbpriv_h___
#define jsdbpriv_h___
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "jstypes.h"
#include "jsutil.h" /* Added by JSIFY */
#include "jsprf.h"
#include "jsdbgapi.h"
#include "jsdb.h"
/***************************************************************************/
typedef struct JSDB_Data
{
JSDContext* jsdcTarget;
JSRuntime* rtTarget;
JSRuntime* rtDebugger;
JSContext* cxDebugger;
JSObject* globDebugger;
JSObject* jsdOb;
jsval jsScriptHook;
jsval jsExecutionHook;
jsval jsErrorReporterHook;
JSDThreadState* jsdthreadstate;
int debuggerDepth;
} JSDB_Data;
extern JSBool
jsdb_ReflectJSD(JSDB_Data* data);
/***********************************/
/*
* System to store JSD_xxx handles in jsvals. This supports tracking the
* handle's type - both for debugging and for automatic 'dropping' of
* reference counted handle types (e.g. JSDValue).
*/
typedef enum
{
JSDB_GENERIC = 0,
JSDB_CONTEXT,
JSDB_SCRIPT,
JSDB_SOURCETEXT,
JSDB_THREADSTATE,
JSDB_STACKFRAMEINFO,
JSDB_VALUE,
JSDB_PROPERTY,
JSDB_OBJECT
} JSDBHandleType;
#define H2P_GENERIC(cx,val) (void*) jsdb_HandleValToPointer((cx),(val),JSDB_GENERIC)
#define H2P_CONTEXT(cx,val) (JSDContext*) jsdb_HandleValToPointer((cx),(val),JSDB_CONTEXT)
#define H2P_SCRIPT(cx,val) (JSDScript*) jsdb_HandleValToPointer((cx),(val),JSDB_SCRIPT)
#define H2P_SOURCETEXT(cx,val) (JSDSourceText*) jsdb_HandleValToPointer((cx),(val),JSDB_SOURCETEXT)
#define H2P_THREADSTATE(cx,val) (JSDThreadState*) jsdb_HandleValToPointer((cx),(val),JSDB_THREADSTATE)
#define H2P_STACKFRAMEINFO(cx,val) (JSDStackFrameInfo*) jsdb_HandleValToPointer((cx),(val),JSDB_STACKFRAMEINFO)
#define H2P_VALUE(cx,val) (JSDValue*) jsdb_HandleValToPointer((cx),(val),JSDB_VALUE)
#define H2P_PROPERTY(cx,val) (JSDProperty*) jsdb_HandleValToPointer((cx),(val),JSDB_PROPERTY)
#define H2P_OBJECT(cx,val) (JSDObject*) jsdb_HandleValToPointer((cx),(val),JSDB_OBJECT)
#define P2H_GENERIC(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_GENERIC)
#define P2H_CONTEXT(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_CONTEXT)
#define P2H_SCRIPT(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_SCRIPT)
#define P2H_SOURCETEXT(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_SOURCETEXT)
#define P2H_THREADSTATE(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_THREADSTATE)
#define P2H_STACKFRAMEINFO(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_STACKFRAMEINFO)
#define P2H_VALUE(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_VALUE)
#define P2H_PROPERTY(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_PROPERTY)
#define P2H_OBJECT(cx,ptr) jsdb_PointerToNewHandleVal((cx),(ptr),JSDB_OBJECT)
extern jsval
jsdb_PointerToNewHandleVal(JSContext *cx, void* ptr, JSDBHandleType type);
extern void*
jsdb_HandleValToPointer(JSContext *cx, jsval val, JSDBHandleType type);
/***********************************/
extern JSBool
jsdb_SetThreadState(JSDB_Data* data, JSDThreadState* jsdthreadstate);
extern uintN JS_DLL_CALLBACK
jsdb_ExecHookHandler(JSDContext* jsdc,
JSDThreadState* jsdthreadstate,
uintN type,
void* callerdata,
jsval* rval);
extern JSBool
jsdb_EvalReturnExpression(JSDB_Data* data, jsval* rval);
#endif /* jsdbpriv_h___ */

File diff suppressed because it is too large Load Diff

1
mozilla/js/jsd/jsdb/mk.bat Executable file
View File

@@ -0,0 +1 @@
nmake -f jsdb.mak %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -0,0 +1,56 @@
// some tests...
function set_a(a) {this.a = a;}
function set_b(b) {this.b = b;}
function set_c(c) {this.c = c;}
function f_ctor(a,b,c)
{
this.set_a = set_a;
this.set_b = set_b;
this.set_c = set_c;
// NOTE: these break JSD_LOWLEVEL_SOURCE in shell debugger
this.get_a = new Function("return this.a;");
// this.get_b = new Function("return this.b;");
// this.get_c = new Function("return this.c;");
// this.get_a = function() {return this.a;};
this.get_b = function() {return this.b;};
this.get_c = function() {return this.c;};
this.set_a(a);
this.set_b(b);
this.set_c(c);
}
function f2_ctor(param)
{
this.A = new f_ctor(1,2,3);
this.b = new f_ctor("A","B","C");
this.number = param;
}
function callMe()
{
var A = new f2_ctor(1);
debugger;
var b = new f2_ctor(5);
}
function foo(a,b,c,d,e,f)
{
var g;
var h;
var i;
var j;
debugger;
}
A = new f2_ctor(0);
AA = new f2_ctor(100);
callMe();
foo(1,2,3,4,5);
A.A.set_b(8);
print(A.A.get_b());

View File

@@ -0,0 +1 @@
load('objects.js')

1077
mozilla/js/jsd/jsdebug.c Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More