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