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
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
- 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).
the errors are being wrapped by runtime exceptions and still need to be
explicitly caught (this is happening in the interpreter, but not in
generated code).
Problem was that one transformation of a node to GETVAR wasn't protected by a check of inWithStatement().
======================================
Subject:
multiple scopes
Date:
Fri, 01 Oct 1999 12:39:14 -0400
From:
Andrew Wason <aw@softcom.com>
To:
norris@netscape.com
CC:
Howard Lin <howard@softcom.com>
When I create two scopes, and one scope evaulates a string in the other
scope, it works. However, if I do this while handling an exception thrown
within a JavaAdapter method, it fails with an exception.
Run the attached Java program with the two script files. scope1.js
evaluates a string "printMessage" in the scope of scope2.js. This returns
a function object which is then invoked. This works in 3 cases, but fails
in the 4th (in the catch in the JavaAdapter). Even in the 4th case where
it fails, printing the function object looks normal.
Am I doing something wrong, or is there a bug here?
java CrossScope scope1.js scope2.js
Outside of JavaAdapter
works before exception
works after exception
Inside of JavaAdapter
works before exception
Caught exception
pma=
function printMessage(msg) {
java.lang.System.out.println(msg);
}
Exception in thread "main" org.mozilla.javascript.JavaScriptException:
org.mozilla.javascript.EvaluatorException: The undefined value has no
properties.
at
org.mozilla.javascript.JavaScriptException.wrapException(JavaScriptException
.java:61)
at
org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java,
Compiled Code)
at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1256)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java,
Compiled Code)
at
org.mozilla.javascript.InterpretedScript.call(InterpretedScript.java:49)
at
org.mozilla.javascript.InterpretedScript.exec(InterpretedScript.java:37)
at org.mozilla.javascript.Context.evaluateReader(Context.java:697)
at CrossScope.<init>(CrossScope.java:30)
at CrossScope.main(CrossScope.java:10)
Thanks,
Andrew
import java.io.*;
import org.mozilla.javascript.*;
public class CrossScope {
private Context m_jsContext;
private Scriptable m_scope1;
private Scriptable m_scope2;
public static void main(String args[]) throws Exception {
new CrossScope(args[0], args[1]);
}
private CrossScope(String strFile1, String strFile2) throws Exception {
// Associate Context with main thread
m_jsContext = Context.enter();
m_jsContext.setOptimizationLevel(-1);
// Init scope1, expose Scope object
m_scope1 = m_jsContext.initStandardObjects(new ImporterTopLevel());
m_scope1.put("Scope", m_scope1, this);
// Init scope2
m_scope2 = m_jsContext.initStandardObjects(new ImporterTopLevel());
// Run script in scope2
Reader r2 = new FileReader(strFile2);
m_jsContext.evaluateReader(m_scope2, r2, strFile2, 1, null);
// Eval input JS in scope1 - it can in turn eval JS over in scope2
Reader r1 = new FileReader(strFile1);
Object obj = m_jsContext.evaluateReader(m_scope1, r1, strFile1, 1, null);
if (obj instanceof Throwable)
((Throwable)obj).printStackTrace();
m_jsContext.exit();
}
public Object scope1Eval(String str) throws JavaScriptException {
Context cx = Context.enter(m_jsContext);
Object objResult = cx.evaluateString(m_scope1, str, "scope1EvalString", 1, null);
cx.exit();
return objResult;
}
public Object scope2Eval(String str) throws JavaScriptException {
Context cx = Context.enter(m_jsContext);
Object objResult = cx.evaluateString(m_scope2, str, "scope2EvalString", 1, null);
cx.exit();
return objResult;
}
}
// Scope1
importPackage(java.lang);
System.out.println("Outside of JavaAdapter");
try {
var pm = Scope.scope2Eval("printMessage");
pm("works before exception");
System.arraycopy(null, 5, null, 5, 100);
} catch (e) {
var pma = Scope.scope2Eval("printMessage");
pma("works after exception");
}
var obj = new Runnable() {
run: function() {
System.out.println("Inside of JavaAdapter");
try {
var pm = Scope.scope2Eval("printMessage");
pm("works before exception");
System.arraycopy(null, 5, null, 5, 100);
} catch (e) {
System.out.println("Caught exception");
var pma = Scope.scope2Eval("printMessage");
System.out.println("pma=" + pma);
pma("works after exception");
}
}
};
obj.run();
// Scope2
function printMessage(msg) {
java.lang.System.out.println(msg);
}
14443 "Same origin" security policy may be circumvented using docu
14820 Fixing up the relationship between nsCodeBasePrincipal and n
14919 Crash in JS MM code
Reviewed by mstoltz, approved by scc.
Subject:
optimizer Makefiles
Date:
Fri, 01 Oct 1999 14:50:05 -0400
From:
Andrew Wason <aw@softcom.com>
To:
norris@netscape.com
CC:
Howard Lin <howard@softcom.com>
Norris,
Here are patches to the Rhino Makefiles to build the optimizer package and
the jsc compiler. They also fix a problem with "gmake clean".
Andrew
--
Andrew Wason
SoftCom, Inc.
aw@softcom.com