Commit Graph

4201 Commits

Author SHA1 Message Date
igor%mir2.org
052726b68e From my email:
I think recent Christopher suggestions about tail call elimination is worth
to consider, as it would allow to cut invocation cost of script functions
quite nicely in many cases. Plus I am thinking of not creating Object[] array
to pass arguments to callee if it is another interpreted function as it can
directly access the caller stack. But first I decided to make some
preparation work to simplify an implementation of these features later. The
attached patch includes:

1. Moving all code to setup scope from
InterpretedFunction.call/InterpretedFunction.call to Interpreter.interpret so
the call method simply calls Interpreter.interpret. It would make tail call
elimination code much simple. I also hope this simplifies changes Christopher
needs for the continuations support (but I have strong reservation about
possibility to implement it corectly).

2. Moving all declaration of temporary variables used only during processing
of the single ICODE to the case blocks.

3. Interpreter loop termination only in RETURN icodes, not when pc exceeds
icode size, so there is no need to check for this condition on each icode.
(Scripts are handled via the special END_ICODE token).
2002-03-20 20:00:32 +00:00
pschwartau%netscape.com
ca2670e317 Fixing a blunder in Section 4, and changing from brackets to braces for ECMA attribute. 2002-03-20 19:24:08 +00:00
pschwartau%netscape.com
096af14c9a Deleted an extraneous line; improved readablity. 2002-03-20 19:13:36 +00:00
khanson%netscape.com
5bf172e81d Patch 74900 for bug #131817 (OOM in AllocSrcNote causes crash in js_NewSrcNote). The patch was contributed by Steven Cole (scole@planetweb.com), sr=brendan, r=khanson, a=scc 2002-03-20 05:45:12 +00:00
brendan%mozilla.org
94a74d7db5 Defend against early OOM when finishing JSDHashTables (131815, r=scole, sr=jband, a=asa). 2002-03-20 02:22:50 +00:00
pschwartau%netscape.com
9845964018 Initial add. Regression test for bug 131964. 2002-03-20 00:23:22 +00:00
brendan%mozilla.org
a0f36bedac Fix ChangeScopeTable gross dimensioning bug (131904, r=scole&khanson, sr=jband, a=asa). 2002-03-19 23:25:17 +00:00
brendan%mozilla.org
cdad9798f3 Fix 'var arguments;' in a function by specializing to JSOP_ARGUMENTS properly (131510, r=khanson, sr=jband, a=asa). 2002-03-19 22:51:48 +00:00
timeless%mac.com
dec943eb10 Bug 106386 rid source of misspellings
r=db48x sr=blake a=asa
2002-03-19 04:30:17 +00:00
igor%mir2.org
f3b1270e05 IdScriptable.maxInstanceId/IdScriptable.activateIdMap is replaced by getMaxId/setMaxId to have more flexible and simple id map initialization. 2002-03-18 01:26:01 +00:00
igor%mir2.org
94f37d49ae Code to setup/restore security domain is moved to single place in Interpreter.interpret to make checking for correctness easy. 2002-03-17 20:10:31 +00:00
igor%mir2.org
fcad2bdee8 cosmetics: change layout of Interpreter.interpret main switch from
switch (...)
    case LABEL:
        code
to
switch (...)
case LABEL:
    code

to has less problems with fitting to 80-character lines
2002-03-17 18:40:11 +00:00
brendan%mozilla.org
0c6a6e0115 Forgot to check this in yesterday: fix all engine-defined getters and setters to have no slot [to be JSPROP_SHARED] (130970, r/sr=shaver&jband, a=asa). 2002-03-17 11:01:34 +00:00
pschwartau%netscape.com
0b1e425b90 Initial add. Regression test for bug 131510. 2002-03-17 05:24:01 +00:00
igor%mir2.org
712ea8149c Activate support for getting token names if debugging interpreter icode, not only when debugging parsing trees. Not to depend in TokenStream on Interpreter, printICode debug flag is moved to Context, as with printTrees definition.
Fixing debug printing of icode which are not defined in TokenStream
2002-03-17 03:34:43 +00:00
igor%mir2.org
d262e89e9f Added .cvsignore to ignore generated sources 2002-03-16 23:34:23 +00:00
igor%mir2.org
42891fc50d Fixing serialization problem reported by Todd Trimmer (babyduck@usa.com):
...

>I did some tinkering and found there are pure java.lang.Object
>instantiations deep inside all the "standard objects" added to the
>ImporterTopLevel with Context.initStandardObject(). This is what is keeping
>it from serializing.

This is due to presence of Scriptable.NOT_FOUND and IdScriptable.NULL_VALUE tags in the data to serialize.

I replaced the type for the tags from Object to UniqueTag which is serializable ad knows how to make restored tags the same objects as Scriptable.NOT_FOUND and IdScriptable.NULL_VALUE.

Similarly Undefined was made serializable and to restore to Undefined.instance upon reading.
2002-03-16 23:31:04 +00:00
brendan%mozilla.org
9402b61613 Null test to handle recovery from OOM under js_NewContext reported by scole@planetweb.com (r/sr=jband, a=me). 2002-03-16 23:19:35 +00:00
nboyd%atg.com
48465ddb68 Patch from Christopher Olivier:
While looking into optimizing the modifications I've
made, I noticed that one of the bottlenecks seemed to be calls to the Java
instanceof operator, particularly if the class argument to instanceof isn't
final. Based on this observation I tweaked ScriptRuntime.java to attempt to avoid
some of the many "instanceof Scriptable" calls in it (which I've attached). In
particular I optimized the comparison operators for the case where the arguments
are Number's. This seems to provide some significant performance improvement in
many cases particularly in compiled mode.  See below (note the tests were
performed with today's rhinoLatest.zip code patched with the attached
ScriptRuntime.java and didn't include any of my other modifications).
2002-03-16 19:33:46 +00:00
brendan%mozilla.org
1e126a67d9 Restore non-bogus assertion removed in last rev, and fix the case that tripped it in js_ChangeScopeProperty, by not removing [and maybe freeing sprop->slot] before re-adding sprop; also fix all engine-defined getters and setters to have no slot [to be JSPROP_SHARED] (130970, r/sr=shaver&jband, a=asa). 2002-03-16 04:51:29 +00:00
rginda%netscape.com
f7bdb90b75 bug 129519, "JS_GetPropertyDesc gives up too easily", r=jband, sr=shaver, a=bren
dan
Reflect new JSPD_* defines, make jsd_GetValueProperty degrade gracefully instead of fail outright when we run into a problem fetching the property value.
2002-03-16 01:58:36 +00:00
rginda%netscape.com
5ab837c899 bug 129519, "JS_GetPropertyDesc gives up too easily", r=jband, sr=shaver, a=bren
dan
Make JS_GetPropertyDesc degrade gracefully instead of fail outright when we run
into a problem fetching the property value.
2002-03-16 01:56:19 +00:00
igor%mir2.org
89206ab364 1. Implementing Externalizable interface in ObjToIntMap and UintMap to allow for efficient storage of internal hash table data. For ObjToIntMap it allows to restore correctly cached values of object's hash codes and do not store internal DELETED mark.
2. ObjToIntMap.clear and UintMap.clear now do not discard internal buffers, but clears references to external objects to match behavior of Java Vector.clear and Hashtable.clear.
2002-03-15 07:13:33 +00:00
khanson%netscape.com
e67d7ec049 bug #130991 (Out-of-Memory in jsshell causes assertion failure in jsobj.c) patch by Brendan, sr=jband, r=khanson, a=asa 2002-03-15 06:22:00 +00:00
pschwartau%netscape.com
ca999dce75 Added two new cases where the result is all zeros. 2002-03-15 05:15:57 +00:00
jband%netscape.com
78b2988012 fix bug 130139. We are iterating an array of pointers not an array of objects. r=dbradley sr=brendan a=asa. 2002-03-15 04:10:25 +00:00
khanson%netscape.com
be5d94c4a1 bug #130711, r=khanson, sr=brendan, a=asa, memory leak in JS_dtoa 2002-03-15 00:11:44 +00:00
brendan%mozilla.org
40ba9a0a2a Remove bogus assertion, tripped by js_ChangeScopePropertyAttrs calling js_AddScopeProperty (130970, r=shaver, sr=jband, a=shaver). 2002-03-14 21:59:16 +00:00
brendan%mozilla.org
6f45f575a4 Fix JS/PL_DHashTableEnumerate to compress or shrink the table after enumeration using the same logic as ADD and REMOVE use (120953, r=dbaron, sr=shaver, a=asa). 2002-03-14 21:55:08 +00:00
timeless%mac.com
0a6eb6a388 Bug 61314 Makefile rules for "jsmath.o" and "jsmathtemp.o" cause stale object files, obscure bugs
patch by mang@subcarrier.org r=rogerl sr=brendan a=asa
2002-03-14 21:41:09 +00:00
igor%mir2.org
e6d6980a29 ObjToIntMap was added to map Objects to int in a memory wise way and VariableTable was modified to use ObjToIntMap for itsVariableNames 2002-03-14 20:37:15 +00:00
brendan%mozilla.org
62bc0d659b No strict warnings without the strict option, and other js1.5/mozilla1.0 tidying (129972, r=shaver, sr=jband, a=asa). 2002-03-14 00:14:48 +00:00
brendan%mozilla.org
d3a05a01eb Fix Array.prototype.sort to follow ECMA and win perf by not (re-)defining length on the 'this' object (130451, r=shaver, sr=jband, a=asa). 2002-03-14 00:10:31 +00:00
nboyd%atg.com
b0dabdc3df Turn on debug info in class files by default. 2002-03-13 19:34:23 +00:00
nboyd%atg.com
e584b07f01 Fix problem reported in newsgroup:
If I have a Java class with a normal method that throws an exception, Rhino
(1.5pre4) will let JavaScript catch the exception. If the Java class has a
getter method, Rhino will NOT let JavaScript catch the exception. Very
disturbing.

Here's a console dump to show you what I'm talking about:

D:\jsSandbox>cat GIJoe.java
public class GIJoe
{
        // Getter
        public static int getYoJoe()
                throws Exception
        {
                throw new Exception("Please catch me!");
        }

        // Normal
        public static int rebel()
                throws Exception
        {
                throw new Exception("Please catch me too!");
        }
}
D:\jsSandbox>javac GIJoe.java

D:\jsSandbox>cat gi.js
var gi = new Packages.GIJoe();

try
{
        var i = gi.rebel();
        java.lang.System.err.println("rebel(): uncaught");
}
catch(e1)
{
        java.lang.System.err.println("rebel(): caught");
}


try
{
        var i = gi.yoJoe;
        java.lang.System.err.println("yoJoe: uncaught");
}
catch(e2)
{
        java.lang.System.err.println("yoJoe: caught");
}


D:\jsSandbox>java -cp .;e:\javas\rhino1_5R4pre\js.jar
org.mozilla.javascript.too
ls.shell.Main
js> load("gi.js");
rebel(): caught
java.lang.Exception: Please catch me!
org.mozilla.javascript.WrappedException: WrappedException of Please catch
me!
        at org.mozilla.javascript.JavaMembers.get(JavaMembers.java:105)
        at
org.mozilla.javascript.NativeJavaObject.get(NativeJavaObject.java:93)

        at
org.mozilla.javascript.ScriptRuntime.getProp(ScriptRuntime.java:691)
        at
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1591)
        at
org.mozilla.javascript.InterpretedScript.call(InterpretedScript.java:
63)
        at
org.mozilla.javascript.InterpretedScript.exec(InterpretedScript.java:
54)
        at org.mozilla.javascript.Context.evaluateReader(Context.java:741)
        at
org.mozilla.javascript.tools.shell.Main.evaluateReader(Main.java:347)

        at
org.mozilla.javascript.tools.shell.Main.processSource(Main.java:336)
        at org.mozilla.javascript.tools.shell.Global.load(Global.java:169)
        at java.lang.reflect.Method.invoke(Native Method)
        at
org.mozilla.javascript.FunctionObject.callVarargs(FunctionObject.java
:586)
        at
org.mozilla.javascript.FunctionObject.call(FunctionObject.java:460)
        at
org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1216)
        at
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1679)
        at
org.mozilla.javascript.InterpretedScript.call(InterpretedScript.java:
63)
        at
org.mozilla.javascript.InterpretedScript.exec(InterpretedScript.java:
54)
        at org.mozilla.javascript.Context.evaluateReader(Context.java:741)
        at
org.mozilla.javascript.tools.shell.Main.evaluateReader(Main.java:347)

        at
org.mozilla.javascript.tools.shell.Main.processSource(Main.java:284)
        at org.mozilla.javascript.tools.shell.Main.exec(Main.java:146)
        at org.mozilla.javascript.tools.shell.Main.main(Main.java:74)
js>



Due to a lack of an "uncaught" statement in the output, we see that the
exception from GIJoe::getYoJoe() was indeed thrown, but not caught by the
JavaScript.

Do any nightly builds past 1.5pre4 address this issue?


Todd Trimmer
2002-03-13 13:33:40 +00:00
brendan%mozilla.org
05d2d349ce khanson@netscape.com's patch to switch from QuickSort to heap-sort, plus a crucial ECMA-purity/property-tree-perf fix to InitArrayObject (to SET rather than DEFINE; bug 99120, r=waldemar, sr=shaver&brendan, a=asa). 2002-03-13 01:50:13 +00:00
igor%mir2.org
f5b8fd5697 Rename catchStack to tryStack and allocate it only when required 2002-03-12 22:02:55 +00:00
igor%mir2.org
5e73d7338f Move definitions of interpreter bytecode specific tokens like BREAKPOINT or INTNUMBER to Interpreter.java.
Use switch instead of string array to return token names not to depend on token oder.
2002-03-12 22:00:56 +00:00
brendan%mozilla.org
21978efea8 Missing JSFunction API (129545, r=shaver, sr=jband, a=asa). 2002-03-12 21:58:27 +00:00
brendan%mozilla.org
5074f6ebd1 Don't forget to lock obj in js_AddNativeProperty and js_ChangeNativePropertyAttrs (130137, r=jband, sr=shaver, a=roc+moz). 2002-03-12 07:17:30 +00:00
gerv%gerv.net
f66a83002c Replacing original licensing text from C version of this file. 2002-03-11 23:11:55 +00:00
jband%netscape.com
cb6ae8ad3e fix bug 129697. Don't leave a dangling (to crash later) JS root if JS_NewObject fails while creating a wrapped native. r=beard sr=jst a=asa (for trunk and 0.9.9 branch). 2002-03-09 03:01:44 +00:00
brendan%mozilla.org
75a8745d3d Avoid MSVC bogo-warning. 2002-03-09 00:55:26 +00:00
brendan%mozilla.org
efe08cd95c Fix longstanding bug where watchpoints didn't work with JSPROP_SETTER (127243, r=rginda, sr=shaver, a=dbaron). 2002-03-08 22:46:13 +00:00
beard%netscape.com
cb2b8b58fb Fix for bug #123920, prevents reentering the JS engine during Java object JS wrapper finalization, by deferring calls into Java at the end of the garbage collection cycle and storing the wrappers in a linked list, which gets processed by a GC callback.
r=jband, sr=brendan, a=asa
2002-03-08 22:37:40 +00:00
seawood%netscape.com
d97d6d301f This patch replaces the bogus USE_AUTOCONF ifdef + platform ifdef tests with a
simple HAVE_LOCALTIME_R test.  -DHAVE_LOCALTIME_R has been added to the
js/src/config/<platform>.mks as necessary.
bug #128556 r=brendan sr=shaver a=asa
2002-03-08 01:42:32 +00:00
rginda%netscape.com
36a0ec70a8 bug 128057, r=brendan, sr=shaver, a=asa
check for JS_GetPropertyDesc failure in JS_GetPropertyDescArray
2002-03-06 22:12:38 +00:00
darin%netscape.com
f1a6738b6c fixes bug 124042 "support internationalized URIs" r=dougt, sr=alecf, a=asa 2002-03-06 07:48:55 +00:00
pschwartau%netscape.com
aa69c199eb Skip new test that uses the clone() function in SpiderMonkey's js.c file 2002-03-06 05:34:22 +00:00
pschwartau%netscape.com
9ee868f523 Initial add. Regression test for bug 127557. 2002-03-06 05:14:58 +00:00