Commit Graph

1865 Commits

Author SHA1 Message Date
igor%mir2.org
0689482587 Fixing bug 255891: just without throwing exceptions about non-js values for compatibility. 2004-08-17 18:33:38 +00:00
igor%mir2.org
09701f4359 Removal of bogus comments about parser usage. 2004-08-17 17:23:44 +00:00
igor%mir2.org
bef500ee34 Making most of TokenStream methods package-private: the class can not be made package-private itself as regexps implementation needs TokenStream.isJSLineTerminator(). 2004-08-17 17:18:14 +00:00
igor%mir2.org
20f6aade13 Moving IFGlue internal class of JavaAdapter into separated source file and renaming it to InterfaceAdapter to have more manageable code. 2004-08-16 17:14:24 +00:00
igor%mir2.org
93887dc7c3 Fixing regression caused by new JavaImporter, see bug 245882. 2004-08-16 16:11:27 +00:00
igor%mir2.org
4deb4c2996 More E4X credits 2004-08-16 14:19:44 +00:00
igor%mir2.org
2b2decb7d3 Fixing regression caused by the committed patch under bug 255595 2004-08-16 09:57:15 +00:00
igor%mir2.org
5f3d7d50b3 Credits to BEA for E4X implementation. 2004-08-15 09:05:30 +00:00
igor%mir2.org
a480374b2f Build modifications to make Context.getImplementationVersion() to return string defined in build property files with automatic timestamping. 2004-08-14 22:44:22 +00:00
igor%mir2.org
c7b18deb40 Deprecating PropertyException as a part of common exception root changes, see 244492. 2004-08-14 16:45:30 +00:00
igor%mir2.org
eed65b7987 Using Kit.initCause to wrap the original exception preventing creation of SecurityController class. 2004-08-14 16:42:33 +00:00
igor%mir2.org
e1db421213 Documenting ClassFactory usage 2004-08-14 15:17:40 +00:00
igor%mir2.org
82fc688a4b Fixing compatibility issue caused by introduction of ContextFactory. See bug 255595 . 2004-08-14 15:12:38 +00:00
igor%mir2.org
5f819fdbb3 Fixing JavaDoc 2004-08-14 15:08:32 +00:00
igor%mir2.org
8899a6261b Changing Kit.initCause to take and return RuntimeException: this is how it is supposed to be used, that is wrap checkable exceptions into uncheckable RuntimeExceptions. 2004-08-14 15:07:50 +00:00
igor%mir2.org
0f600362d0 Use common API to extract value associated with top scope prototype chain
not to duplicate code
2004-08-14 13:57:39 +00:00
igor%mir2.org
d5de09d352 NativeScript no longer implements Script interface which was kept only f
or compatibility.
2004-08-14 10:29:09 +00:00
igor%mir2.org
b33cc857e0 The scope argument is removed from Context.decompileScript() since
decompilation does not depends on scope.
For compatibility the old signature is preserved as a deprecated method.
2004-08-14 10:28:15 +00:00
igor%mir2.org
406e4ecd31 More JavaDoc comments including Context customization example 2004-08-14 09:01:26 +00:00
igor%mir2.org
fb9b2ea140 Fixing broken HTML markup in JavaDoc comments. 2004-08-14 06:44:39 +00:00
igor%mir2.org
83a55815ca Renaming Kit.initCauseOrNull into simple Kit.initCause and making it to
return the passed exception to allow usage like:

throw Kit.initCause(new RuntimeException("WRAPPED"), origException);
2004-08-13 23:45:52 +00:00
igor%mir2.org
3a68eb5402 Fixing bug 255549: proper resolution of overloaded methods. 2004-08-13 19:31:32 +00:00
nboyd%atg.com
2268b493bb Prepare release candidate for 1.6R1. 2004-08-12 02:00:09 +00:00
igor%mir2.org
98d50120c7 Using explicit JavaImporter constructor to make namespace for swing and using it later with the "with" statement to get access to Java classes.
In this way the example can be used in an application that does not use ImporterTopLevel.
2004-08-10 16:11:13 +00:00
igor%mir2.org
e4d1c4896b 1. Separating compilation into bytecode and wrapping it into Script and Function instances both for the interpreter and class compiler. It is possible now to serialize the compiled interpreter bytecode and then wrap it in proper security context.
The change required to move security domain information form InterpreterData to its Scriptable wrappers. To simplify it and to make the interpreted functions to behave exactly as class compiled I merged InterpretedScript into InterpretedFunction which allowed to remove many casts and discrepancies when handling script and function instances.

2. Explicitly passing Interpreter instances to Context.compile... functions to avoid changing optimization level even temporarily.

3. Uniform initialization of class compiled and interpreted functions and scripts to avoid code duplication.
2004-08-10 16:06:56 +00:00
igor%mir2.org
771b98446a In JavaAdapter.currentFactory() do not assume that there is always active Context available and fallback to ContextFactory.getGlobal() in that case. 2004-08-10 15:52:19 +00:00
igor%mir2.org
31ff23cd2e Simpler SyntxError handling:
Since changes to fix bug 254778 made the parser the sole source of syntax error reports, it removed the need to check for errors after tree transformation.

The patch removes those checks and moves all reporting about syntax errors into omj/Parser.java.
2004-08-09 18:04:18 +00:00
igor%mir2.org
ca75e5c0c8 Fixing bug 254915: proper name lookup etc. 2004-08-09 16:57:06 +00:00
igor%mir2.org
5f71fe6973 Top call scope tracking changes:
Since E4X implementation needs to know the activation scope for tracking of default namespaces, previously an elaborated schema was added to set/restore the activation scope which relied on the fact that scrip and function with activation record should always call special entry/exit functions.

But that does not work for functions without activation records since they never call any special entry/exit pairs. So if application call such function directly, the function would not store its top scope anywhere and the E4X subsystem would not be able to get E4X library object.

The patch fixes with introduction of 2 functions, hasTopCall and doTopCall to ScriptRuntime and adding the following code prefix to each implementation of Callable.call that can start execution of script code:

    public Object call(Context cx, Scriptable scope,
                       Scriptable thisObj, Object[] args)
        throws JavaScriptException
    {
// Prefix start
        if (!ScriptRuntime.hasTopCall(cx)) {
            return ScriptRuntime.doTopCall(this, cx, scope, thisObj, args);
        }
// Prefix end
        ...

In this way there is always registered top scope during script execution and the previous elaborated schema became unnecessary so I reverted that part to almost pre-E4x state.
2004-08-09 11:00:47 +00:00
igor%mir2.org
792304a2a9 Fixing bug 254778: proper treatment of labels 2004-08-08 13:45:09 +00:00
igor%mir2.org
c70ca4f034 More switch parsing/code generation cleanups: now IRFactory constructs the proper parsed tree for the switch statement which removed the need for tree mutations in NodeTransformer and during code generation. 2004-08-07 20:08:38 +00:00
igor%mir2.org
0426521c68 Cleanup for code generation in interpreter: store itsICodeTop as instance variable to avoid clattering code with explicit passing of iCodeTop, 2004-08-07 15:42:13 +00:00
igor%mir2.org
4731a8f0f9 Switch parsing cleanup including reporting syntax error on duplicated default label 2004-08-07 15:39:55 +00:00
igor%mir2.org
87d0f3525d Preparations for 1.6R1 2004-08-06 16:05:40 +00:00
igor%mir2.org
8bcaa1a262 Class-Path entry for Rhino: xmlbean.jar 2004-08-06 15:49:25 +00:00
igor%mir2.org
0d8bd6fe39 Cleanup of call code generation: now it is split into separated functions for optimized/standard function calls. 2004-08-06 15:08:38 +00:00
igor%mir2.org
11ce08544d Removal of no longer used debug name index in Token.CALL/Token.REF_CALL: ScriptRuntime.get(Elem|Prop|Name|Value)FunctionAndThis takes care about debugging themselves. 2004-08-06 15:02:48 +00:00
igor%mir2.org
743dad92a4 GeneratedClassLoader is API class and should be listed in apiClasses.properties 2004-08-05 06:06:30 +00:00
igor%mir2.org
0cf7fb3e59 Restoring ScriptRuntime.call: BSF uses it! 2004-08-04 17:42:56 +00:00
igor%mir2.org
53e6af4c84 Allow to pass JS-wrapped instances of org.apache.xmlbeans.XmlCursor and org.apache.xmlbeans.XmlObject to XML constructor to make proper XML objects from them. 2004-08-04 17:32:48 +00:00
igor%mir2.org
ec4ab45708 Preparations for Rhino 1.6R1 RC1 2004-08-04 17:28:11 +00:00
igor%mir2.org
4a8da93dda 1. Recently introduced ScriptableObject.default(Prototype|ParentScope)() methods had problems with serialization and are removed now. XML code explicitly sets parent/prototype. To simplify that ScriptableObject now contains a special constructor taking scope and prototype arguments.
2. xml/XMLObject do not define lib() method and instead defines few abstract methods to create "with" proxies and perform addition.

3. XMLLib implementation is stored in the scope using ScriptableObject.associateValue() and does not depend on presence of proper XML object.
2004-08-04 12:54:03 +00:00
igor%mir2.org
35ca775423 Preparations for 1.6R1 RC1 2004-08-03 17:13:40 +00:00
igor%mir2.org
b73081a5a8 Cosmetics: untabify 2004-08-02 17:49:04 +00:00
igor%mir2.org
73d09ce2c9 Added runtime support to allow custom wrapping of XML objects 2004-08-02 14:46:33 +00:00
igor%mir2.org
81e82296c8 Use ScriptRuntime.notAFunction to report bad ScriptableObject.callMethod arguments 2004-08-02 14:44:03 +00:00
igor%mir2.org
e32e12b401 Explicit ScriptRuntime methods to get function and function this for all cases of method calls:
ScriptRuntime.get(Name|Prop|Elem|Value)FunctionAndThis provides uniform way to get function object and its this during function calls. It allowed to simplify handling of method calls both in interpreter and optimizer and opened a way to implement independent processing of function and property namespaces.
2004-08-01 23:21:17 +00:00
igor%mir2.org
49d1f565ca More compatibility renames: to simplify life for applications that use old IdScriptable/IdFunction/IdFunctionMaster I farther renamed:
IdFunction -> IdFunctionObject
IdFunctionMaster -> IdFunctionCall
2004-07-30 13:18:30 +00:00
igor%mir2.org
52f9db3360 Compatibility rename: due to changes in IdScrittable any code that sublasses
it has to be updated. This is done for Rhino classes and since IdScriptable
is not a part of public API, it should not matter. But in reality someone can
subclass IdScriptable in application code.

To help with upgrade in such cases I renamed IdScriptable into
IdScriptableObject. In this way the application using IdScriptable code can add
old IdScriptable class to its CLASSPATH  and be able to run again without the
need to recompile/change anything in the source.
2004-07-30 10:31:00 +00:00
igor%mir2.org
1502b14734 The previous patch introduced regression: it is posible for slots array to be filled with slot objects and REMOVED tags. Thus getSlotPosition can loop through the whole table. This patch restores the old and proper state of affairs. 2004-07-30 07:52:30 +00:00
igor%mir2.org
6cc1245e38 Using single ScriptRuntime.toStringIdOrIndex to convert object id to string of index key instead of multiple calls to getStringId/getIntId. 2004-07-29 22:47:05 +00:00
igor%mir2.org
df2c699cd7 Calling proper ScriptRuntime.call taking scope argument instead of eprectaed old form. 2004-07-29 22:44:45 +00:00
igor%mir2.org
b6ed88ed6d New "scratch" field for int indexes to allow to return more then one result from index parsing functions. 2004-07-29 22:42:50 +00:00
igor%mir2.org
1bd4e8e9db Explicitly throw IllegalStateException to indicate code bug when hashtable scan end up in infinite loop. 2004-07-29 22:40:47 +00:00
igor%mir2.org
2bf6166f45 Adding E4X example contributed by John Schneider from AgileDelta, Inc., http://www.agiledelta.com/ . 2004-07-29 15:55:41 +00:00
igor%mir2.org
8a6fdf912e Fixing missed context wrapping in debugger/Dim and proper button enable/dosable in debugger/DebugGui 2004-07-29 12:51:35 +00:00
igor%mir2.org
47eb21b587 Fixing under allocation of ids array while enumerating properties. 2004-07-29 12:46:46 +00:00
igor%mir2.org
c62ea82d3d Better error propagation from failed class loading: RuntimeError instances are rethrown while ClassNotFound, LinkageError etc. are caught. 2004-07-29 12:45:55 +00:00
igor%mir2.org
43d1beb31a Renaming StringIdMap to Main and ipdating documentation 2004-07-29 10:44:59 +00:00
igor%mir2.org
7f304859c1 Cleanup patch from Mario Cormier <mcormier@miranda.com> to fix bug 253323:
Parser contained useless this.decompiler = decompiler assignment.
2004-07-29 08:28:42 +00:00
igor%mir2.org
88a3913994 Committing E4X runtime implementation: see enhancement report 242805.
This is based on code contributed to Rhino by AgileDelta, Inc, www.agiledelta.com and in particular by

Ethan Hugg
Terry Lucas
Milen Nankov
John Schneider

Thanks!
2004-07-28 23:43:17 +00:00
igor%mir2.org
0659e0b714 Committing E4X parser and runtime proxies: see enhancement report 242805.
This is based on code contributed to Rhino by AgileDelta, Inc, www.agiledelta.com and in particular by

Ethan Hugg
Terry Lucas
Milen Nankov
John Schneider

Thanks!
2004-07-28 21:11:02 +00:00
igor%mir2.org
ef41e24058 Added ScriptableObject.equivalentValues to allow for custom equality operator support. 2004-07-28 15:23:11 +00:00
igor%mir2.org
d3d45e59da Added Reference.has() for future use. 2004-07-28 15:21:02 +00:00
igor%mir2.org
8799f9f62b Ignore any exception during script class initialization unless it is an instance of RhinoException. In this way lazily class loading or incompatible with the current JVMs jars will simply hide the script variables. 2004-07-28 15:20:08 +00:00
igor%mir2.org
e47e67719d Always call Scriptable.has(name, start) as obj.has(name, obj) since the start argument is useless in Scriptable.has and in this way it is possible to add temporary assertions to the code checking this. 2004-07-28 13:27:39 +00:00
igor%mir2.org
cf9b20185b Redesigning IdScriptable implementation.
The new logic introduces 2 independent id namespaces, instance ids and prototype ids. Typically there are very few instance properties and instance ids corresponds exactly to them. The prototype ids allows to define functions and other constant objects that typically found in prototype objects.

The new implementation takes advantage of this difference to provide very different API to implement fast mapping both for instance and prototype ids.
2004-07-28 11:40:38 +00:00
igor%mir2.org
f02c491af8 Introduction of defaultParentScope and defaultPrototype in ScriptableObject for lazily initialization of scope and prototype. 2004-07-28 09:52:29 +00:00
igor%mir2.org
a87bb4edcd Making ScriptRuntime.typeError* public 2004-07-28 09:51:02 +00:00
igor%mir2.org
9ad83535e6 Allow to subclass NativeWith 2004-07-28 09:50:07 +00:00
igor%mir2.org
cbb0e19a28 Favour same type converssions during LiveConnect for better support of java methods taking instances of Scriptable 2004-07-28 09:49:19 +00:00
igor%mir2.org
5207d03135 1. Optimizing getClassPrototype and getDefaultValue in ScriptableObject.
2. Start of the changes for simpler to use IdScriptable implementation: new utility functions in IdFunction and removal of Context argument from IdScriptable.fillConstructorProperties.
2004-07-28 07:12:46 +00:00
igor%mir2.org
1a1653605f Context.getArrayElements implementation is moved to ScriptRuntime which also defined now isArrayObject 2004-07-28 07:06:35 +00:00
igor%mir2.org
fa889e8215 Making next release to be 1.6 release 1 2004-07-12 14:26:30 +00:00
igor%mir2.org
2c3f8b4844 Renaming ObjArray.setReadOnly() to ObjArray.seal() to follow the rest of Rhino code. 2004-07-09 13:28:48 +00:00
igor%mir2.org
fe6620df87 Fixing comments text to reflect real state of code 2004-07-07 14:47:46 +00:00
igor%mir2.org
faa2cc87fe Almost reverting the prevois commit: it was too preliminary. 2004-07-07 14:46:58 +00:00
igor%mir2.org
4588cccd39 Changing the way Java getter and setter are stored: a new special class ComplexValue is used to indicate a controllable value that may have associated getter/setter methods. In this way getter can be added after slot creation without the need to replace slots. 2004-07-06 14:37:56 +00:00
igor%mir2.org
80b96958c9 Token.ZERO and Token.ONE are used only by interpreter and moved to Interpreter as corresponding icode constants. 2004-07-05 15:08:34 +00:00
igor%mir2.org
3ffab68246 Removal of no-longer applicable comments refering to SM code 2004-07-05 15:07:25 +00:00
igor%mir2.org
cfec98bb95 Removal of Token.DOT in NodeTransformer: it is always processed in IRFactory. 2004-07-05 15:06:18 +00:00
igor%mir2.org
b0e98cbca8 When support for Context.FEATURE_MEMBER_EXPR_AS_FUNCTION_NAME is enables,
decompiler now does not turn them into assignment statements but keeps
original code with extension when printing function source. It allows for
better emulation of this JScript extension
2004-07-04 17:26:50 +00:00
igor%mir2.org
a084aaa65f Simplified handling of function expression statements: parser no longer
generate synthetic expression statement nodes for them.
2004-07-04 14:13:47 +00:00
igor%mir2.org
15426336fd Normilizing numeration of Token constants after removal of few no longer used
constants in the previous patches
2004-07-04 14:12:01 +00:00
igor%mir2.org
53864e64b8 Splitting code generation in interpreter and class compiler into separated statement-only and expression only cases to add more checks. 2004-07-02 15:36:13 +00:00
igor%mir2.org
b91ef7e8a2 Replacing generic Token.EXPRSTMT by Token.EXPR_VOID and Token.EXPR_RESULT and removal of Token.POP and Token.POPV. Now parser creates appropriate expression statements itself so there is no need to replace the time in NodeTransformer. 2004-07-02 13:11:06 +00:00
igor%mir2.org
4ad826a35e Fixing bug 249471:
Fixing parseFloat logic and Context usage cleanup.

I changed number start detection code in parseFloat to check properly for lone
+/- while making the code IMO more redable.

In addtion patch removes unused Context parameter from various functions in
NativeGlobal including parseFloat which was remainder from pre IdFunction
code.
2004-07-02 06:55:21 +00:00
igor%mir2.org
4035bd2c91 Removal of Tiken.UNDEFINED: it was not used outside Interpreter 2004-07-01 16:40:44 +00:00
igor%mir2.org
f0ca03fe7c Replacing state flags in TokenStream by separated boolean values to simplify
code and to remove flags that were set/cleared but never queried.
2004-07-01 14:52:22 +00:00
igor%mir2.org
21a1489b59 Change IRFactory to return/accept Node, not Object as the type for parse tree
nodes. Parser already assumes in a few places that such Node and it is not
worth to pretend otherwise.
2004-07-01 10:39:28 +00:00
igor%mir2.org
05a6149911 Fixing JavaDoc: the previous changes removed Context(ContextFactory)
constructor as factory is associated automatically with Context but JavaDoc
continied to refer to this constructor form.
2004-06-30 15:28:04 +00:00
igor%mir2.org
f32fceb8a1 Deprecation of ContextListener in favour of ContextFactory.Listener:
the later is stored in the factory and not in static variables.
For compatibility an instance of ContextFactory stored in static variables
is used to provide support for old Context.addContextListener etc. API.

The static instance of the factory is also used by Context.enter to create
Context instances providing simple way to customize Context: one just need
to initialize the global static factory.
2004-06-30 15:23:39 +00:00
igor%mir2.org
012fd05901 Fix menu enable/disable misbehavior. 2004-06-30 13:29:41 +00:00
igor%mir2.org
4cc8c9cd28 Fixing JDK 1.3 compatibility: TableModel.getRot() should not return null there. 2004-06-30 09:38:54 +00:00
igor%mir2.org
c1a3a327c2 Fixing scope problems with IdFunction when IdScriptable is top scope itself:
scope for IdFunction instances is determined through getTopScope,
not getParentScope() which can be null.

To prevent null scope initialization problems in future IdFunction constructor
now throws an exception if scope argument is null.
2004-06-29 15:43:01 +00:00
igor%mir2.org
d9fd2cc2b9 Make EvaluatorException(String) public for compatibility 2004-06-15 04:42:59 +00:00
igor%mir2.org
7f56cb9f8f Fixing regression after previous commit for bug 245882: when used as top scope ImporterTopLevel should not define constructor property not to hide Object.prototype.constructor. 2004-06-09 17:01:01 +00:00
igor%mir2.org
204d41ff43 1. IdFunction.methodId is no longer public as some old Java compilers have troubles with it and accessor method has to be used instead.
2. IdFunction constructor now takes scope argument as well to prevent initialization bugs.
2004-06-09 12:54:04 +00:00
igor%mir2.org
45dd15a64f The last commit made Rhino uncompilable! Fixing that. 2004-06-09 08:25:59 +00:00
igor%mir2.org
407b7697c2 Implementing bug 245882: now ImporterTopLevel can be constructed from JavaScript using JavaImporter to allow to have class and package collections without namespace polluting. 2004-06-09 07:36:31 +00:00
igor%mir2.org
f0b3c4b63f Work on bug 245882: check that scope is not this when setting scope chain
to prevent scope chain loops.
2004-06-08 23:30:30 +00:00
igor%mir2.org
ec1dd303f9 Default implemetation of toSource now lives in ScriptRuntime to allow its
reuse in othr objects.
2004-06-08 23:28:32 +00:00
igor%mir2.org
e1d29463ec Yet another change in IdFunction: now its constructor takes arity argument
which removes the need to have separated methodArity in IdFunctionMaster
intertface. The method, however, has to be preseved in IdScriptable since it
is used to find which arity should be used during IdFunction construction.
2004-06-08 22:25:57 +00:00
igor%mir2.org
f066506500 Using IdFunction in place of JIFunction in NativeJavaTopPackage 2004-06-08 15:29:34 +00:00
igor%mir2.org
8f28fc868a Changin IdFunction/IdFunctionMaster iteraction:
1. execMethod and methodArity in IdFunctionMaster do not receive methodId explicitly but rather through the IdFunction instance. To ensure fastest access to method id it is made pubic final field.

2. IdFunction allows to associate an internal tag with itself that allows not to worry about id clashes and simply check for object tag before doing method dispatch.
2004-06-08 14:23:35 +00:00
igor%mir2.org
f5bd7a5a11 JIFunction was wrong idea at the end: it is better to stick with IdFunction and teach it missed functionality. The patch changes JavaAdapter to use IdFunction for its constructor call. 2004-06-08 12:38:20 +00:00
igor%mir2.org
e412382826 API to set global SecurityController is moved to SecurityController not to clatter Context. 2004-06-08 11:09:40 +00:00
igor%mir2.org
b538849b5b Work on bug 244492: RhinoException is the new common base class for all exceptions. 2004-06-07 16:40:28 +00:00
igor%mir2.org
be6494c229 Switch to using Context.javaToJS instead of Context.toObject 2004-06-07 10:35:22 +00:00
igor%mir2.org
c613550feb setGlobalSecurityController should be static 2004-06-07 10:34:22 +00:00
igor%mir2.org
daf6b75edb Introduction of ContextAction interface as a safe alternative for Context.enter/Context.exit. All usages of Context.enter/Context.exit in Rhino are replaced by
Context.call(new ContextAction() {
	public Object run(Context cx) { ... }
});
or similar alternatives.

It prevents bugs with missed Context.exit and provides room for optimization of Context association with current thread and simplify implementation of safe environment for execution of untrusted applets and scripts.

In addition, Rhino now supports global SecurityController that take precedence over any per/Context controllers so the application can setup the controller once and for all.
2004-06-06 15:33:59 +00:00
igor%mir2.org
70af322f7a ContextFactory is a new API class 2004-06-06 09:28:18 +00:00
igor%mir2.org
172c10e986 added ContextFactory which is used to create Context instances in JavaAdapter when there is no Context associated with the current thread. 2004-06-04 17:54:42 +00:00
igor%mir2.org
c3ac073e09 Better JavaDoc comments for FEATURE_ constants 2004-06-04 17:51:27 +00:00
igor%mir2.org
4fe37bb798 Allow to disable special treatment of __proto__ and __parent__ via overriding Context.hasFeature(). 2004-06-04 14:57:31 +00:00
igor%mir2.org
7048fd0cd3 Use consistent naming for property manipulation functions in ScriptRuntime and drop no longer used scope argument for ScriptRuntime.setProp that acts on strings. 2004-06-04 06:58:03 +00:00
igor%mir2.org
633428122c Code to create references to manipulate with __proto__ and __parent__ is moved to ScriptRuntime.specialReference not to expose too much implementation details 2004-06-02 14:56:25 +00:00
igor%mir2.org
20af7b885d Changing Refrence.set(Object) to return Object to return the real stored value. 2004-06-02 11:33:09 +00:00
igor%mir2.org
1a9a123c14 Pass __proto__ and __parent__ special properties to code generation as strings to allow to support application-specific special properties without altering code generation. 2004-06-02 09:13:12 +00:00
igor%mir2.org
ee2f62aef9 Allow Rhino embeddings to support function as left-hand-side extension via overriding BaseFunction.specialCall(). 2004-06-01 16:04:18 +00:00
igor%mir2.org
94302e5018 Making invalid left hand of assignment runtime reference error instead of syntax error as dictated by ECMAScript. Now interpreter/class compiler generates code that calls ScriptRuntime.genericReference() that in turn throws the error. 2004-05-31 15:49:19 +00:00
igor%mir2.org
6806c3160e Work on bug 243057:
Introduction of support for calling function in reference context so with native functions code like f(args) = something or x.y(args)++ would be allowed.

The changes added necessary changes to parser and code generation but at runtime currently any such usage would throw an exception.
2004-05-31 14:51:20 +00:00
igor%mir2.org
cb3a4fef51 For prefix and postfix ++/-- use mask flags instead of enumeration to denote postfix/prefix and ++/-- operation. 2004-05-31 13:03:16 +00:00
igor%mir2.org
8f9ce34d52 Optimize ++name and --name similarly to name++ and name-- via special runtime support 2004-05-31 12:09:39 +00:00
igor%mir2.org
ad65f9094a Optimizing ++x.y and --x.y in the same way as x.y++ and x.y-- via special runtime support 2004-05-31 08:18:38 +00:00
igor%mir2.org
2f00186bd2 Introduction of generic Reference class to support latter constructions like f(args) = y and f(args)++. For now it is used to implement __proto__ and __parent__ special properties so x.__proto__++ now works 2004-05-31 07:18:52 +00:00
igor%mir2.org
feca58e25b ++x[y] is optimized in the same way as x[y]++ via special runtime support 2004-05-30 15:54:21 +00:00
igor%mir2.org
35a14e8364 Using negative nimbers for interpreter-specific tokens to allow for 256 bytecodes without using 0xFF & conversion 2004-05-30 14:21:07 +00:00
igor%mir2.org
7d94a4273b Added JavaDocs for Kit.initCauseOrIgnore 2004-05-29 09:37:48 +00:00
igor%mir2.org
5a542b76b3 Make code to call Throwable.initCause via reflection previously located in WrappedException publically available in Kit.java 2004-05-29 08:55:41 +00:00
igor%mir2.org
8d03a328c9 Follow conventinal code practics of throwing IllegalArgumentException, IllegalStateException directly instead of using additional helper methods for it. 2004-05-29 08:54:24 +00:00
igor%mir2.org
6dcea14f54 Patch from Merten Schumman <Merten.Schumman@asg.com> to add Main.mainEmbedded(String) which is a version of Main.main without System.in/err/out redirection. It simplifies life for embeddings. 2004-05-28 14:19:11 +00:00
igor%mir2.org
402fd02406 Final implementation of GUI/debug implementation internals separation. Now the newly introduced Dim.java (Dim: Debug IMplementation) depends only on GuiCallback and contains all iteractions with Rhino. 2004-05-27 11:26:59 +00:00
igor%mir2.org
7fe01ad6bc exitAction is moved to DebugGui 2004-05-27 10:34:44 +00:00
igor%mir2.org
cd63019db8 Prepare to remove dependancy of core debugger implementation on GUI: introduction of GuiCallback interface that DebugGui implements. 2004-05-27 10:21:24 +00:00
igor%mir2.org
b85ecb8c02 Work on 244492: JavaScriptException extends RuntimeException 2004-05-26 11:54:10 +00:00
igor%mir2.org
fa34067a88 Make sure that Context.getSourcePositionFromStack never returns negative numbers and uses 0 to indicate absence of line information. It accounts for differences between JVMs when dealing with incomplete debug information. 2004-05-26 11:03:03 +00:00
igor%mir2.org
63596c3f2b In JavaScriptException constructor do not call ScriptableObjec.toString(value) since it may potentially trigger script execution for objects defining toString method which in turn may throw exceptions.
Instead for Scriptable arguments prints their [Object className] form which is provided by the new ScriptRuntime.defaultObjectToString(Scriptable) method.
2004-05-25 15:39:28 +00:00
igor%mir2.org
7341c1f1b5 Added JavaDoc link to a better way of wrapping exceptions then using WrappedException constructor 2004-05-24 10:11:23 +00:00
igor%mir2.org
8804a5c10d Restoring public constructor for WrappedException for compatibility with Batik. 2004-05-24 07:53:06 +00:00
igor%mir2.org
2283ed2681 Change Arguments.getIds to include argument indexes when getAll is true. It allows not to have a tailored getIds in the debugger. 2004-05-23 17:34:44 +00:00
igor%mir2.org
3130100ea6 Fixing JavaDoc comments 2004-05-23 17:32:32 +00:00
igor%mir2.org
1e8e9be624 1. Reorganize debugger to move all code that interacts with the engine into Main.java while all GUI logic now presents in DebugGui
2. Move downloaded files for swing tree table into downloaded directory and adjust build files accordingly.
2004-05-23 16:15:09 +00:00
igor%mir2.org
cfe01facb2 Make sure that for Rhino-generated exceptions Throwable.getMessage() contains script file and line information. 2004-05-23 14:32:07 +00:00
igor%mir2.org
e431bd1a66 Make EcmaError to follow the same pattern as JavaScriptException
and EvaluatorException for getMessage() methods: it provides error message
with script source/line information.
2004-05-23 09:50:20 +00:00
igor%mir2.org
30e9aee832 Switch to line info extraction through single top script processing 2004-05-22 23:19:56 +00:00
igor%mir2.org
677ac1cd76 Splitting Main.java into Main.java and GUI-related DebugGui.java 2004-05-21 15:06:36 +00:00
igor%mir2.org
7ceadc8e69 Split Main class into Main and DebugGui to have better debugger/gui separation 2004-05-21 14:25:21 +00:00
igor%mir2.org
1ad8dc2197 Move all logic to open source window at the end of compilation to single update action. 2004-05-21 12:04:47 +00:00
igor%mir2.org
3265deef44 1. Fixing reporting for calls to undefined: stringReg is not suitable for function names if function contains arguments. So Token.NEW/Token.CALL comes with index of potential function name.
2. If debug information is not generated, Context.interpreterLineIndex could contain garbage from previous function invocation leading to ArrayIndexOfBound. Now Context.interpreterLineIndex is initialized at the interpreter entrance and getSourcePositionFromStack checks against absent line numbers.
2004-05-21 11:43:38 +00:00
igor%mir2.org
e58d2a671b Move logic to show exception dialog into EnterInterrupt action 2004-05-21 11:27:59 +00:00
igor%mir2.org
7706f20db2 Test file 2004-05-21 10:53:19 +00:00
igor%mir2.org
5c690d13af I changed StackFrame.onLineChange to access breakFlag directly which allowed to remove global context hashtable 2004-05-21 01:20:48 +00:00
igor%mir2.org
261666150e Merge various GUI initializations during breakpoint hit into single action 2004-05-21 01:10:04 +00:00
igor%mir2.org
0ec2c999de Removal of manThread: breakFlag can do its job just fine 2004-05-21 00:17:45 +00:00
igor%mir2.org
9f73c42235 Replace Context switching during eval for interrupted threads by thread communication so all evals happens on the original thread. 2004-05-21 00:11:24 +00:00
igor%mir2.org
013271de02 To make variable access faster the form of getvar/setvar with var index
encoded in bytecode is reintroduced.
2004-05-18 22:33:41 +00:00
igor%mir2.org
c23cadde22 Added more fast index load instructions and removed 0xFF & when extracting bytecode as all byte codes are less then 128. 2004-05-18 15:02:26 +00:00
igor%mir2.org
f9804a0ac7 In the interpreter loop comparision operations are represented by separated optimized do_cmp. 2004-05-18 12:19:25 +00:00
igor%mir2.org
10f3c4233e To make loading of strings into string register faster I added Icode_REG_STR_C[01023] that directly loads the string at the given index. 2004-05-18 11:19:30 +00:00
igor%mir2.org
351dcb728c Removal of 32K restriction on the length of the maximum jump offset.
Now interpreter uses UintMap to store jump targets spanning more then 32K
of bytecode.
2004-05-17 21:36:47 +00:00
igor%mir2.org
a6a8297e30 Reorganization in jumping code to make the following patch to drop 32K
jump length restriction smaller
2004-05-17 19:19:18 +00:00
igor%mir2.org
7e1c77a956 Remove 256 limit on number of variable using index prefix for all variable
operations. To offset small performance loss for variable access new
index prefixes operation REG_IND_C[0123] are added to load 0,1,2,3 as index
value with one bytecode.
2004-05-17 17:57:43 +00:00
igor%mir2.org
bf289c6354 For GETPROP/SETPROP use explicit name prefix to load property name instead
of pusshing property to stack
2004-05-17 17:29:12 +00:00
igor%mir2.org
5b81311a84 Remove 256 limit on number of local slots using REG_IND* prefixes to load the
slot index
2004-05-17 16:27:39 +00:00
igor%mir2.org
c226bf5cde Splitting name_and_this bytecode into name_fast_this and name_slow_this to
avoid flag reading during simple function calls
2004-05-17 15:58:48 +00:00
igor%mir2.org
0681989924 Use the same of specal index prefix byte code for [] and {} literals 2004-05-17 14:55:45 +00:00
igor%mir2.org
e88881f3a6 Elimination of 64K restriction limit for various index-based opcodes. Now
they are prefixed with special Icode_REG_IND* that load the index of proper
size.
2004-05-17 14:34:29 +00:00
igor%mir2.org
696129bcb0 Removal of 64K limit of total number of strings per script/function: now
string operands are preloaded with special LOAD_STR opcodes that handles full
int indexes
2004-05-17 13:07:49 +00:00
igor%mir2.org
9a6e1fe15d In the interpreter loop avoid code duplication for calling instruction
observer after each jump: now all tsuch code blocks are merged into generic
code that follows the interpreter switch
2004-05-17 11:44:42 +00:00
igor%mir2.org
34e9dc56b7 Another small modifications to Interpreter to make the following patches
smaller: replacing all brek in the main switch of the interpreter with
"continue Loop"
2004-05-16 21:01:00 +00:00
igor%mir2.org
774204ecef In the interpreter loop increment pc immediately after icode read to avoid
ever adding +1 in post byte codes with arguments
2004-05-16 14:02:26 +00:00
igor%mir2.org
daaa920276 Inside the interpreter loop merger many almost identical icode
implementations into common block that use additional ifs to distinguish
between icode. It allows to shrink the ever growing Interpreter.interpret()
2004-05-16 13:30:53 +00:00
igor%mir2.org
aae93331f3 New implementation of ARRAYLIT and OBJECTLIT that does not requires stack
space to hold all literals values before they are copied to a temporary array
to pass to ScriptRuntime functions. The new code populates array during values
calculations.
2004-05-15 17:28:22 +00:00
igor%mir2.org
b4d0f698c9 Quote property names in object literals produced by toSource() if they
coincide with reserved keywords.
2004-05-15 17:23:06 +00:00
igor%mir2.org
37be8f9cfb Use special parse nodes for array and object literals to generate more compact
bytecode both for interpreter and compiler to have faster [] and {} literals.
It also fixes the bug of accessing local variables Array/Object for the
literals instead of top-scope objects.
2004-05-14 22:47:44 +00:00
igor%mir2.org
2494dc182a Use code similar to optimizer when generating call sequences to avoid tree mutations during code generation 2004-05-12 22:39:40 +00:00
igor%mir2.org
dbaff764ea 1. Fixing bug of forgotten updates to itsWithNesting
2. Optimization for calls like name() which similar to the optimizer code
2004-05-12 20:03:23 +00:00
igor%mir2.org
49aabab156 New function ScriptRuntime.notFoundError to throw error on missed properties
instead of scattered duplicated code
2004-05-12 19:59:57 +00:00
igor%mir2.org
8423b14b48 Removal of Token.GETBASE, Token.GETTHIS, Token.PARENT, Token.NEWTEMP, Token.USETEMP, Node.TEMP_PROP, Node.FIXUPS_PROP, Node.USES_PROP constants which are no longer used after the last changes 2004-05-12 15:00:41 +00:00
igor%mir2.org
92f45d1054 Instead of transforming parser tree to apply special treatment for call nodes, do that only during code generation . 2004-05-12 13:02:40 +00:00
igor%mir2.org
992ee898f2 Refactoring Codegen.visitCall: preprae for the following switch to generate call without transformer modifications 2004-05-12 10:34:46 +00:00
igor%mir2.org
aaf9cdfddc Improve error messages for the optimizer when accessing undefined values 2004-05-11 10:06:51 +00:00
igor%mir2.org
b9f058dfe3 Cleanup of hasVarsInRegs 2004-05-10 16:45:02 +00:00
igor%mir2.org
5d1aacca6a Apply direct call optimization only for functions that do not need activation. 2004-05-10 15:28:32 +00:00
igor%mir2.org
d2ab61c277 Determine functions that require activation during parsing and not in NodeTransformer 2004-05-10 13:39:14 +00:00
igor%mir2.org
27e2f6d328 Removal of checks for unitialized lVal.getJRegister(): the registers are always initialized in prelude. 2004-05-10 05:24:29 +00:00
igor%mir2.org
44deec93c2 Removal of JavaVariable interface in favor of simple method in ClassFileWriter. It allowed to shrink OptLocalVariable and made other code simpler. 2004-05-09 22:09:03 +00:00
igor%mir2.org
ed03829d75 Clenup the usage of getJRegister/assignJRegister 2004-05-09 21:07:08 +00:00
igor%mir2.org
5a48e9dc3a Move all logic regarding establishing type of variable into Block.java 2004-05-09 21:06:20 +00:00
igor%mir2.org
b7fec72bfc Removal of no longer used LASTUSE property and corresponding optimizer code 2004-05-09 12:38:45 +00:00
igor%mir2.org
0be4188b87 Remove code for CSE optimisation: it was used only to merger this.property calls but this optimisation changes program semantic if property is controlled by native getter. 2004-05-09 10:14:01 +00:00
igor%mir2.org
316271b0a9 OptLocalVariable cleanup: under optimization GETVAR/SETVAR nodes always has a reference to them 2004-05-08 22:24:02 +00:00
igor%mir2.org
07a54c7b74 Remove markLiveAcrossCall functionality that was never used for any optimizations 2004-05-08 21:05:00 +00:00
igor%mir2.org
1059cf02ce Merge addToken/addString into single addString 2004-05-08 19:21:37 +00:00
igor%mir2.org
749dfe5b5d Optimization of ++/-- and merge separated postIncrement/postDecrement to single postIncrDecr to remove too much code duplication 2004-05-07 15:05:11 +00:00
igor%mir2.org
fd2bfff2a7 FatBlock is moved to Block as a private class 2004-05-07 15:03:39 +00:00
igor%mir2.org
09b1d12d63 Added addPush(boolean) 2004-05-07 15:00:17 +00:00
igor%mir2.org
a06c84f791 Extend optimization ==, !=, ===, !== against null to check null presence on any side of the test. 2004-04-21 12:00:27 +00:00
igor%mir2.org
5a691b58fa Fix max stack calculations in dcpLoadAsObject/dcpLoadAsNunber and optimize visitIfJumpRelOp to take advantage of the fact that left and right numerical operands force numeric context. 2004-04-20 13:00:08 +00:00
igor%mir2.org
c39f4108d7 Reuse code to generate optimized if jumps for boolean operations that return Boolean instance 2004-04-18 20:29:41 +00:00
igor%mir2.org
8231a39a23 Cleanups:
1. Added addObjectToDouble() to replace explicit code generation for object to double convertion.
2. nodeIsDirectCallParameter returns dcp register to avoid double look up of OptVariable
2004-04-18 16:29:12 +00:00
igor%mir2.org
2957c844ca Layout cosmetics 2004-04-18 16:26:32 +00:00
igor%mir2.org
97dc2f98e4 Trust JVM to implement "<=" and "<" according to JVM specs and replace code like
d1 == d1 && d2 == d2 && d1 < d2
with simple
    d1 < d2

That in turn allows to simplify code generation and remove OptRuntime.cmp_ functions.
2004-04-18 14:53:34 +00:00
igor%mir2.org
b9219ca745 Trust JVM to implement "<=" and "<" according to JVM specs and replace code like
d1 == d1 && d2 == d2 && d1 < d2
with simple
    d1 < d2
2004-04-18 14:52:22 +00:00
igor%mir2.org
d6576c5892 Remove commented out code to treat integer specially: it is not applicable any longer in any case. 2004-04-18 14:49:50 +00:00
igor%mir2.org
d62ad77af5 Work on bug 238649: no more support for ClassNameHelper and friends 2004-04-18 12:15:07 +00:00
igor%mir2.org
b71427a6ae Worj on bug 238649: removal of NotAFunctionException 2004-04-18 09:30:30 +00:00
igor%mir2.org
534c7d51d6 1. Change cmp_* functions to return boolean, not int, to simplify code.
2. Move optimizer-only functions from ScriptRuntime.java to optimizer/OptRuntime.java
3. Add ScriptRuntime.wrapBoolean to wrap boolean value and use it in the optimizer
2004-04-16 07:38:20 +00:00
igor%mir2.org
81470d5283 1. Throw IllegalArgumentException instead of EvaluatorException when argument does not belong to JS runtime types.
2. Optimize eq and shallowEq in ScriptRuntime to share code with optimized versions in Interpreter.
2004-04-14 14:50:24 +00:00
igor%mir2.org
cb3ccb29b3 Layout cosmetics 2004-04-14 14:46:58 +00:00
igor%mir2.org
153f7be2a2 Support for Date.now() 2004-04-14 11:04:55 +00:00
igor%mir2.org
c685edc692 Fixing bug 58118 : long overdue commit of patch from Mike McCabe, mike+mozilla@meer.net 2004-03-30 12:48:29 +00:00
igor%mir2.org
701ea21521 Since new x in Java never returns null, the check for null in date_format was redundant. 2004-03-30 10:35:42 +00:00
igor%mir2.org
eef0796b8a Faster implementation of MonthFromTime and DateFromTime:
1. Use day / 30 as month estimate with the following adjustment via switch()
2. Reuse year from day calculations in IsLeapYear
2004-03-29 15:19:04 +00:00
igor%mir2.org
021b376688 Fixing bug 239068: proper initialization of parent scope for functions of constructors. 2004-03-29 15:15:34 +00:00
igor%mir2.org
3a93fa2e8e DaysInYear is replaced by IsLeapYear since the former was used only to determine if a particular was leap or not 2004-03-29 14:16:23 +00:00
igor%mir2.org
ba8f69355a Cosmetics: layout fixes 2004-03-29 12:30:24 +00:00
igor%mir2.org
dfdd5ab46c Starting 1.5R5.1 development 2004-03-29 12:29:11 +00:00
igor%mir2.org
40db418d07 Fixing 238823 : throw explicit IllegalArgumentException when JS source for Context.compileFunction does not contain single JS function statement instead of producing silent empty functions or throwing obscure NullPointerExceptions 2004-03-27 09:35:22 +00:00
igor%mir2.org
e229fd6ab4 Better formating 2004-03-26 13:01:17 +00:00
igor%mir2.org
78ec796300 Fixing bug 238699 : refactoring to expose simpler code generation API caused to select wrong code path when compiling functions 2004-03-26 12:42:00 +00:00
igor%mir2.org
0292a753a1 Explicit date in Context.getImplementationVersion() for 1.5R5 release 2004-03-25 20:37:32 +00:00
igor%mir2.org
1aafe09612 Reflecting 1.5R5 release 2004-03-25 19:45:56 +00:00
igor%mir2.org
cbce2b4745 Starting 1.5R6 2004-03-25 17:58:03 +00:00
igor%mir2.org
420074b3a1 Removal of macbuild support: its Mac OS X time after all 2004-03-25 17:39:21 +00:00
igor%mir2.org
afe5a6cd9d Info about commercial support 2004-03-25 15:46:40 +00:00
igor%mir2.org
abf0a3a1ac *** empty log message *** 2004-03-25 11:04:04 +00:00
igor%mir2.org
37c396db64 Preparations for 1.5R5 2004-03-24 15:52:55 +00:00
igor%mir2.org
533e9f8489 Updates to reflect new extension to allow to pass function to Java method expecting interface: now interface with multiple methods are allowed as long as all methods has the same signature 2004-03-24 15:44:19 +00:00
igor%mir2.org
ae3df9d02a Finalizing 223435 : function can be converted to Java interface with more then one method as long as all methods has the same signature. 2004-03-24 14:15:37 +00:00
igor%mir2.org
76316f18dd More work on bug 223435 : pass method name for the interface as the last parameter to JS function so it can use for debug purposes 2004-03-23 16:24:32 +00:00
igor%mir2.org
f4ff06f911 Making BaseFunction.decompile package private: any new public function will always find its users even if the usage is broken. It was public to allow calls from debugger but simple call to Context.toString() would do the same job. 2004-03-18 13:37:29 +00:00
igor%mir2.org
0cbfdabe29 RUnit Software now includes a link on their page about JS (Declaimer: I work there!) 2004-03-18 13:32:52 +00:00
igor%mir2.org
f040fa2436 Added RUnit Software 2004-03-17 18:36:57 +00:00
igor%mir2.org
46abef99b9 Fixing bug 237771 : allow to transfer toSource implementation to different objects 2004-03-17 18:36:39 +00:00
igor%mir2.org
6b70acca26 Documenting new Context seal API and fixing obvious English mistakes. 2004-03-09 23:34:30 +00:00
igor%mir2.org
ecfd54c02f Updated file with license info from Eugene Aresteanu :
> Hi,
>
> Does it look right now?
>
> Regards,
> Eugene
>
> -----Original Message-----
> From: Igor Bukanov [mailto:igor@fastmail.fm]
> Sent: Friday, March 05, 2004 10:07 AM
> To: eugene aresteanu
> Subject: Re: Rhino and license for Messages_fr.properties
>
>
> eugene aresteanu wrote:
>
>>Hello,
>>
>>Here it is.  I hope it is right.
>>Why do you say the default Messages.properties lacks notices?
>>I used the header of Messages.properties as a template.
>
>
> Sorry for not been clear, but what I wanted to say is that did not have
> triple MPL/GPL/LGPL but rather the old NPL/GPL pair. Could you update
> the file one more time using
> http://www.mozilla.org/MPL/boilerplate-1.1/mpl-tri-license-sh as template?
>
> Regards, Igor
2004-03-05 19:17:43 +00:00
igor%mir2.org
5586a28481 Resolving bug 236117 : new API to seal Context 2004-03-03 19:59:25 +00:00
igor%mir2.org
58db1d9fd5 Resolving bug 236193: require enetered Context for compilation 2004-03-03 11:20:33 +00:00
igor%mir2.org
e0a2c2536d Making javaToJS static to match the rest of API 2004-03-01 19:19:47 +00:00
igor%mir2.org
40f5e70cee Fixing JavaDoc 2004-02-24 07:20:49 +00:00
igor%mir2.org
a3d001e0e8 Making NativeScript package private: if this will be controversial, then the public status can be restored 2004-02-24 07:19:56 +00:00
nboyd%atg.com
98a70b8580 Remove "pre" from a candidate build. 2004-02-18 17:28:40 +00:00
igor%mir2.org
4b836891b2 Preparations for 1.5R5 2004-02-18 12:24:27 +00:00
igor%mir2.org
8f085f363e Preparations for 15R5 release. 2004-02-13 18:50:51 +00:00
igor%mir2.org
adeccbc67c Fixing NativeGlobal.encode: it was broken for chars beyond 0xFFFF as it sb.setLength(k) was called after k was increased to consume the second char from UTF-16 encoding to build UCS-4. 2004-02-12 19:05:47 +00:00
igor%mir2.org
1e3f7aaaed Preparations for 1.5R5 2004-02-12 18:13:00 +00:00
igor%mir2.org
ec7de43908 Fixing bug 233274: for/in loop goes through array elements in wrong order
Fix: populate ids array in NativeArray with dense indexes first

Since array literals in Rhino creates instances of NativeArray with the
internal dense array containing literal elements, the patch changes
NativeArray.getIds to return ids array with dense indexes coming first and
indexes for elements added later after that.
2004-02-06 20:16:36 +00:00
igor%mir2.org
3ba7b938c3 Adding backward compatibility to SecurityController so it can be used with Rhino 1.5R4.1 subclasses 2004-02-05 15:10:52 +00:00