Commit Graph

1754 Commits

Author SHA1 Message Date
jband%netscape.com
0a174a879e r=mccabe (I'll be adding more comments to the headers as requested)
Implement nsIXPCNativeCallContext to meet user feature
requirements. This allows simpler implementation of reflection of
native classes into JavaScript in cases where they need to
support legacy interfaces that include optional parameters and
method name overloading. This also provides a general mechanism
for native methods to discover if they were called from JS code,
exactly what JS parameters were passed, explicitly return jsvals,
and throw explicit jsvals without interference from xpconnect.
With test cases.


git-svn-id: svn://10.0.0.236/trunk@50971 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-18 02:53:04 +00:00
neeti%netscape.com
a87ba00c59 Converted dll to use nsIModule -bug 14034, r=jband
git-svn-id: svn://10.0.0.236/trunk@50915 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-16 03:04:16 +00:00
fur%netscape.com
1242a2627f Renamed variable to avoid a compiler warning. R: mccabe
git-svn-id: svn://10.0.0.236/trunk@50868 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 21:38:04 +00:00
mccabe%netscape.com
dc9018f2ee Fix line editing support for the standalone XPCOM-enabled JavaScript shell. To aid debugging on unix platforms.
To use, define JS_READLINE when compiling mozilla/js/src/xpconnect/shell.

r=shaver


git-svn-id: svn://10.0.0.236/trunk@50859 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 21:23:53 +00:00
waterson%netscape.com
9f70f9cb52 Add xpcnativecallcontext.cpp for jband.
git-svn-id: svn://10.0.0.236/trunk@50802 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 07:08:15 +00:00
brendan%mozilla.org
f2330eb459 1. Fixed missing JS_LOCK_GC in JS_YieldRequest, commented other badness there.
2.  Cleaned up ugly JS_GC_Flag typedef name and put XXXbe comment in there for
    next time: someone seems to have patched around a deadlock that has since
    bit chouck@geocast.com.
3.  Fixed gcDisabled by moving it from cx to rt and updating it atomically.
4.  Fixed ECMA violation where for (var i, j in o) ... was permitted; only one
    variable is allowed.
(Item 4 was a bug on rogerl's list, since closed?  r=shaver@mozilla.org.)


git-svn-id: svn://10.0.0.236/trunk@50795 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 05:46:42 +00:00
jband%netscape.com
32f352bb68 adding new empty placeholder file to the build. Will also add it to Mac project via camelot and put real stuff in it after all is stable. r=jband :)
git-svn-id: svn://10.0.0.236/trunk@50793 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 05:09:08 +00:00
shaver%netscape.com
103a22ed8e fix obj_getCount to property destroy state and propagate error (r=jband)
git-svn-id: svn://10.0.0.236/trunk@50787 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 04:32:46 +00:00
brendan%mozilla.org
7c13a9f3b1 Rename ToSource to uneval (r=shaver@mozilla.org,terry@geocast.com).
git-svn-id: svn://10.0.0.236/trunk@50781 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 04:07:59 +00:00
jband%netscape.com
df5ae28aef r=shaver
- Fixed two similar cases where code was missing one level of
pointer dereference in terminating a copied string. Was trashing
data further up the stack.
- Use 'nsAllocator::Free' in two similar cases where 'delete' was
mistakenly used. Error pointed out by Purify.


git-svn-id: svn://10.0.0.236/trunk@50770 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 03:31:09 +00:00
shaver%netscape.com
9a4de938e7 make xpcshell use jsrtsvc, and let jsrtsvc handle JS_Shutdown (r=jband)
git-svn-id: svn://10.0.0.236/trunk@50766 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-15 03:05:48 +00:00
mgleeson1%netscape.com
34c5281c43 r=pepper HPUX specific change - enable 64-bit int for js
git-svn-id: svn://10.0.0.236/trunk@50709 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-14 23:20:27 +00:00
jband%netscape.com
b3711cec39 Fixing leaks found by beard...
- Fixed leaked nsID ptr. bug 16373. This alsothrows a JS
exception when JS callers call createInstance or getService
using an (optional) param that is not an iid. This had been a
'XXX' in the code.
- Moved a release call out of just the error condition block in
setting up a ServiceReleaser. I should have caught this one, but
few of my tests use services :(  I have hopes that the whole
ServiceReleaser will become unnecessary as the ServiceManager
system changes and simply calling NS_RELEASE on a service becomes
sufficient.
- Cleaned up an addref/release pair in a setter (need to move to
nsComPtrs!) r=beard


git-svn-id: svn://10.0.0.236/trunk@50703 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-14 23:08:59 +00:00
cbegle%netscape.com
7519f0fc4c * removed stuff from the idl file that caused warnings
* fixed a typo that caused a warning (nsIsupports)
* fixed values of constants that caused warnings
* use a macro instead of assinging a long long value directly

r=jband


git-svn-id: svn://10.0.0.236/trunk@50518 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-13 00:11:21 +00:00
norris%netscape.com
169ef88ab4 Fix following problem:
Subject:
        another getClassLoader exception
   Date:
        Tue, 12 Oct 1999 10:39:26 -0400
   From:
        Andrew Wason <aw@softcom.com>
     To:
        norris@netscape.com (Norris Boyd)
    CC:
        Howard Lin <howard@softcom.com>




Norris,

It looks like the classes the optimizer generates call
ScriptRuntime.defineFunction which calls getClassLoader.  This throws a
SecurityException.

java.security.AccessControlException: access denied
(java.lang.RuntimePermission getClassLoader )
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java
, Compiled Code)
at java.security.AccessController.checkPermission(AccessController.java,
Compiled Code)
at java.lang.SecurityManager.checkPermission(SecurityManager.java, Compiled
Code)
at java.lang.Class.getClassLoader(Class.java, Compiled Code)
at
org.mozilla.javascript.ScriptRuntime.defineFunction(ScriptRuntime.java:2045)
at org.mozilla.javascript.gen.c5.initScript(order.js)
at org.mozilla.javascript.gen.c5.exec(order.js)
at org.mozilla.javascript.Context.evaluateReader(Context.java:728)
[...]



Andrew
--
Andrew Wason
SoftCom, Inc.
aw@softcom.com


git-svn-id: svn://10.0.0.236/trunk@50514 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-12 23:54:03 +00:00
norris%netscape.com
1d1cd2baaf Fix unix build warning.
Reviewed by rogerl@netscape.com.


git-svn-id: svn://10.0.0.236/trunk@50492 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-12 22:48:17 +00:00
norris%netscape.com
0067ebd9f5 Remove redundant import.
git-svn-id: svn://10.0.0.236/trunk@50479 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-12 21:46:50 +00:00
norris%netscape.com
c813db9f21 Fix release date, add contributor.
git-svn-id: svn://10.0.0.236/trunk@50465 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-12 16:52:13 +00:00
cbegle%netscape.com
d31b3296a7 new files.
new tests for xpconnect.  r=jband.


git-svn-id: svn://10.0.0.236/trunk@50383 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-12 00:12:43 +00:00
rogerl%netscape.com
9a868467c2 NOT A PART OF SEAMONKEY BUILD
- fixed test ECMA references,
- added test to -002


git-svn-id: svn://10.0.0.236/trunk@50368 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-11 22:59:25 +00:00
norris%netscape.com
6a9e7e63c8 Fix bug:
Subject:
        optimizer SecurityException
   Date:
        Mon, 11 Oct 1999 17:37:51 -0400
   From:
        Andrew Wason <aw@softcom.com>
     To:
        norris@netscape.com (Norris Boyd)
    CC:
        Howard Lin <howard@softcom.com>




We use our own SecuritySupport implementation in Rhino.  This is properly
getting called by the optimizer to generate new classes (e.g.
org.mozilla.javascript.gen.c5 etc.)

However, after defining the class, Codegen.compile calls getClassLoader()
on the new class.  The default SecurityManager doesn't allow
getClassLoader() to be called and so an exception is thrown:

java.lang.RuntimeException: Malformed optimizer package
java.security.AccessControlException: access denied
(java.lang.RuntimePermission getClassLoader )
        at org.mozilla.javascript.optimizer.Codegen.compile(Codegen.java:138)
        at org.mozilla.javascript.Context.compile(Context.java:1761)
        at org.mozilla.javascript.Context.compile(Context.java:1691)
        at org.mozilla.javascript.Context.compileReader(Context.java:810)
        at org.mozilla.javascript.Context.evaluateReader(Context.java:725)
        [...]

This is kind of a pain to duplicate outside of our application, but if you
require a test case I can create one.

Codegen is attempting to call loadClass() after it uses
SecuritySupport.defineClass().  Our SecuritySupport calls loadClass()
internally in its defineClass() implementation.  This is what JavaAdapter
expects.

This is from Codegen.compile():

                         if (securitySupport == null) {
                             if (Context.isSecurityDomainRequired())
                                 throw new SecurityException("Required " +
                                             "security context missing");
                             if (classLoader == null)
                                 classLoader = new JavaScriptClassLoader();
                             clazz = classLoader.defineClass(name, classFile);
                         } else {
                             clazz = securitySupport.defineClass(name,
classFile,
                                                                 securityDom
securityDomain);
                         }
                         ClassLoader loader = clazz.getClassLoader();
                         clazz = loader.loadClass(name);


This is from JavaAdapter.createAdapterClass():


         SecuritySupport ss = cx.getSecuritySupport();
         if (ss != null)  {
             Object securityDomain = cx.getSecurityDomainForStackDepth(-1);
             return ss.defineClass(adapterName, bytes, securityDomain);
         } else {
             if (classLoader == null)
                 classLoader = new MyClassLoader();
             classLoader.defineClass(adapterName, bytes);
             return classLoader.loadClass(adapterName, true);
         }


So JavaAdapter is assuming SecuritySupport.defineClass() will call
ClassLoader.loadClass() on the new class, while Codegen is assuming it
needs to call ClassLoader.loadClass() on the class defined by
SecuritySupport.defineClass().

These should be made consistent, and in both cases it should be assumed
that SecuritySupport will both define and load the class.


Andrew
--
Andrew Wason
SoftCom, Inc.
aw@softcom.com


git-svn-id: svn://10.0.0.236/trunk@50367 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-11 22:48:13 +00:00
rogerl%netscape.com
2fc190da13 NOT A PART OF SEAMONKEY BUILD
- removed redundant test & fixed test for 'super' to detect syntax error


git-svn-id: svn://10.0.0.236/trunk@50366 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-11 22:38:40 +00:00
jband%netscape.com
8d3833cb33 Much of this is under the auspices of bug 15794. r=mccabe.
- map xpcshell's 'quit()' to a loop exit rather than calling
'exit(0)' so that the cleanup and leak detection code will still
get called.

- add NS_InitXPCOM and NS_ShutdownXPCOM to xpcshell to run said
cleanup and leak detection code.

- use more NS_IF_* macros

- fix numerous places where code assumed that
nsXPConnect::GetXPConnect() does not add a new ref on the
xpconnect singleton object (the behavior changed some time back
but not all the uses did - brainfade!).

- fix nsXPCException::NewException to automatically trim
'dataless' native stackframes off of the front of a stack trace.
The old system of manually telling it how many frames to trim was
not working well. We really want the first frame showing to be an
'interesting' frame so that callers who get exceptions thrown at
them will see some useful information rather than an empty native
frame that represents (but says nothing about) some native frame
in the xpconnect runtime.

- remove an extra addref from the trimming loop in
nsXPCException::NewException.

- Stop building XPCJSStack objects. XPConnect stacks are singly
linked lists of XPCJSStackFrame objects with refcounted links. I
had this stupid idea that each object would have a refcounted
link to a XPCJSStack object that would tie together the lifetimes
of all objects in the chain. This was overcomplex and
unnecessary. The linked list was enough. Any frame without a
refcount deserved to be deleted because it is simply unreachable.
There was no reason to tie together all the lifetimes of each
object in the chain. So this has been simplified in a big way.

- fixed place in xpcthrower.cpp where we were leaking a refcount
on the xpconnect singleton each time an xpcexception was thrown.

- do cleanup and gc() at the end of xpctest_echo.js to use for
leak testing - all wrappers should go away.


git-svn-id: svn://10.0.0.236/trunk@50309 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-09 06:01:57 +00:00
rogerl%netscape.com
5e3057bc5f Fixed 14060 - calling exec on java methods was gettmg caught by exec
trapping nonsense.


git-svn-id: svn://10.0.0.236/trunk@50266 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-08 22:55:33 +00:00
cbegle%netscape.com
6389e9eed1 Adding new files. Tests for XPConnect. These files are not part of the
build.  R=jband@netscape.com


git-svn-id: svn://10.0.0.236/trunk@50245 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-08 20:45:37 +00:00
kipp%netscape.com
e18af2d0ee Cleanup moz-decl-counter usage and fix NS_LOG_ADDREF usage
git-svn-id: svn://10.0.0.236/trunk@50239 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-08 20:41:19 +00:00
warren%netscape.com
c9fbdb8075 Fixed AddRef/Release problems to eliminate negative refcounts in Bloaty.
git-svn-id: svn://10.0.0.236/trunk@50188 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-08 01:49:06 +00:00
jband%netscape.com
1c2af52291 fix warning of old style C++ variable scope declared in 'for'. bug 15778. r=slamm
git-svn-id: svn://10.0.0.236/trunk@50176 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-08 00:11:05 +00:00
rogerl%netscape.com
e143bf497c Fixed build failures - these files are NOT part of the seamonkey build.
git-svn-id: svn://10.0.0.236/trunk@50125 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-07 20:45:27 +00:00
rogerl%netscape.com
750861810b Fixed error reporting to not smack the source line with a zero, but use
copyN instead - things were failing when very last line of input had an
error and didn't end with '\n'. r=mccabe


git-svn-id: svn://10.0.0.236/trunk@50124 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-07 20:44:40 +00:00
rogerl%netscape.com
df73818e4c Fixed build warnings by removing macros with '{..}'.
Made str_escape available for jsfile.
r=mccabe


git-svn-id: svn://10.0.0.236/trunk@50122 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-07 20:42:20 +00:00
rogerl%netscape.com
7ba994995c Making str_escape available for jsfile use. r=mccabe.
git-svn-id: svn://10.0.0.236/trunk@50121 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-07 20:41:15 +00:00
rogerl%netscape.com
cfd4889e52 Bug #12168. Catch new Array(NaN). r=mccabe.
git-svn-id: svn://10.0.0.236/trunk@50120 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-07 20:40:17 +00:00
norris%netscape.com
9754a010ca Fix 15711 Can't call java.lang.Class methods from JS
git-svn-id: svn://10.0.0.236/trunk@50112 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-07 18:27:21 +00:00
norris%netscape.com
5ca75e8020 Subject:
Re: NPL vs. MPL
       Date:
            Wed, 06 Oct 1999 18:30:34 -0400
      From:
            "Ian D. Stewart" <idstewart@softhome.net>
        To:
            Norris Boyd <norris@netscape.com>
 References:
            1 , 2 , 3




Norris Boyd wrote:

  Great. So I'd like to change this copyright text

  /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset:
  4 -*-
   *
   * The contents of this file are subject to the Mozilla Public License
   * Version 1.0 (the "MozPL"); you may not use this file except in
   * compliance with the MozPL.  You may obtain a copy of the MozPL at
   * http://www.mozilla.org/NPL/
   *
   * Software distributed under the MozPL is distributed on an "AS IS"
  basis,
   * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  MozPL
   * for the specific language governing rights and limitations under the
   * MozPL.
   *
   * The Initial Developer of this code under the MozPL is Ian D. Stewart.

   * Portions created by Ian D. Stewart are Copyright (C) 1998, 1999
   * Ian D. Stewart.
   * All Rights Reserved.
   */

  to this:

  /* -*- Mode: java; 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.1 (the "License"); you may not use this file
   * except in compliance with the License. You may obtain a copy of
   * the License at http://www.mozilla.org/NPL/
   *
   * Software distributed under the License is distributed on an "AS
   * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
   * implied. See the License for the specific language governing
   * rights and limitations under the License.
   *
   * The Original Code is ListenerCollection, released
   * May 15, 1998.
   *
   * The Initial Developer of the Original Code is Ian D. Stewart.
   * Portions created by Ian D. Stewart are Copyright (C) 1998, 1999
   * Ian D. Stewart.
   * Rights Reserved.
   *
   * Contributor(s):
   * Ian D. Stewart
   *
   * Alternatively, the contents of this file may be used under the
   * terms of the GNU Public License (the "GPL"), in which case the
   * provisions of the GPL are applicable instead of those above.
   * If you wish to allow use of your version of this file only
   * under the terms of the GPL and not to allow others to use your
   * version of this file under the NPL, indicate your decision by
   * deleting the provisions above and replace them with the notice
   * and other provisions required by the GPL.  If you do not delete
   * the provisions above, a recipient may use your version of this
   * file under either the NPL or the GPL.
   */

  Can you give me your approval for this change?

Make it so.


Ian


git-svn-id: svn://10.0.0.236/trunk@50111 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-07 16:57:01 +00:00
rogerl%netscape.com
b1873070a7 More errors-as-exceptions stuff
git-svn-id: svn://10.0.0.236/trunk@50054 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 23:55:33 +00:00
norris%netscape.com
48f3a0603c More license wrangling: fix the release date (1999, not 1998).
git-svn-id: svn://10.0.0.236/trunk@50031 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 21:52:17 +00:00
jband%netscape.com
cd534a023e - the rest of the fix for bug 14738 - detect JSErrors with
JSErrorReports when thrown as exceptions. Extract JSErrorReport
and convert to an xpcexception. This restores functionality that
was whacked when JS errors-as-exceptions was enabled in the JS
engine.
- add conversion support for string-with-length as part of array
support mentioned in bug 13420. All the array stuff is basically
in with minimal testcases. More comprehensive tests need to be
written to verify and tune the code.
- fix a broken #undef
- switch to using PR_Alloc/PR_Free internally in nsjsid where we
were using new/delete before. This is prompted by warren's change
to nsID::ToString that uses PR_Alloc were before it used new.
This fixes an alloc/delete mismatch detected by Purify.
r=mccabe


git-svn-id: svn://10.0.0.236/trunk@50024 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 21:35:27 +00:00
sspitzer%netscape.com
ac743ecce8 fix for #15197 (and a whole bunch of duplicates).
fix by vidur, r=rogerl


git-svn-id: svn://10.0.0.236/trunk@50023 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 21:31:34 +00:00
beard%netscape.com
e6c61c5ffe added EcmaError.java, NativeError.java
git-svn-id: svn://10.0.0.236/trunk@50017 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 21:07:04 +00:00
norris%netscape.com
734f2fb55c Update contributors, add some license text.
git-svn-id: svn://10.0.0.236/trunk@50012 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 20:50:04 +00:00
cbegle%netscape.com
4cdb11b194 tests for javascript errors as exceptions, a feature that was recently
added to the javascript engine.

not part of the build.


git-svn-id: svn://10.0.0.236/trunk@50011 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 20:45:44 +00:00
norris%netscape.com
522636a5de Make sure creation of class loader is inside a try block to handle security exceptions.
git-svn-id: svn://10.0.0.236/trunk@49979 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 17:39:48 +00:00
brendan%mozilla.org
3188df57a2 Fix Object.prototype.toSource so it parenthesizes outermost-toSource literals for eval roundtrips.
git-svn-id: svn://10.0.0.236/trunk@49971 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 09:09:31 +00:00
brendan%mozilla.org
a17b679975 Top-level ToSource function for primitive type roundtrips.
git-svn-id: svn://10.0.0.236/trunk@49958 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 06:37:55 +00:00
brendan%mozilla.org
e8d09fd3a6 Fix two multi-threaded GC-rooting bugs:
- js_NewFunction wasn't initializing (clearing) JSFunction members before it
  linked the JSFunction to a JSObject that the GC could reach from a root.
- Make sure frame.scopeChain is cleared before linking frame via cx->fp, even
  though we set frame.scopeChain to some object later (another signal that we
  should rework js_Invoke to inline it and otherwise optimize it).


git-svn-id: svn://10.0.0.236/trunk@49957 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 06:29:43 +00:00
rogerl%netscape.com
74e6cc86a3 Added version 150, changed version testing in regexp
git-svn-id: svn://10.0.0.236/trunk@49911 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-06 00:10:27 +00:00
rogerl%netscape.com
ac914fc99e Bug #14545 - get array length exceptions working with non-Number array
contructor arguments.


git-svn-id: svn://10.0.0.236/trunk@49874 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-05 22:11:57 +00:00
jband%netscape.com
32816676db the JS engine part of the fix for bug 14738. This does two things: 1) expose the JSClass for JSError so that it is possible to detect from the outside if a given JSObject is of that JSError class, and 2) expose an api call via which the JSErrorReport can be extracted from a JSError (if present). This change required renaming the JSClass used for JSError, so many lines were touched
git-svn-id: svn://10.0.0.236/trunk@49861 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-05 21:07:23 +00:00
rogerl%netscape.com
51378fb74f Errors as exceptions working from generated code.
git-svn-id: svn://10.0.0.236/trunk@49848 18797224-902f-48f8-a5cc-f745e15eee43
1999-10-05 19:44:24 +00:00