igor%mir2.org
035192c8be
Changing signature of addConstant from short to int and updating the code correspondingly to allow for constant indexes to exceed 32K since their type is unsigned short, not short and int allows to cover that while removing casts.
2003-08-28 12:29:01 +00:00
igor%mir2.org
e258a29853
1. Removal of NativeScript.initScript which was empty and was never overridden by script function implementations.
...
2. Using in NativeScript.compile Context.compileString instead of compileReader to avoid unnecessary construction of StringReader.
3. Overriding NativeFunction.getEncodedSource() in NativeScript to call this method on the delegated script object so decompilation of scripts constructed via script.compile would work.
2003-08-27 11:53:01 +00:00
igor%mir2.org
ae2cb1ea90
NativeFunction.decompile abd NativeFunction.initScriptFunction are final since script function implementations should not override them.
2003-08-27 11:47:19 +00:00
igor%mir2.org
eb2de8c08c
New form of markTableSwitchCase that allows to mark a switch case jump target and adjust stack top.
2003-08-27 11:44:46 +00:00
igor%mir2.org
b515f98de1
Added NativeFunction.initScriptFunction to initialize NativeFunction.argNames, NativeFunction.version and its usage in InterpretedFunction/InterpretedScript.
...
It will allow to make the protected fields in NativeFunction private when the optimizer will be updated to use the new function.
2003-08-26 18:06:10 +00:00
igor%mir2.org
86ebe14d54
Added public static final String[] emptyStrings to denote zero-length string array
2003-08-26 15:45:16 +00:00
igor%mir2.org
4047861bf2
Using ScriptRuntime.emptyStrings to return emoty var array
2003-08-26 15:45:15 +00:00
igor%mir2.org
a9f4d1e47b
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=217257 :
...
Patch from Larry Blair to fix decodeURIComponent()
2003-08-26 15:45:14 +00:00
igor%mir2.org
0439643ca6
Making createObject public so optimizer implementation can access it outside BaseFunction subclass
2003-08-26 15:45:13 +00:00
igor%mir2.org
3f846adf77
1. Support for generation tableswitch code
...
2. Utility method addLoadThis() as an alias for add(ByteCode.ALOAD_0)
2003-08-26 15:43:11 +00:00
igor%mir2.org
fd9857dc15
Fixing line-table initialization issue: set itsLineNumberTableTop to 0 at the end of stopMethod so generation of multiple methods with source line information would work.
2003-08-22 09:10:14 +00:00
igor%mir2.org
feaebaffbd
Cosmetics: removal of end-of-line blanks
2003-08-20 11:11:00 +00:00
igor%mir2.org
6c33282a4d
Splitting Codegen into 2 Codegen and BodyCodegen where the second class contains code to generate butecode for the body of script.
2003-08-20 10:52:54 +00:00
igor%mir2.org
157bd43021
1. Codegen.classNameToSignature is removed and call to the methods are replaced by cfw.classNameToSignature.
...
2. Calls to ClassFileWriter.fullyQualifiedForm are removed since all ClassFileWriter API accepts both dotted and slashed forms of Java class names.
3. Few identation fixes
2003-08-20 07:36:33 +00:00
igor%mir2.org
429111a705
1. Added ClassFileWriter.classNameToSignature to convert Java class name into JVM signature.
...
2. The public method getFullyQualifieedForm that was used to replace . to / is removed since all classname API accepts both form of class names and convertion to the internal /-form can be done in ClassFileWriter in a more efficient way.
2003-08-20 07:32:48 +00:00
igor%mir2.org
dec1ba89ae
More renames and preparations for code split.
2003-08-19 15:37:50 +00:00
igor%mir2.org
f9a067e749
More preparations for separating code to generate main script method and the rest of methods.
2003-08-19 13:19:57 +00:00
igor%mir2.org
f4ef5c00b7
1. Renaming Codegen.classFile to Codegen.cfw and removal of methods like push/load/store in favour of directly calling ClassFileMethods.
...
2. Move all code related to generating of prologue for main function implementation to Codegen.generatePrologue.
In this way the following patch to split Codegen into 2 classes to factor away all generation code for the main function will look smaller.
2003-08-19 08:21:36 +00:00
igor%mir2.org
a9ed8d9651
Renaming [ilfda]load/store into add[ILFDA]Load/Store for consistency and moving package-private functions from ByteCode to ClassFileWriter so JVM does not need to load ByteCode since it includes only constants.
2003-08-19 08:15:33 +00:00
igor%mir2.org
4b5fa8776f
Replace few usages of Node.cloneNode by a more explicit code to create a fesh childless node copy.
2003-08-18 14:27:51 +00:00
igor%mir2.org
614d63535f
Using simple Token.<op> instead of (Token.EQOP, Token.<op>) to denote parser nodes for equality operations. It allowed to remove sharing of Node.intValue to mean line number and operation type so it was renamed to Node.lineno.
2003-08-18 11:53:00 +00:00
igor%mir2.org
aa709dd3ba
Added store/load function to shortcut add(ByteCode.x, i)
2003-08-18 11:49:39 +00:00
igor%mir2.org
d6f2cfc479
Using simple Token.<op> instead of (Token.RELOP, Token.<op>) to denote parser nodes for relational operation.
2003-08-18 09:55:19 +00:00
igor%mir2.org
aba31de195
Move code to classify binary and relation operation tokens to IRFactory so parser does not need to know about details of tree implementation.
2003-08-18 08:05:06 +00:00
igor%mir2.org
5ccaea2003
Changing order of parameters in ScriptRuntime.instanceOf to match order in ScriptRuntime.in to use simpler code in optimizer.
2003-08-18 08:00:55 +00:00
igor%mir2.org
c3d4e19b03
Removal of unnecessary instanceOf: Scriptable does not have such method and Undefined does not need to override it.
2003-08-18 07:57:40 +00:00
igor%mir2.org
05b377eb6b
Make all convertions from == to === to support JavaScript 1.2 to single place in Parser
2003-08-15 16:48:56 +00:00
igor%mir2.org
8ebab73aa6
Added explicit IRFactory.createIncDec to create ++/-- subtree which removed need to have Token.PRE/Token.POST.
2003-08-15 11:19:47 +00:00
igor%mir2.org
807d553c04
Removal of Token.UNARYOP: after the previous patches parse tree used Token.UNARYOP only to group Token.TYPEOF and Token.VOID into the same node type. Since they are very different, it is simpler to use the tokens directly as node type.
...
To remove ambiguity caused by re-use of Token.VOID to denote no-operation node, a new Token.EMPTY is added to denote the former usage.
2003-08-15 10:21:09 +00:00
igor%mir2.org
945c6bd1ec
Added Token.TYPEOFNAME to denote explicitly parser nodes for typeof(name) to make code more explicit about this case compared with typeof(expression) which is denote by Token.TYPEOF. Previously the ambiguity was resolved by using (Token.UNARY.OP, Token.TYPEOF) for parser tree nodes denoting the later and simple Token.TYPEOF for the former.
2003-08-15 09:00:42 +00:00
igor%mir2.org
f82801fd15
Another replace of (Token.UNARYOP, Token.X) -> Token.X: this time it is for Token.BITNOT and Token.NOT
2003-08-15 08:11:32 +00:00
igor%mir2.org
be4c1a98f2
Changing Token.POS, Token.NEG to represent their parser tree nodes by the token themselves, not via pair Token.UNARYOP, POS/NEG. It simplifies code especially in optimizer/Optimizer.java
2003-08-15 07:15:07 +00:00
igor%mir2.org
423b5b900f
Removal of Token.TONUMBER: it had exactly the same semantics as Token.POS, that is to convert its argument to number.
2003-08-15 06:08:44 +00:00
igor%mir2.org
5447c67824
Removal of Token.PRIMARY: it was used in parser to group primary tokens such as false, true, null, this but since the semantic of them is very different it is simpler to create parse tree nodes directly from tokens and check only for node type, not for type and operation.
2003-08-14 14:49:46 +00:00
igor%mir2.org
683197bd59
Parser tree nodes of Token.CONVERT type are replaced by Token.TONUMBER and additional optimizer nodes to convert to double or object eliminating the need to distinguish them by Node.TYPE_PROPERTY.
2003-08-14 11:21:46 +00:00
igor%mir2.org
6b7800c03d
Removal of TypeEvent since its essential functionality beyond the declaration of few constants was used only to implement OptLocalVariable.assignType. Inlining that code eliminated need in TypeEvent.
2003-08-14 06:03:22 +00:00
igor%mir2.org
2d24913e43
Change TokenStream to return operational tokens as is without grouping them through Token.UNARY, Token.PRIMARY etc. Instead do grouping only in parser. In this way exceptional cases when grouping of tokens has to be changed by parser (like reinterpretation of Token.IN) it is easy to deal with. Another advantage is decompiler simplification since it does not need to perform nested switches to unwrap tokens.
2003-08-13 14:21:39 +00:00
igor%mir2.org
b6cc816a7e
I replaced Token.ADD/Token.SUB by Token.POS/Token.NEG as operands of UNARY operation nodes in parse tree. This is mostly for readability and to catch ADD/SUB misuse earlier.
2003-08-13 11:57:33 +00:00
igor%mir2.org
1207aaf29d
Cosmetics: nodeOp as variable name is replaced by assignOp in methods related to construction of assignment nodes.
2003-08-13 11:53:14 +00:00
igor%mir2.org
41850a6a58
Change Parser to use IRFactory.createAssignment to create assignment nodes instead of calling createBinary only to handle assignments explicitly in IRFactory later.
2003-08-13 10:51:38 +00:00
igor%mir2.org
b295ff2879
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=215923 :
...
Search prototype chain of JS this until wrapped Java object is found that is compatible with Java this.
2003-08-13 06:04:41 +00:00
igor%mir2.org
ab08a3b216
Making Decompiler.decompile public and changing NativeFunction.getSourceFunction() to return Object so it is easy to implement alternative presentation of encoded source.
2003-08-12 13:12:39 +00:00
igor%mir2.org
ec958a8bd4
Encoded source presentation changes.
...
Now encoded source does not encode sources of nested functions as external references. Rather they are encoded as any other source elements and to implement function.toString() runtime stores starting and ending offsets for function encoded source.
In this way decompiler is separated from the rest of runtime and external applications can access the encoded source with less efforts.
2003-08-12 11:50:48 +00:00
igor%mir2.org
494a57b800
Using ScriptRuntime.emptyStrings to return emoty var array
2003-08-12 11:50:45 +00:00
igor%mir2.org
35a6276528
Switching to use ClassFileWriter.addPush(String) instead of ClassFileWriter.addLoadConstant(String) to support string constants with JVM UTF8 encoding exceeding 64k.
2003-08-11 14:54:19 +00:00
igor%mir2.org
ea022380ec
Fixing bugs in the initial implementation of ClassFileWriter.addPush(String): now it works
2003-08-11 14:14:12 +00:00
igor%mir2.org
ed090e665d
Use special token to encode function escape in Decompiler instead of using elaborated code to distinguish between start of function and function escape.
2003-08-11 11:06:21 +00:00
igor%mir2.org
4c2e90dc66
Adding readFile function to the shell to read file context.
2003-08-11 10:54:40 +00:00
igor%mir2.org
bcc6e01937
making decompiler class public so public method Parser.parser still can be called from outside omj.
2003-08-08 16:42:41 +00:00
igor%mir2.org
05eb524d3a
Pass Decompiler object as an argument for Parser.parse instead of creating an instance there for better flexibility.
2003-08-08 15:42:19 +00:00
igor%mir2.org
9f0dfa296b
Calling Decompiler.decompile directly instead of calling Parser.decompile
2003-08-08 15:36:48 +00:00
igor%mir2.org
96a2d4f7b0
Decompiler class is moved to a separated file
2003-08-08 10:35:57 +00:00
igor%mir2.org
e7294c0d66
1. Fixing Decompler.decopile for a function body when justBody is true Token.LC is added to the list of tokens to skip in function header.
...
2. Various cleanups in Decompiler to finalize Parser/Decompler split.
2003-08-08 09:35:36 +00:00
igor%mir2.org
282751793f
push(int/double) simply calls now ClassFileWriter.addPush()
2003-08-08 09:32:40 +00:00
igor%mir2.org
a837af4e01
Added addPush(String) to generate code to push the given String into stack even if String does not fit the class file format restriction that JVM utf-8 encoding of strings in constant pool can not exceed 64K - 1.
...
Also added addPush(int/double) for symmetry, they are copied here from omj/optimizer/Codegen.java.
2003-08-08 09:30:57 +00:00
igor%mir2.org
807f86937c
Restoring from bad commit of development uncompilable code
2003-08-07 15:10:10 +00:00
igor%mir2.org
1c21aeb4b2
Notification of debugger about finished compilation of script/top-level-function is moved to a separated function. In this way Interpreter and ScriptOrFnNode does not need to pass original source around just to throw it away if debugger is not present.
2003-08-07 15:08:00 +00:00
igor%mir2.org
02965674fe
Replace anonymous/empty name play for functions constructed through Function in NativeFunction/Parser by using anonymous when necessary when assembling function source from Function arguments.
2003-08-07 10:46:41 +00:00
igor%mir2.org
6ef6f731d0
Less generic code for interactioon between Parser and Decompiler
2003-08-07 07:19:16 +00:00
igor%mir2.org
64eb193a93
Code to generate/decode encoded source presentation is factored to a separated class Decompiler.
2003-08-06 16:18:28 +00:00
igor%mir2.org
8a7aea78a4
1. Add Token.NOT as a byte code instead of generating if code to push false/true as "!" is frequent enough and interpreter does not have optimized mode to remove most of its usage in logical context.
...
2. When dumping icode, print it to System.out instead of icode.txt file for more convenient development.
2003-08-06 11:37:14 +00:00
igor%mir2.org
bd839e9869
build.xml reorganization to add deepclean, clean and help targets and making help a default target, see for details http://bugzilla.mozilla.org/show_bug.cgi?id=214997
2003-08-06 07:47:58 +00:00
igor%mir2.org
b4041d1788
More tokens used only in Interpreter are moved from Token to Interpreter. I also added addToken/addIcode to be used instead of simple addByte to catch bugs about wrong byte code as soon as possible.
2003-08-06 07:39:37 +00:00
igor%mir2.org
8cd43155f4
I changed Context.codeBug to return RuntimeException instead of void to be able to wright "throw Context.codeBug()" when simple "Context.codeBug()" leads to a compile error about unreachable code or missed return.
2003-08-06 07:37:27 +00:00
igor%mir2.org
0e29410001
1. Constants in Token that are used only as Interpreter bytecode are moved to Interpreter.
...
2. LAST_BYTECODE_TOKEN is added to Token to server as a base for internal Interpreter bytecodes instead of Token.LAST_TOKEN. In this way compiler can generate more denser code for switches over interpreter bytecode.
2003-08-05 15:58:39 +00:00
igor%mir2.org
86cd62c38a
SOURCEFILE bytecode used to restore interpreter source information is replaced by setting cx.interpreterSourceFile at the beginning of Interpreter.interpreter and restoring the old value at the end.
2003-08-05 11:16:14 +00:00
igor%mir2.org
77701f3d53
I moved definitions of tokens in Tokenstream to separated class Token. In this way minimal Rhino distribution way remove Token class since it only necessary during compilation and strings with constant names would not be loaded into JVM.
2003-08-04 15:00:06 +00:00
igor%mir2.org
668a70e247
Initialize cx.interpreterSourceFile with script o r function source name before starting bytecode execution so this information for the first script throw/runtime exception
2003-08-04 13:01:06 +00:00
igor%mir2.org
41be961fb9
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=214945 :
...
Optimize away empty try block only if finally is empty as well.
2003-08-04 12:57:15 +00:00
igor%mir2.org
5c9fcbc358
<center><h1>... is replaced by <h1 align=center> to avoid warning from javadoc
2003-08-04 07:51:19 +00:00
igor%mir2.org
06ea9ce3ff
Fixing /** coments to remove JavaDoc errors/warnings
2003-08-03 21:40:22 +00:00
igor%mir2.org
13d2351d26
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=214608 :
...
The reason for the regression is that now JavaMembers.lookupClass never
attempts to reflect package-private classes. But this is wrong since even with
SecirutyManager installed JVM allows to call Class.getMethos()( and returns
list of all public methods in the class and its super classes.
The patch removes the restrictions while making JavaMembers.lookupClass much
simpler.
2003-07-31 17:08:58 +00:00
igor%mir2.org
5b5659a759
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=213231 :
...
All information about exception handlers are stored in exception table eliminating the need to have TRY bytecode.
2003-07-24 10:50:29 +00:00
igor%mir2.org
c51b5baef2
Work in progress on http://bugzilla.mozilla.org/show_bug.cgi?id=213231 :
...
Replacing try stack by static table of exception handlers
2003-07-24 10:46:46 +00:00
igor%mir2.org
1c5587194f
Work in progress on http://bugzilla.mozilla.org/show_bug.cgi?id=213231 :
...
When handling exceptions, restore proper scope without using try stack
2003-07-24 10:45:30 +00:00
igor%mir2.org
3d44748251
Restoring NativeJavaMethod(Method, String) for backward compatibility.
2003-07-24 09:06:44 +00:00
igor%mir2.org
44b2b7a51b
Move code to adjust stack depth for finally handler from TARGET case of the main switch in generateICode to TRY switch generating all the code for try. It allows to remove special marking of JSR targets with FINALLY_PROP and make stack handling for catch and finally block uniform.
2003-07-22 13:41:35 +00:00
igor%mir2.org
08be0f19ff
Removal of JTHROW byte code: instead of generation byte code pair [GOSUB exception handler], JTHROW, RETSUB from finally now supports re-throwing of exception object directly when called from exception handler.
...
Now the exception handler invokes finally code with the exception object on the stack top, not PC to return which allows RETSUB to distinguish between this and GOSUB invocation.
2003-07-22 13:04:07 +00:00
igor%mir2.org
b13e48a42a
Move ENDTRY, JTHROW, GOSUB and RETSUB from TokenStream to Interpreter as they specific only to Interpreter implementation.
2003-07-22 11:16:54 +00:00
igor%mir2.org
806103a6b0
Removal of code to handle stack chages when generationg GOSUB to finally code for finally handler: the stack size adjustments is done during FINALLY code generation already.
2003-07-22 08:58:08 +00:00
igor%mir2.org
293663835f
When generating code to invoke finally block from exception handler, do not store exception object in the local slot but rather leave it on JS stack and update finally block generation to expect potentially 2 objects on stack, not single return pc address.
2003-07-21 16:27:48 +00:00
igor%mir2.org
2d7d723eef
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=201893 :
...
New class MemberBox wraps Method or Constructor instances to cache results of getParameterType() and other information and to to replace Method instance by more accessible one recovery from IllegalAccessException is possible.
2003-07-15 20:47:29 +00:00
igor%mir2.org
88bc61b4a7
Cosmetics: layot fixes
2003-07-15 20:44:17 +00:00
igor%mir2.org
425cf932f1
Throw IllegalArgumentException from compileString/compileReader if script line number is negative instead of catching it much later via Context.codeBug().
2003-07-09 19:27:46 +00:00
igor%mir2.org
911194379d
1. To evaluate script represented by String, use Context.evaluateString to avoid the need to create StringReader instances.
...
2. Catch VirtualMachineError so on out-of-memory/stack-overflow the shell will exit with System.exit(EXITCODE_RUNTIME_ERROR), not with 1. It will allow to distinguish cases when script tried to consume all available stack/memory with bugs in Rhino itself leading to NullPointerException etc.
3. Remove code to rethrow ThreadDeath from JavaScriptExcception since ThreadDeath is re-thrown by the engine itself.
2003-07-06 19:21:42 +00:00
igor%mir2.org
24a1f6c04d
Caching of Method/Constructor.getParameterType()
...
To avoid constant calling of Method/Constructor.getParameterType() which creates a new Class array on each call, NativeJavaMethod stores the parameter types for its methods in methodTypes array and similarly JavaMembers holds all constructor types in ctorTypes array. The cached Class arrays are passed explicitly to methods that previously called getParameterType().
2003-07-06 19:07:00 +00:00
igor%mir2.org
5cb6af55e7
Cosmetics: use
...
import java.lang.reflect.*;
import java.io.*;
instead of explicit importing multiple classes.
2003-07-06 19:02:03 +00:00
igor%mir2.org
90d98c2fd0
NativeJavaMethod.add is removed. It allows to assume that after NativeJavaMethod constructor methods array will remain the same, which I will use in the following patch to add caching of Method.getParameterTypes.
...
Instead of calling NativeJavaMethod.add, JavaMembers assemble the method list directly and then pass it to NativeJavaMethod when done.
2003-07-06 18:59:30 +00:00
igor%mir2.org
77e05e0e7b
Pass staticType to wrapAsJavaObject to restore an option to use it for reflection instead of dynamicType if a security manager prevents the later
2003-07-06 18:51:54 +00:00
igor%mir2.org
70cfc8b896
More JavaMembers cosmetics:
...
1. All its methods package private methods that are not accesible outside the class itself are made private.
2. Various package-private getters are removed in favor of direct field access.
2003-07-06 18:51:53 +00:00
igor%mir2.org
b0389f951d
1. Changing NativeJavaMethod.findFunction to return index of found method instead of the method itself to make smaller the following optimizations of findFunction.
...
2. Removal of NativeJavaMethod.getMethod that simply returned package-private field NativeJavaMethod.methods since the filed itself was accessed directly by other files.
2003-07-05 22:13:33 +00:00
igor%mir2.org
0ec6e88645
Added reportRuntimeError4 and getMessage4 to build 4-argument messages
2003-07-05 22:05:55 +00:00
igor%mir2.org
a6b675e615
For compatibility, resurrect unwrap as deprecated method.
2003-07-03 18:51:16 +00:00
igor%mir2.org
82aeb6ef28
Added public FunctionObject.getMethodOrConstructor() to resolve
...
http://bugzilla.mozilla.org/show_bug.cgi?id=108719
2003-07-02 21:07:44 +00:00
igor%mir2.org
d5b6570f2f
Do not store dynamic scope flag in the object. Instead when checking thisObj against Java this type use scope != getParentScope() to detect such usage.
2003-07-02 19:41:48 +00:00
igor%mir2.org
63f322dbc8
Updating exception debugging to reflect changes due to http://bugzilla.mozilla.org/show_bug.cgi?id=210605 .
2003-07-02 16:37:29 +00:00
igor%mir2.org
0fd587e9cb
Reorganization of Java and JavaScript exception iteraction. See http://bugzilla.mozilla.org/show_bug.cgi?id=210605 for details.
2003-07-02 16:35:51 +00:00
igor%mir2.org
382a86a3ac
1. Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=102093 :
...
In NativeCall constructor adds argument object only if there is no parameters with this name and similarly do not set arguments to undefined if the function has "var arguments".
2. Split NativeCall into NativeCall and NativeCallPrototype to allow for smaller activation objects with faster property access.
2003-07-02 16:31:54 +00:00
igor%mir2.org
da994ea70d
Cosmetics: end-of-line junk space removal
2003-07-01 07:18:07 +00:00
igor%mir2.org
6884fa2379
Teach Committing.generateCatchBlock() to generate catch blocks for EcmaError exceptions to avoid code duplication.
2003-06-30 20:21:32 +00:00
igor%mir2.org
e7c259d18c
The code to deal with caught Java exceptions and transfer control to script finally/catch is transfered to CATCH bytecode which is now always added to the and of script bytecode. In this way if Context.observeInstructionCount throws an exception, a proper cleanup to restore Interpreter runtime will still be carried out. It also allowed to transfer control directly to catch/finally code when script call throw instead of throwing Java exception just to capture it immediately.
...
This special CATCH bytecode is a simple way to workaround lack of goto in Java which makes writing interpreters more complex then necessary...
2003-06-30 19:31:44 +00:00
igor%mir2.org
6edb24a69c
Added ScriptRuntime.getCatchObject() for extracting JS object to pass as the argument to JS catch statement.
2003-06-30 19:21:41 +00:00
igor%mir2.org
e9a24f4c38
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=210682 :
...
A slightly modified version of Brian Gugliemetti fix for bad interaction in TokenStream.getToken()/peekTokenSameLine() when dealing with EOL.
2003-06-30 19:18:31 +00:00
igor%mir2.org
be6ac6dc93
Removal of deprecated DefiningClassLoader
2003-06-29 22:32:52 +00:00
igor%mir2.org
c3de7c7797
Exception handling cleanup: use CATCH bytecode to extract JS object from Trowable so any exception that happens during this process will be handled properly.
2003-06-29 22:12:48 +00:00
igor%mir2.org
fb888bfa6d
Cosmetics: removal of unused import
2003-06-29 21:58:01 +00:00
igor%mir2.org
6434e11894
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=208293 :
...
Patch from Steve Beal to fix my bug in Context.readReader.
2003-06-11 13:27:23 +00:00
igor%mir2.org
7e7475f7b5
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=207999 :
...
EcmaError constructor now takes a generic Scriptable and not NativeError so classes outside org.mozilla.javascript can use it.
2003-06-11 07:36:11 +00:00
igor%mir2.org
64c08e0506
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=207968 :
...
As suggested by Roland Knight, WrappedException does not call exception.fillInStackTrace() to prevent hiding of the original stack trace.
2003-06-11 07:33:22 +00:00
igor%mir2.org
228ed52ca0
To store properties, replace UintMap by a linked list. The former creates 2 objects (UintMap itself and int array) to store int properties and 3 objects (additional object array) to store object properties but vast majority of Nodes has no more then 2 properties with single-property-node contributing most to the majority.
2003-06-02 06:35:57 +00:00
igor%mir2.org
413322eb2a
Pass IRFactory to Parser.parse instead of Parser constructor so Parser initialization would not require IRFactory which needs Interpreter in turn .
2003-05-21 12:09:08 +00:00
igor%mir2.org
60d7e7b824
Layout cosmetics
2003-05-21 11:48:32 +00:00
igor%mir2.org
66d047350d
Added WrapFactory.wrapAsJavaObject to simplify customization of LiveConnect
2003-05-20 12:46:09 +00:00
igor%mir2.org
8368c94269
Adding missed final qualifier to the declaration of js_NaN_date_str field
2003-05-20 08:10:48 +00:00
igor%mir2.org
c6db00699d
Addition of seal function to Rhino shell to seal all supplied arguments.
2003-05-19 15:53:23 +00:00
igor%mir2.org
335b23c60e
Resolving http://bugzilla.mozilla.org/show_bug.cgi?id=203013 :
...
Changing behavior of sealed objects to throw an exception on any attempt to modify them including changing values of existing properties. In the same time making object sealed does not affect read-only status of its properties which allows to override properties of objects with a sealed object as a prototype.
Rhino shell now accepts -sealedlib option to seal all standard objects.
2003-05-16 14:25:57 +00:00
igor%mir2.org
8795bde8a6
Optimizations in NativeDate mostly to reduce amount of various format strings runtime has to initialize.
2003-05-16 08:32:58 +00:00
igor%mir2.org
5c174e00c9
NativeObject is split into NativeObject and NativeObjectPrototype subclass not to have prototypeFlag field in each and every object instance.
2003-05-15 13:12:41 +00:00
igor%mir2.org
3a4259f580
Resolving http://bugzilla.mozilla.org/show_bug.cgi?id=205661 :
...
In setBySetter when start != this setters with delegators and setters without one if start is not an instance of this class are not invoked on start. Instead the standard JS rules applies so x.a = 1 would not change a in x.__proto__ if a in x.__proto__ is controlled by setter.
2003-05-15 07:29:46 +00:00
igor%mir2.org
83a3ee7978
In getByGetter/setBySetter with slot.delegateTo avoid potentially expensive checks for start type if this == start.
2003-05-14 14:51:00 +00:00
igor%mir2.org
d61a682a8d
Changing JavaAdapter not to define JavaAdapter.prototype since new JavaAdapter create JS objects with __proto__ pointing to Object.prototype. It removes the need to extend from ScriptableObject in JavaAdapter and effectively makes it a collection of static methods.
...
To implement JavaAdapter JS call I used JIFunction subclass so the method implementing this functionality can be package private.
2003-05-14 12:44:24 +00:00
igor%mir2.org
2db5b5aa69
More layout fixes and renames to make the following commit smaller.
2003-05-14 09:45:59 +00:00
igor%mir2.org
b48900f554
In jsConstructor catch reflection exceptions and rethrow them as WrappedException not to create InvocationTargetException proxy that will be converted to WrappedException by the runtime in any case.
2003-05-14 09:37:39 +00:00
igor%mir2.org
6e8c35eed6
Removal of overridden equals that simply calls super.equals since JavaAdapter does not need to define the method for ScriptableObject.defineClass to work and layout cosmetics.
2003-05-14 06:24:00 +00:00
igor%mir2.org
49a339a54b
Replace catch for various exceptions that reflection methods can throw by single catch (Exception ex) to have smaller code.
2003-05-13 10:07:44 +00:00
igor%mir2.org
4249f507ee
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=205297
2003-05-12 16:54:41 +00:00
igor%mir2.org
5e2e66cdab
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=201896 :
...
New helper class JIFunction for easy implementation of JS functions in Java without using reflection and its usage in ImporterTopLevel and NativeJavaPackage
2003-05-06 18:59:22 +00:00
igor%mir2.org
f8bd7bf48c
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=204210
2003-05-06 18:53:16 +00:00
nboyd%atg.com
c496d0ae06
Fix suggested by Bojan Cekrlic in Bugzilla Bug 203752:
...
While you are messing arround with JavaScriptException, is it possible to add
if(value instanceof Throwable) {
initCause((Throwable) value);
}
I know it's a Java 1.4 feature and not directly connected to this bug and don't
know what's the Rhino's policy of supported Java versions, but it in the end it
could be done with method.invoke() or something similar.
This would help debugging a lot.
2003-05-06 16:56:38 +00:00
igor%mir2.org
f7808560ee
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=204513
2003-05-06 15:29:36 +00:00
igor%mir2.org
d9ff563fdb
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=204576
...
Using (x instanceof Wrapper) instead of (x instanceof NativeJavaObject) which replaces the previous fix of unwrapping NativeJavaObject.call arguments for the custom wrappers problem.
2003-05-06 10:51:24 +00:00
igor%mir2.org
c4883770d2
Cosmetics: removal of NativeJavaObject. prefix when calling NativeJavaObject methods.
2003-05-05 16:15:50 +00:00
igor%mir2.org
0ec8c3be9c
When marking parse tree nodes as special calls, use explicit integer id to specify node type, note a generic boolean flag. It would allow for simpler code during special calls evaluation.
2003-05-02 14:00:19 +00:00
igor%mir2.org
6db53c35e3
In ScriptRuntime.callOrNewSpecial remove special handling of exec calls since it is never used.
2003-05-02 12:16:05 +00:00
igor%mir2.org
1460a34ed2
Simpler code in Codegen.visitRegularCall to select which runtime method to call.
2003-05-02 11:34:05 +00:00
igor%mir2.org
f22082da7c
Cosmetics: tabs and end-of-line whitespace removal
2003-05-02 10:27:56 +00:00
igor%mir2.org
4fa57f3d80
More comments on IdFunction.createObject and layout cosmetics.
2003-05-01 10:34:19 +00:00
igor%mir2.org
811cae74fb
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=203909 :
...
1. Reorganization of BaseFunction.construct to always call createObject to avoid the need to re-implement construct in IdFunction and FunctionObject when much simpler code for subclassing createObject will do the job.
2. Throwing TypeError in IdFunction.createObject if it is not marked explicitly as constructor to satisfy EcmaScript standard:
first page of ECMAScript Edition 3, chapter 15: "None of the built-in
functions described in this section shall implement the internal
[[Construct]] method unless otherwise specified ...."
For more details, see http://bugzilla.mozilla.org/show_bug.cgi?id=202019
2003-05-01 10:22:58 +00:00
igor%mir2.org
4b63a150a1
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=203841 :
...
To fix the issue I moved away from generateCodeFromNode code to merge boolean
checks and conditional jumps into separated generateIfJump method that tries to
apply this optimization and if it is not possible, it calls
generateCodeFromNode and adds a generic jump.
2003-05-01 10:07:23 +00:00
igor%mir2.org
341ffcaf63
Implement Serializable by recently introduced ImporterFunctions as this is required for scope serialization.
2003-04-29 13:56:57 +00:00
igor%mir2.org
507f6e1571
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=203752 :
...
NativeGlobal implements Serializable to allow scope serialization.
2003-04-29 13:54:22 +00:00
igor%mir2.org
7aef73e908
Renaming getIdDefaultAttributes to getIdAttributes in IdScriptable and its descendants to better reflect method semantic change in the previous IdScriptable commit plus layout cosmetics.
2003-04-29 12:06:17 +00:00
igor%mir2.org
0b0e3d9fb7
Removal of support for altering attributes of id-based properties. If such support is required, a subclass should override IdScriptable.setIdAttributes which by default throws an runtime exception unless new attributes are the same as the old ones.
2003-04-29 08:54:55 +00:00
igor%mir2.org
9cde635841
IdScriptable.nextInstanceCheck is replaced by IdScriptable.incompatibleCallError to reflect proper semantic and simplify id-related code.
2003-04-28 16:27:57 +00:00
igor%mir2.org
5dc7316f87
Replacing protected by private/package private to allow for better optimization.
2003-04-28 12:54:59 +00:00
igor%mir2.org
9e9fa17082
Removal of unused private static SEAL_FUNCTIONS_FLAG
2003-04-28 12:53:15 +00:00
igor%mir2.org
9cf97b6988
Replacing prototypePropertyAttrs by simple boolean flag isPrototypePropertyImmune for simpler code.
2003-04-28 12:52:21 +00:00
igor%mir2.org
65790b9103
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=203402 :
...
In Codegen do not pass trueLabel, falseLabel to recursive
generateCodeFromNode from ADD node and use -1 , -1 instead to indicate non-jump node.
2003-04-28 09:50:56 +00:00
igor%mir2.org
03ffd6752b
Restoring toStringTreeHelper functionality to print nested functions as a part of the tree. The regression was caused by changes to store function reference as index and not function node.
2003-04-28 09:44:19 +00:00
igor%mir2.org
d6cb9bf88b
In debug mode print instruction names, not their bytecode values.
2003-04-27 08:12:18 +00:00