igor%mir2.org
b63333276d
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
7fdd9e85d1
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
09c327adc3
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
9a1fbf3def
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
e1290d4dbb
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
13865e4143
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
0dec223435
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
a5f9d59614
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
6fa381d49b
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
593784cb96
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
a4742a5fe9
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
a692d990fc
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
9c0e1f0749
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
08560c4e86
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
a9944948f9
Using ScriptRuntime.emptyStrings to return emoty var array
2003-08-12 11:50:45 +00:00
igor%mir2.org
e725b9c0be
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
93e05fffaa
Fixing bugs in the initial implementation of ClassFileWriter.addPush(String): now it works
2003-08-11 14:14:12 +00:00
igor%mir2.org
3594eb4b6b
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
8a8ca75068
Adding readFile function to the shell to read file context.
2003-08-11 10:54:40 +00:00
igor%mir2.org
af20fbe788
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
5523fffb09
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
6d6c104572
Calling Decompiler.decompile directly instead of calling Parser.decompile
2003-08-08 15:36:48 +00:00
igor%mir2.org
dda5331153
Decompiler class is moved to a separated file
2003-08-08 10:35:57 +00:00
igor%mir2.org
1c08dda3b8
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
0148813038
push(int/double) simply calls now ClassFileWriter.addPush()
2003-08-08 09:32:40 +00:00
igor%mir2.org
9ad008dd30
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
99e484ca5b
Restoring from bad commit of development uncompilable code
2003-08-07 15:10:10 +00:00
igor%mir2.org
666483b96d
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
74d4f30e0e
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
954158fd2c
Less generic code for interactioon between Parser and Decompiler
2003-08-07 07:19:16 +00:00
igor%mir2.org
db59f1d230
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
2b68f1745e
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
d153c65a1b
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
faf2a30c39
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
f95ae1ab5b
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
87aeaade82
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
fa6d86fba0
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
61cd64260c
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
fb9ac64c2e
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
040a93626e
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
30718f5ece
<center><h1>... is replaced by <h1 align=center> to avoid warning from javadoc
2003-08-04 07:51:19 +00:00
igor%mir2.org
86bdaa37fc
Fixing /** coments to remove JavaDoc errors/warnings
2003-08-03 21:40:22 +00:00
igor%mir2.org
9d44b5410e
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
3bad6fe1f8
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
6a3aad3989
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
7625f8b519
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
dfd7e9d362
Restoring NativeJavaMethod(Method, String) for backward compatibility.
2003-07-24 09:06:44 +00:00
igor%mir2.org
e0de8aab17
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
687dff0fe1
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
ebe60fb675
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