Граф коммитов

1338 Коммитов

Автор SHA1 Сообщение Дата
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