igor%mir2.org
cd63019db8
Prepare to remove dependancy of core debugger implementation on GUI: introduction of GuiCallback interface that DebugGui implements.
2004-05-27 10:21:24 +00:00
igor%mir2.org
b85ecb8c02
Work on 244492: JavaScriptException extends RuntimeException
2004-05-26 11:54:10 +00:00
igor%mir2.org
fa34067a88
Make sure that Context.getSourcePositionFromStack never returns negative numbers and uses 0 to indicate absence of line information. It accounts for differences between JVMs when dealing with incomplete debug information.
2004-05-26 11:03:03 +00:00
igor%mir2.org
63596c3f2b
In JavaScriptException constructor do not call ScriptableObjec.toString(value) since it may potentially trigger script execution for objects defining toString method which in turn may throw exceptions.
...
Instead for Scriptable arguments prints their [Object className] form which is provided by the new ScriptRuntime.defaultObjectToString(Scriptable) method.
2004-05-25 15:39:28 +00:00
igor%mir2.org
7341c1f1b5
Added JavaDoc link to a better way of wrapping exceptions then using WrappedException constructor
2004-05-24 10:11:23 +00:00
igor%mir2.org
8804a5c10d
Restoring public constructor for WrappedException for compatibility with Batik.
2004-05-24 07:53:06 +00:00
igor%mir2.org
2283ed2681
Change Arguments.getIds to include argument indexes when getAll is true. It allows not to have a tailored getIds in the debugger.
2004-05-23 17:34:44 +00:00
igor%mir2.org
3130100ea6
Fixing JavaDoc comments
2004-05-23 17:32:32 +00:00
igor%mir2.org
1e8e9be624
1. Reorganize debugger to move all code that interacts with the engine into Main.java while all GUI logic now presents in DebugGui
...
2. Move downloaded files for swing tree table into downloaded directory and adjust build files accordingly.
2004-05-23 16:15:09 +00:00
igor%mir2.org
cfe01facb2
Make sure that for Rhino-generated exceptions Throwable.getMessage() contains script file and line information.
2004-05-23 14:32:07 +00:00
igor%mir2.org
e431bd1a66
Make EcmaError to follow the same pattern as JavaScriptException
...
and EvaluatorException for getMessage() methods: it provides error message
with script source/line information.
2004-05-23 09:50:20 +00:00
igor%mir2.org
30e9aee832
Switch to line info extraction through single top script processing
2004-05-22 23:19:56 +00:00
igor%mir2.org
677ac1cd76
Splitting Main.java into Main.java and GUI-related DebugGui.java
2004-05-21 15:06:36 +00:00
igor%mir2.org
7ceadc8e69
Split Main class into Main and DebugGui to have better debugger/gui separation
2004-05-21 14:25:21 +00:00
igor%mir2.org
1ad8dc2197
Move all logic to open source window at the end of compilation to single update action.
2004-05-21 12:04:47 +00:00
igor%mir2.org
3265deef44
1. Fixing reporting for calls to undefined: stringReg is not suitable for function names if function contains arguments. So Token.NEW/Token.CALL comes with index of potential function name.
...
2. If debug information is not generated, Context.interpreterLineIndex could contain garbage from previous function invocation leading to ArrayIndexOfBound. Now Context.interpreterLineIndex is initialized at the interpreter entrance and getSourcePositionFromStack checks against absent line numbers.
2004-05-21 11:43:38 +00:00
igor%mir2.org
e58d2a671b
Move logic to show exception dialog into EnterInterrupt action
2004-05-21 11:27:59 +00:00
igor%mir2.org
7706f20db2
Test file
2004-05-21 10:53:19 +00:00
igor%mir2.org
5c690d13af
I changed StackFrame.onLineChange to access breakFlag directly which allowed to remove global context hashtable
2004-05-21 01:20:48 +00:00
igor%mir2.org
261666150e
Merge various GUI initializations during breakpoint hit into single action
2004-05-21 01:10:04 +00:00
igor%mir2.org
0ec2c999de
Removal of manThread: breakFlag can do its job just fine
2004-05-21 00:17:45 +00:00
igor%mir2.org
9f73c42235
Replace Context switching during eval for interrupted threads by thread communication so all evals happens on the original thread.
2004-05-21 00:11:24 +00:00
igor%mir2.org
013271de02
To make variable access faster the form of getvar/setvar with var index
...
encoded in bytecode is reintroduced.
2004-05-18 22:33:41 +00:00
igor%mir2.org
c23cadde22
Added more fast index load instructions and removed 0xFF & when extracting bytecode as all byte codes are less then 128.
2004-05-18 15:02:26 +00:00
igor%mir2.org
f9804a0ac7
In the interpreter loop comparision operations are represented by separated optimized do_cmp.
2004-05-18 12:19:25 +00:00
igor%mir2.org
10f3c4233e
To make loading of strings into string register faster I added Icode_REG_STR_C[01023] that directly loads the string at the given index.
2004-05-18 11:19:30 +00:00
igor%mir2.org
351dcb728c
Removal of 32K restriction on the length of the maximum jump offset.
...
Now interpreter uses UintMap to store jump targets spanning more then 32K
of bytecode.
2004-05-17 21:36:47 +00:00
igor%mir2.org
a6a8297e30
Reorganization in jumping code to make the following patch to drop 32K
...
jump length restriction smaller
2004-05-17 19:19:18 +00:00
igor%mir2.org
7e1c77a956
Remove 256 limit on number of variable using index prefix for all variable
...
operations. To offset small performance loss for variable access new
index prefixes operation REG_IND_C[0123] are added to load 0,1,2,3 as index
value with one bytecode.
2004-05-17 17:57:43 +00:00
igor%mir2.org
bf289c6354
For GETPROP/SETPROP use explicit name prefix to load property name instead
...
of pusshing property to stack
2004-05-17 17:29:12 +00:00
igor%mir2.org
5b81311a84
Remove 256 limit on number of local slots using REG_IND* prefixes to load the
...
slot index
2004-05-17 16:27:39 +00:00
igor%mir2.org
c226bf5cde
Splitting name_and_this bytecode into name_fast_this and name_slow_this to
...
avoid flag reading during simple function calls
2004-05-17 15:58:48 +00:00
igor%mir2.org
0681989924
Use the same of specal index prefix byte code for [] and {} literals
2004-05-17 14:55:45 +00:00
igor%mir2.org
e88881f3a6
Elimination of 64K restriction limit for various index-based opcodes. Now
...
they are prefixed with special Icode_REG_IND* that load the index of proper
size.
2004-05-17 14:34:29 +00:00
igor%mir2.org
696129bcb0
Removal of 64K limit of total number of strings per script/function: now
...
string operands are preloaded with special LOAD_STR opcodes that handles full
int indexes
2004-05-17 13:07:49 +00:00
igor%mir2.org
9a6e1fe15d
In the interpreter loop avoid code duplication for calling instruction
...
observer after each jump: now all tsuch code blocks are merged into generic
code that follows the interpreter switch
2004-05-17 11:44:42 +00:00
igor%mir2.org
34e9dc56b7
Another small modifications to Interpreter to make the following patches
...
smaller: replacing all brek in the main switch of the interpreter with
"continue Loop"
2004-05-16 21:01:00 +00:00
igor%mir2.org
774204ecef
In the interpreter loop increment pc immediately after icode read to avoid
...
ever adding +1 in post byte codes with arguments
2004-05-16 14:02:26 +00:00
igor%mir2.org
daaa920276
Inside the interpreter loop merger many almost identical icode
...
implementations into common block that use additional ifs to distinguish
between icode. It allows to shrink the ever growing Interpreter.interpret()
2004-05-16 13:30:53 +00:00
igor%mir2.org
aae93331f3
New implementation of ARRAYLIT and OBJECTLIT that does not requires stack
...
space to hold all literals values before they are copied to a temporary array
to pass to ScriptRuntime functions. The new code populates array during values
calculations.
2004-05-15 17:28:22 +00:00
igor%mir2.org
b4d0f698c9
Quote property names in object literals produced by toSource() if they
...
coincide with reserved keywords.
2004-05-15 17:23:06 +00:00
igor%mir2.org
37be8f9cfb
Use special parse nodes for array and object literals to generate more compact
...
bytecode both for interpreter and compiler to have faster [] and {} literals.
It also fixes the bug of accessing local variables Array/Object for the
literals instead of top-scope objects.
2004-05-14 22:47:44 +00:00
igor%mir2.org
2494dc182a
Use code similar to optimizer when generating call sequences to avoid tree mutations during code generation
2004-05-12 22:39:40 +00:00
igor%mir2.org
dbaff764ea
1. Fixing bug of forgotten updates to itsWithNesting
...
2. Optimization for calls like name() which similar to the optimizer code
2004-05-12 20:03:23 +00:00
igor%mir2.org
49aabab156
New function ScriptRuntime.notFoundError to throw error on missed properties
...
instead of scattered duplicated code
2004-05-12 19:59:57 +00:00
igor%mir2.org
8423b14b48
Removal of Token.GETBASE, Token.GETTHIS, Token.PARENT, Token.NEWTEMP, Token.USETEMP, Node.TEMP_PROP, Node.FIXUPS_PROP, Node.USES_PROP constants which are no longer used after the last changes
2004-05-12 15:00:41 +00:00
igor%mir2.org
92f45d1054
Instead of transforming parser tree to apply special treatment for call nodes, do that only during code generation .
2004-05-12 13:02:40 +00:00
igor%mir2.org
992ee898f2
Refactoring Codegen.visitCall: preprae for the following switch to generate call without transformer modifications
2004-05-12 10:34:46 +00:00
igor%mir2.org
aaf9cdfddc
Improve error messages for the optimizer when accessing undefined values
2004-05-11 10:06:51 +00:00
igor%mir2.org
b9f058dfe3
Cleanup of hasVarsInRegs
2004-05-10 16:45:02 +00:00
igor%mir2.org
5d1aacca6a
Apply direct call optimization only for functions that do not need activation.
2004-05-10 15:28:32 +00:00
igor%mir2.org
d2ab61c277
Determine functions that require activation during parsing and not in NodeTransformer
2004-05-10 13:39:14 +00:00
igor%mir2.org
27e2f6d328
Removal of checks for unitialized lVal.getJRegister(): the registers are always initialized in prelude.
2004-05-10 05:24:29 +00:00
igor%mir2.org
44deec93c2
Removal of JavaVariable interface in favor of simple method in ClassFileWriter. It allowed to shrink OptLocalVariable and made other code simpler.
2004-05-09 22:09:03 +00:00
igor%mir2.org
ed03829d75
Clenup the usage of getJRegister/assignJRegister
2004-05-09 21:07:08 +00:00
igor%mir2.org
5a48e9dc3a
Move all logic regarding establishing type of variable into Block.java
2004-05-09 21:06:20 +00:00
igor%mir2.org
b7fec72bfc
Removal of no longer used LASTUSE property and corresponding optimizer code
2004-05-09 12:38:45 +00:00
igor%mir2.org
0be4188b87
Remove code for CSE optimisation: it was used only to merger this.property calls but this optimisation changes program semantic if property is controlled by native getter.
2004-05-09 10:14:01 +00:00
igor%mir2.org
316271b0a9
OptLocalVariable cleanup: under optimization GETVAR/SETVAR nodes always has a reference to them
2004-05-08 22:24:02 +00:00
igor%mir2.org
07a54c7b74
Remove markLiveAcrossCall functionality that was never used for any optimizations
2004-05-08 21:05:00 +00:00
igor%mir2.org
1059cf02ce
Merge addToken/addString into single addString
2004-05-08 19:21:37 +00:00
igor%mir2.org
749dfe5b5d
Optimization of ++/-- and merge separated postIncrement/postDecrement to single postIncrDecr to remove too much code duplication
2004-05-07 15:05:11 +00:00
igor%mir2.org
fd2bfff2a7
FatBlock is moved to Block as a private class
2004-05-07 15:03:39 +00:00
igor%mir2.org
09b1d12d63
Added addPush(boolean)
2004-05-07 15:00:17 +00:00
igor%mir2.org
a06c84f791
Extend optimization ==, !=, ===, !== against null to check null presence on any side of the test.
2004-04-21 12:00:27 +00:00
igor%mir2.org
5a691b58fa
Fix max stack calculations in dcpLoadAsObject/dcpLoadAsNunber and optimize visitIfJumpRelOp to take advantage of the fact that left and right numerical operands force numeric context.
2004-04-20 13:00:08 +00:00
igor%mir2.org
c39f4108d7
Reuse code to generate optimized if jumps for boolean operations that return Boolean instance
2004-04-18 20:29:41 +00:00
igor%mir2.org
8231a39a23
Cleanups:
...
1. Added addObjectToDouble() to replace explicit code generation for object to double convertion.
2. nodeIsDirectCallParameter returns dcp register to avoid double look up of OptVariable
2004-04-18 16:29:12 +00:00
igor%mir2.org
2957c844ca
Layout cosmetics
2004-04-18 16:26:32 +00:00
igor%mir2.org
97dc2f98e4
Trust JVM to implement "<=" and "<" according to JVM specs and replace code like
...
d1 == d1 && d2 == d2 && d1 < d2
with simple
d1 < d2
That in turn allows to simplify code generation and remove OptRuntime.cmp_ functions.
2004-04-18 14:53:34 +00:00
igor%mir2.org
b9219ca745
Trust JVM to implement "<=" and "<" according to JVM specs and replace code like
...
d1 == d1 && d2 == d2 && d1 < d2
with simple
d1 < d2
2004-04-18 14:52:22 +00:00
igor%mir2.org
d6576c5892
Remove commented out code to treat integer specially: it is not applicable any longer in any case.
2004-04-18 14:49:50 +00:00
igor%mir2.org
d62ad77af5
Work on bug 238649: no more support for ClassNameHelper and friends
2004-04-18 12:15:07 +00:00
igor%mir2.org
b71427a6ae
Worj on bug 238649: removal of NotAFunctionException
2004-04-18 09:30:30 +00:00
igor%mir2.org
534c7d51d6
1. Change cmp_* functions to return boolean, not int, to simplify code.
...
2. Move optimizer-only functions from ScriptRuntime.java to optimizer/OptRuntime.java
3. Add ScriptRuntime.wrapBoolean to wrap boolean value and use it in the optimizer
2004-04-16 07:38:20 +00:00
igor%mir2.org
81470d5283
1. Throw IllegalArgumentException instead of EvaluatorException when argument does not belong to JS runtime types.
...
2. Optimize eq and shallowEq in ScriptRuntime to share code with optimized versions in Interpreter.
2004-04-14 14:50:24 +00:00
igor%mir2.org
cb3ccb29b3
Layout cosmetics
2004-04-14 14:46:58 +00:00
igor%mir2.org
153f7be2a2
Support for Date.now()
2004-04-14 11:04:55 +00:00
igor%mir2.org
c685edc692
Fixing bug 58118 : long overdue commit of patch from Mike McCabe, mike+mozilla@meer.net
2004-03-30 12:48:29 +00:00
igor%mir2.org
701ea21521
Since new x in Java never returns null, the check for null in date_format was redundant.
2004-03-30 10:35:42 +00:00
igor%mir2.org
eef0796b8a
Faster implementation of MonthFromTime and DateFromTime:
...
1. Use day / 30 as month estimate with the following adjustment via switch()
2. Reuse year from day calculations in IsLeapYear
2004-03-29 15:19:04 +00:00
igor%mir2.org
021b376688
Fixing bug 239068: proper initialization of parent scope for functions of constructors.
2004-03-29 15:15:34 +00:00
igor%mir2.org
3a93fa2e8e
DaysInYear is replaced by IsLeapYear since the former was used only to determine if a particular was leap or not
2004-03-29 14:16:23 +00:00
igor%mir2.org
ba8f69355a
Cosmetics: layout fixes
2004-03-29 12:30:24 +00:00
igor%mir2.org
dfdd5ab46c
Starting 1.5R5.1 development
2004-03-29 12:29:11 +00:00
igor%mir2.org
40db418d07
Fixing 238823 : throw explicit IllegalArgumentException when JS source for Context.compileFunction does not contain single JS function statement instead of producing silent empty functions or throwing obscure NullPointerExceptions
2004-03-27 09:35:22 +00:00
igor%mir2.org
e229fd6ab4
Better formating
2004-03-26 13:01:17 +00:00
igor%mir2.org
78ec796300
Fixing bug 238699 : refactoring to expose simpler code generation API caused to select wrong code path when compiling functions
2004-03-26 12:42:00 +00:00
igor%mir2.org
0292a753a1
Explicit date in Context.getImplementationVersion() for 1.5R5 release
2004-03-25 20:37:32 +00:00
igor%mir2.org
1aafe09612
Reflecting 1.5R5 release
2004-03-25 19:45:56 +00:00
igor%mir2.org
cbce2b4745
Starting 1.5R6
2004-03-25 17:58:03 +00:00
igor%mir2.org
420074b3a1
Removal of macbuild support: its Mac OS X time after all
2004-03-25 17:39:21 +00:00
igor%mir2.org
afe5a6cd9d
Info about commercial support
2004-03-25 15:46:40 +00:00
igor%mir2.org
abf0a3a1ac
*** empty log message ***
2004-03-25 11:04:04 +00:00
igor%mir2.org
37c396db64
Preparations for 1.5R5
2004-03-24 15:52:55 +00:00
igor%mir2.org
533e9f8489
Updates to reflect new extension to allow to pass function to Java method expecting interface: now interface with multiple methods are allowed as long as all methods has the same signature
2004-03-24 15:44:19 +00:00
igor%mir2.org
ae3df9d02a
Finalizing 223435 : function can be converted to Java interface with more then one method as long as all methods has the same signature.
2004-03-24 14:15:37 +00:00
igor%mir2.org
76316f18dd
More work on bug 223435 : pass method name for the interface as the last parameter to JS function so it can use for debug purposes
2004-03-23 16:24:32 +00:00
igor%mir2.org
f4ff06f911
Making BaseFunction.decompile package private: any new public function will always find its users even if the usage is broken. It was public to allow calls from debugger but simple call to Context.toString() would do the same job.
2004-03-18 13:37:29 +00:00
igor%mir2.org
0cbfdabe29
RUnit Software now includes a link on their page about JS (Declaimer: I work there!)
2004-03-18 13:32:52 +00:00
igor%mir2.org
f040fa2436
Added RUnit Software
2004-03-17 18:36:57 +00:00
igor%mir2.org
46abef99b9
Fixing bug 237771 : allow to transfer toSource implementation to different objects
2004-03-17 18:36:39 +00:00
igor%mir2.org
6b70acca26
Documenting new Context seal API and fixing obvious English mistakes.
2004-03-09 23:34:30 +00:00
igor%mir2.org
ecfd54c02f
Updated file with license info from Eugene Aresteanu :
...
> Hi,
>
> Does it look right now?
>
> Regards,
> Eugene
>
> -----Original Message-----
> From: Igor Bukanov [mailto:igor@fastmail.fm]
> Sent: Friday, March 05, 2004 10:07 AM
> To: eugene aresteanu
> Subject: Re: Rhino and license for Messages_fr.properties
>
>
> eugene aresteanu wrote:
>
>>Hello,
>>
>>Here it is. I hope it is right.
>>Why do you say the default Messages.properties lacks notices?
>>I used the header of Messages.properties as a template.
>
>
> Sorry for not been clear, but what I wanted to say is that did not have
> triple MPL/GPL/LGPL but rather the old NPL/GPL pair. Could you update
> the file one more time using
> http://www.mozilla.org/MPL/boilerplate-1.1/mpl-tri-license-sh as template?
>
> Regards, Igor
2004-03-05 19:17:43 +00:00
igor%mir2.org
5586a28481
Resolving bug 236117 : new API to seal Context
2004-03-03 19:59:25 +00:00
igor%mir2.org
58db1d9fd5
Resolving bug 236193: require enetered Context for compilation
2004-03-03 11:20:33 +00:00
igor%mir2.org
e0a2c2536d
Making javaToJS static to match the rest of API
2004-03-01 19:19:47 +00:00
igor%mir2.org
40f5e70cee
Fixing JavaDoc
2004-02-24 07:20:49 +00:00
igor%mir2.org
a3d001e0e8
Making NativeScript package private: if this will be controversial, then the public status can be restored
2004-02-24 07:19:56 +00:00
nboyd%atg.com
98a70b8580
Remove "pre" from a candidate build.
2004-02-18 17:28:40 +00:00
igor%mir2.org
4b836891b2
Preparations for 1.5R5
2004-02-18 12:24:27 +00:00
igor%mir2.org
8f085f363e
Preparations for 15R5 release.
2004-02-13 18:50:51 +00:00
igor%mir2.org
adeccbc67c
Fixing NativeGlobal.encode: it was broken for chars beyond 0xFFFF as it sb.setLength(k) was called after k was increased to consume the second char from UTF-16 encoding to build UCS-4.
2004-02-12 19:05:47 +00:00
igor%mir2.org
1e3f7aaaed
Preparations for 1.5R5
2004-02-12 18:13:00 +00:00
igor%mir2.org
ec7de43908
Fixing bug 233274: for/in loop goes through array elements in wrong order
...
Fix: populate ids array in NativeArray with dense indexes first
Since array literals in Rhino creates instances of NativeArray with the
internal dense array containing literal elements, the patch changes
NativeArray.getIds to return ids array with dense indexes coming first and
indexes for elements added later after that.
2004-02-06 20:16:36 +00:00
igor%mir2.org
3ba7b938c3
Adding backward compatibility to SecurityController so it can be used with Rhino 1.5R4.1 subclasses
2004-02-05 15:10:52 +00:00
igor%mir2.org
d3b31dac4f
Fixing bug 210605 again: for now re-throw Error instances as is without wrapping them into WrappedException so scripts would not be able to catch them.
2004-01-29 17:04:31 +00:00
igor%mir2.org
a7573a8a91
Removal support for deprecated getTargetClassFileName/setTargetClassFileName: they throw exception instead of calling a special proxy to avoid having probably unused any more class. If this is not true, then the methods should be restored.
2004-01-18 21:26:34 +00:00
igor%mir2.org
7d76224ac8
Fixing JavaDoc comments
2004-01-18 21:23:53 +00:00
igor%mir2.org
b224c3704c
EvaluatorException and WrappedException are public API now
2004-01-18 21:21:41 +00:00
igor%mir2.org
176a213396
Deprecating ClassNameHelper and ClassRepository in favor of new optimizer/ClassCompiler.
2004-01-17 21:52:30 +00:00
igor%mir2.org
b629e258d7
optimizer.ClassCompiler provides new simple API for generating of class files from scripts that does not require to create Context instances.
...
The jsc tool is updated to use the new interface instead of using ClassNamehelper and friends.
2004-01-17 21:02:32 +00:00
igor%mir2.org
134428fef2
1. optimizer/Codegen now just generates byte code classes, the instantiation of classes is done in a separated class optimizer/ClassCompiler. This is done to provide in future a simple interface to generate class files instead of complicated ClassNameHelper and friends implementation.
...
2. Parser now stores TokenStream instance in its field instead of having it present in each and every method signature. It allowed to simplify interaction between Parser and IRFactory where the later now uses Parser.reportError so parser van recover from syntax errors and provide better error reporting.
2004-01-16 18:20:22 +00:00
igor%mir2.org
0fc143dd7c
Added setters for properties of CompilerEnvirons.java so it can be initialized
...
without having Context object.
2004-01-16 16:09:07 +00:00
igor%mir2.org
34ebe5f4c1
Renaming Context.hrowAsUncheckedException to Context.throwAsScriptRuntimeEx to better reflect its purpose, providing better documentation and making sure it throws only instances of EcmaError and EvaluatorException.
2004-01-16 15:14:25 +00:00
igor%mir2.org
497a0f766c
Fixing bug 228336 :
...
This is a Rhino version of Brandan's patch from attachment 138844, bug 228087
plus code to fix overflow problem reported in bug 230216.
2004-01-16 15:11:31 +00:00
igor%mir2.org
a7050e5460
throwAsUncheckedException is moved from ScriptRuntime to Context as a useful API to use in external applications.
2004-01-15 20:41:57 +00:00
igor%mir2.org
f26418ea3f
Fixing typo in comments
2004-01-15 20:40:56 +00:00
igor%mir2.org
96ea5ea515
Patch from Alex Bitney to fix bug 230883
2004-01-15 20:10:54 +00:00
igor%mir2.org
59ae0034a1
Fixing bug 229571 : code refactoring for speed optimization
2004-01-06 13:35:51 +00:00
igor%mir2.org
332cc13ae5
Move details of parsing/code generation from Context to interpreter/optimizer to allow more pluggable compilation interface.
2004-01-05 13:22:40 +00:00
igor%mir2.org
75d4dec8ea
Cosmetics: removal of tabs left by the previous commit
2003-12-27 21:36:00 +00:00
igor%mir2.org
3cab5b3e26
Decompling parsing from code generation: compiler instances are created only when parsing tree is build.
2003-12-27 21:32:35 +00:00
igor%mir2.org
44e703307d
Initial patch to separate parsing from code generation: changing IRFactory so it can be created in Context.
2003-12-27 09:53:57 +00:00
igor%mir2.org
d4590c48fa
Renaming Kit.badArg() -> Kit.argBug() for consistency with Kit.codeBug()
2003-12-27 09:38:57 +00:00
igor%mir2.org
65aea23579
Moving parsing code from FunctionNode.finishParsing to IRFactory to have better overview of parsing code. The optimizer now calls explicitly OptFunctionNode initialization instead of overriding FunctionNode.finishParsing in OptFunctionNode.
2003-12-26 17:17:21 +00:00
igor%mir2.org
10e91b97ff
Functions to report synatx errors are moved from TokenStream to Interpreter to remove dependancy on TokenStream in NodeTransformer.
2003-12-26 14:01:21 +00:00
igor%mir2.org
32ebb1d38d
Dropping scope argument from Context.compileString/compileReader since it is no longer used as Script instances are scope independent.
...
For compatibility the old form of Context.compileReader is preserved but marked as deprecated.
2003-12-25 22:37:57 +00:00
nboyd%atg.com
8390b6a651
Contribution from earestea@scanpak.com.
2003-12-18 20:55:30 +00:00
nboyd%atg.com
3384c4c1f5
Add Aviva info.
2003-12-18 16:53:32 +00:00
igor%mir2.org
d7a98d84dc
Message about overcapacity
2003-12-09 19:23:25 +00:00
igor%mir2.org
aeafac2fcf
Cosmetics: removal of tabs
2003-12-09 19:22:58 +00:00
igor%mir2.org
6625e3229d
To avoid bad performance when joining array with few small strings, js_join precalculate the resulting string size.
2003-12-09 19:22:11 +00:00
igor%mir2.org
f53203c746
Replacing custom buffer management in replace code with the standard StringBuffer
2003-12-08 17:10:23 +00:00
igor%mir2.org
528efdfe62
Inlining LabelTable into Interpreter and ClassFileWriter: to support jumps spanning over 64K in Interpreter in future LabelTable should be modified significantly and complexity of shared code would not justify it. In addition such inlining actually decrese total code size.
2003-12-08 14:16:53 +00:00
igor%mir2.org
44fae2ad68
Merger ReplaceData and MatchData helper classes into GlobData to reduce code size and rename helper methods to follow SpiderMonkey closely.
2003-12-08 13:24:49 +00:00
igor%mir2.org
aed233007b
Fixing missed cleanup of old values stored in RegExpImpl.parens: now it has type SubString[] and reinitialized after running regexps and see bug 220367.
2003-12-07 21:56:29 +00:00
igor%mir2.org
dcd6522b88
Patch to fix bug 223451 :
...
Check for unbalanced ) and fix for ArrayIndexOutOfBoundsException
Check for unbalanced ')' is done differently then in SM since rhino uses
recursive version of SM code while fix for ArrayIndexOutOfBoundsException is
just a variation of my patch for bug 227705 in SM.
2003-12-07 16:00:38 +00:00
igor%mir2.org
21f15557ab
Fixing bug 225926 : patch from Roger Lawrence
2003-12-07 15:35:40 +00:00
igor%mir2.org
c97a96edca
Fixing bug 225366 : port of SM patch
2003-12-05 23:22:10 +00:00
igor%mir2.org
449bf5eadc
In Object.toSource implementation if property is not valid Java identifier, print it as 'escaped_property' so the property will read as proper Java string.
2003-12-04 15:47:03 +00:00
igor%mir2.org
b1ba2b408e
Fixing bug 225831 : use before_225831_merge to get code before the far reaching fix
2003-12-04 14:41:22 +00:00
igor%mir2.org
2997e9f7ee
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=226045 :
...
(new RegExp).toString/toSource() now gives /(?:)/ instead of // which is comments and does not work with uneval.
2003-11-24 15:51:44 +00:00
igor%mir2.org
46e97e6ab7
Fixing debug printout of icode: CALLSPECIAL prinout was not updated to reflect proper value of only 6 additional bytes for bytecode.
2003-11-17 18:31:55 +00:00
igor%mir2.org
a9bb9a44ac
To mark special properties __proto__ and __parent__ in parse tree use integer ids instead of strings so it is easier to check tree consitency.
2003-11-17 17:39:43 +00:00
igor%mir2.org
cbacb923d3
Finalizing toSource() support: do not put () arround {} for source representation of objects that are part of recursive toSource call.
...
For details, see http://bugzilla.mozilla.org/show_bug.cgi?id=225465
2003-11-17 17:37:21 +00:00
igor%mir2.org
02c0cb7a89
Changing wrapping of caught Java exceptions: now they are constructed with JavaException constructor, have fileName, lineNumber defined to point to script line that executed Java code triggering exception and have javaException property pointing to the wrapped exception object.
...
For details, see http://bugzilla.mozilla.org/show_bug.cgi?id=225817
2003-11-17 11:04:29 +00:00
igor%mir2.org
834efdbe71
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=225817 :
...
Proper support for fileName and lineNumber in Error objects.
2003-11-17 09:45:01 +00:00
igor%mir2.org
7c4e5d8424
Allow for scripts to catch instances of EvaluatorException
2003-11-14 20:38:06 +00:00
igor%mir2.org
8e546b9047
Transform StackOverflow during parsing into runtime exception so script can detect too deep recursion during parsing.
2003-11-14 20:33:43 +00:00
igor%mir2.org
7c0cff6574
Splitting Token.ASSIGN into Token.ASSIGN and Token.ASSIGNOP where the former represents only = while ASSIGNOP is used to denote +=, -= etc. Parse tree for the 2 operations is rather different and split allowed to simplify IRFactory code.
2003-11-14 16:03:31 +00:00
igor%mir2.org
2e75448c13
Implementing uneval/toSource functionality of SpiderMonkey. Foe details, see http://bugzilla.mozilla.org/show_bug.cgi?id=225465 .
2003-11-13 17:15:31 +00:00
igor%mir2.org
7d1e5eda47
Passing to decompiler information about function type so it can use it to customize its output in future.
2003-11-12 15:47:50 +00:00
igor%mir2.org
f2ba87fed2
Changing Decompiler.decompile to take just encoded source, flag argument controlling output format and property table so it would be possible to add more options to decompiler without changing the rest of code.
2003-11-12 12:22:12 +00:00
igor%mir2.org
e734cecce2
Changing return type of NativeFunction.getEncodedSource() to String from Object since the idea of having anything else but String would require changes in API in any case.
2003-11-12 10:23:53 +00:00
igor%mir2.org
b7d4dfaa28
In ClassFileWriter.addPush(double) use DNEG to generate more compact code for -0.0 and -1.0
2003-11-11 20:31:36 +00:00
igor%mir2.org
f260baaf11
Changing just introduced CodeBlock into Callable that define call method with exactly the same signature as Function.call and changing Function to extend Callable.
...
Now Context defines new method "call" that provide optimized version of the following code:
Context cx = Context.enter()
try {
callable.call(cx, scope, thisObj, args);
} finally {
Context.exit();
}
Since Function extends Callable, it can be passed to this method directly thus simplifying ScriptableObject.call method and Java adapter code.
The new interface is used in SecurityController implementation which allows to pass interpreted functions there directly as well removing the need to have intermediate class in Interpreter.
2003-11-11 20:30:08 +00:00
igor%mir2.org
dd1efd374f
Extend constant folding to cover few unary operations
2003-11-11 20:18:34 +00:00
igor%mir2.org
12c1d23434
1. Make sure that -0.0 from parser are treated properly: new constant folding code there may produce it.
...
2. Instead of generating code to call Double constructor use the new method OptRuntime.wrapDouble() that allows to cut amount of produced byte code.
2003-11-11 20:04:38 +00:00
igor%mir2.org
8313023fae
Patch from Dave Russo to wrap arguments array properly: the code has to allocate new Object[] array since Context.newObject needs instances of Object[], not SomeObjectSubclass[], to work properly.
2003-11-10 02:18:11 +00:00
igor%mir2.org
44c6535ad4
Check in Context.newArray(Scriptable scope, Object[] elements) that elements is instance of Object[] and not SomeObjectSubclass[] to expose broken usage of newArray as soon as possible.
2003-11-10 02:14:37 +00:00
igor%mir2.org
dc34ed3dc1
Changes in Security API: using CodeBlock interface instead of reusing Script to represent code that should be executed with different domain.
2003-11-07 22:29:59 +00:00
igor%mir2.org
49ffeac3df
New interface to refer to code executed with a particular context and arguments.
2003-11-07 22:28:22 +00:00
igor%mir2.org
6006898229
1. Removal of very recently introduced hideFromContextListeners: it was a wrong solution to the problem of running scripts under independent Context instances on the same thread.
...
2. Optimization of Context.enter()/Context.exit() when ThreadLocal is available:
Store Context[1], not Context in the variable so Context.enter()/Context.exit() would need to access ThreadVar only once and then update the reference.
2003-11-07 22:24:53 +00:00
igor%mir2.org
5b675f523e
Added setDouble, setString that are used in IRFactory during constant folding
2003-11-07 22:18:49 +00:00
igor%mir2.org
8eb8104ae7
Move all contant folding logic to IRFactory where it simpler to do and possible to reuse tree nodes during folding.
2003-11-07 22:17:54 +00:00
igor%mir2.org
7ed29ee5a5
Do constant folding during parsing since it is cheap to do that at this stage then in optimizer during separated phase so even the interpreter will take advantage of the folding.
2003-11-07 15:58:57 +00:00
igor%mir2.org
d7d991d76f
ClassRepository is removed from list of API classes to allow to replace it in future by direct access to optimizer.
2003-11-04 14:55:58 +00:00
igor%mir2.org
4da147d828
Adjusting examples not to assume that Context.initStandardObjects(ScriptableObject) returns ScriptableObject since that was changed back to Scriptable for compatibility.
2003-11-04 14:54:43 +00:00
igor%mir2.org
4c338669a9
Removal of initStandardObjects(boolean) not to proliferate versions of initStandardObjects: if Rhino would support recursive object sealing, it would not be necessary to call initStandardObjects with sealed flag at all.
2003-11-04 14:52:48 +00:00
igor%mir2.org
6cbd10e41c
JavaDoc @link fixes
2003-11-04 14:49:20 +00:00
igor%mir2.org
da6b0bef31
Return type of Context.initStandardObject(ScriptableObject) is changed back to Scriptable for binary compatibility.
2003-11-03 20:42:32 +00:00
igor%mir2.org
8349b3ea49
Removal of possibility to alter JavaAdapter through an external property as such functionality is redundant and can be emulated with altering JavaAdapter in the scope object after Context.initStandardObjects returns.
2003-11-03 19:58:17 +00:00
igor%mir2.org
7d26c9eb27
Use reflection to access JavaAdapter to allow to use NativeJavaObject with JavaAdapter classes absent.
2003-11-03 19:55:37 +00:00
igor%mir2.org
80c54a080a
When converting function to Java interface and checking for the previous wrapping, do not use key stored in ClassCache.javaAdapterIFGlueMasters as it can be thrown away when caches are emptied and instead construct a key object from the passed class and uniqueness tag.
2003-11-03 18:15:00 +00:00
igor%mir2.org
bef3bd17c6
In NativeJavaClass.constructSpecific use passed scope, not function pointer as scope source so shared system scope with custom top scope and custom wrap factory would work.
2003-11-03 18:06:49 +00:00
igor%mir2.org
2c30bb423d
Added Kit.makeHashKeyFromPair to make combined key for hashtables from 2 objects
2003-11-03 18:04:27 +00:00
igor%mir2.org
ef93931896
Added Context.javaToJS as a convenient way to get JS values from Java objects and Context.emptyArgs so documentation does not need to refer to ScriptRuntime.emptyArgs.
2003-11-02 21:15:14 +00:00
igor%mir2.org
e793b86743
In WrapFactory.wrap use String.valueOf(charValue) instead of new String(new char[] { charValue }) to get string from character.
2003-11-02 21:12:08 +00:00
igor%mir2.org
314f3f5bc8
Deprecation of get/setAttributes forms that take start argument. It was never used to pass anything but this object.
2003-11-01 20:23:28 +00:00
igor%mir2.org
efd61a6673
Since Undefined inherits from Scriptable, not ScriptableObject, it does not need to override get/setAttributes()
2003-11-01 20:21:28 +00:00
igor%mir2.org
674cfbf1bb
Removal of completely unnecessary getSlotToSet as its implementation repeated already unsuccessfully search done by getSlot. The put methods now call addSlot directly.
...
In addition, shared code in has and get to check/update lastAccess cache is moved to common method getNamedSlot.
2003-11-01 19:40:24 +00:00
igor%mir2.org
16dcc44df0
GlobalScope is removed as its introduction had to serious consequences with compatibility and usage. Instead a special purpose class ClassCache is introduces to hold various caches. The class binds itself to an arbitrary object by using new SciptableObject.associateValue method so arbitrary ScriptableObject can be used as a scope without performance penalties.
2003-11-01 15:34:23 +00:00
igor%mir2.org
f78d4de11b
parent and prototype fields are made privatenot to allow to mess with them from subclasses. Althoygh setter and getter can be used still to do that, at least some sanity checks can be added there.
2003-10-30 16:40:43 +00:00
igor%mir2.org
2851be6c6c
Use getPrototype instead of explicit reference to this.prototype
2003-10-30 16:40:42 +00:00
igor%mir2.org
6b0c1e82ad
passing Context instance to NativeJavaMethod.findMethod not to call Context.getContext() id some form of API to override method selection will surface
2003-10-30 16:40:41 +00:00
igor%mir2.org
552126e233
Added readReader
2003-10-30 16:40:40 +00:00
igor%mir2.org
ba5928dd83
Not to call Context.getContext() in TokenStrea/IRFactory, an explicit Context instance is passed to TokenStream constructor
2003-10-30 16:40:39 +00:00
igor%mir2.org
85fcb8e2bc
Use passed scope instead of the object parent scope
2003-10-30 16:39:46 +00:00
igor%mir2.org
a80d67208d
First part of resolving http://bugzilla.mozilla.org/show_bug.cgi?id=223435 :
...
Allow to pass JS function to Java method accepting interface with single method. The function will be called when interface method will be called.
2003-10-28 08:37:30 +00:00
igor%mir2.org
c25c8fc58f
Added getAssociatedValue()/associateValue() to allow to connect arbitrary application-specific object with ScriptableObject.
2003-10-27 19:19:50 +00:00
igor%mir2.org
7514a2a682
Added initHash which would put value into hashtable only if it is first. This is usable to ensure proper synchronization with lazy initialization.
2003-10-27 18:45:39 +00:00
igor%mir2.org
2b2f9d3303
If invoker master throws RuntimeException during creation of invoker, then disable invokerOptimization. It fixes regression when SecurityManager prevents InvokerMaster from creation of class loader.
2003-10-27 18:42:39 +00:00
igor%mir2.org
64affb2798
Added addPush version taking long argument.
2003-10-27 15:47:05 +00:00
igor%mir2.org
a9d220df39
Common logic to create and cache adapter class on demand is moved to the new method getAdapterClass
2003-10-25 11:46:18 +00:00
igor%mir2.org
8b796c2f63
In getApplicationClassLoader cache result of Thread.getContextClassLoader if it coincides with the loader that loaded Context class.
2003-10-25 11:42:34 +00:00
igor%mir2.org
e5b4886f58
Added information on shared scopes
2003-10-23 21:49:23 +00:00
igor%mir2.org
f813a31aa8
Updated to remove NotAFunction exception handler which is not generated any more and was deprecated.
2003-10-23 21:48:45 +00:00
igor%mir2.org
a23733fc96
The class is no longer used.
2003-10-22 08:02:37 +00:00
igor%mir2.org
00c2ae199e
1. Added Context.hideFromContextListeners() which makes invisible for listeners.
...
2. Made sure that ContextListener.contextCreated is called only once. After a resent change to call the method from Context.enter, not from Context constructor the method would be called each time on first enter which broke the debugger.
3. Using new listener utilities from Kit instead of ListenerArray methods that would create a special storage object only if there is more then one listener.
2003-10-22 08:01:46 +00:00
igor%mir2.org
0e4347e841
Added JavaDoc for listener utilities
2003-10-22 07:57:49 +00:00
igor%mir2.org
368bd47f1e
Introduction of org.mozilla.javascript.Kit to contain generic support utilities.
2003-10-21 13:43:22 +00:00
igor%mir2.org
8c9720b2b3
Use getPrototype instead of explicit reference to this.prototype
2003-10-21 13:43:21 +00:00
igor%mir2.org
31bc498af4
Added readUrl method to shell
2003-10-21 09:13:59 +00:00
igor%mir2.org
d6cd0b4569
Reuse results of method.getParameterTypes() and better hash code for javaAdapterSignature.
2003-10-20 14:11:08 +00:00
igor%mir2.org
0e47d37a12
Count syntax error in TokenStream directly instead of going through Context object so it would be possible to use TokenStream without instantiating Context.
2003-10-20 14:06:12 +00:00
igor%mir2.org
36c079aa4c
Cosmetics: indentation fixes
2003-10-20 14:02:53 +00:00
igor%mir2.org
136718b2e1
1. Static hash table in JavaAdapter is replaced by a non-static fields in GlobalScope.
...
2. NativeObject implements just Serializable, not Externalizable interface to simplify serialization.
2003-10-19 09:59:52 +00:00
igor%mir2.org
2d87a134ca
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=222635 :
...
Now activation is always properly removed under the debugger.
2003-10-17 18:24:29 +00:00
igor%mir2.org
d939e7224e
I changed FunctionObject and ScriptableObject to use MemberBox wrapper for native methods, getters and setters that allowed to get following:
...
1. Method serialization code in MemberBox takes care of all serialization so ScriptableObject and FunctionObject does not need anything on its own.
2. Invoker optimization is extended to getters and setters in ScriptableObject.
3. Recovery from IllegalAccessException is extended to all cases of method invocation via reflection.
4. All error wrapping happens in a single class so FunctionObject and ScriptableObject does not need to wary about it.
2003-10-16 14:27:53 +00:00
igor%mir2.org
d4413688b0
Updated ftp links to the download files due ftp server reorganization
2003-10-15 18:13:33 +00:00
igor%mir2.org
4b876ea459
Code to create invoker master instance is placed into Invoker itself since FunctionObject does not need to know which classes stays behind the implementation.
2003-10-13 16:04:20 +00:00
igor%mir2.org
c21ab0c7a0
FunctionObject.convertArg is split into FunctionObject.getTypeTag() and FunctionObject.convertArg version taking that tag for better error reporting and performance since the tag can be cached and an expensive sequence of if and instanceof to check for the type would be replaced by a simple switch.
2003-10-13 16:02:35 +00:00
igor%mir2.org
064afe0a07
Run ContextListener.contextCreated from Context.enter(), not Context constructor. In this way listeners will not be invoked for Context that are never associated with a thread and contextCreated will be more symmetric with Context.contextReleased.
2003-10-13 15:57:18 +00:00
igor%mir2.org
89318be0fd
Inlining code into exceMethod to shrink code size.
2003-10-13 07:30:33 +00:00
igor%mir2.org
d50209987d
In getLength check for version of compiled function, not version from the current context for consistency.
2003-10-13 07:29:43 +00:00
igor%mir2.org
27cae5bd87
In classOrNull and newInstanceOrNull catch and ignore LinkageError since it can be thrown if class links to unknown class.
2003-10-13 07:28:37 +00:00
igor%mir2.org
c23530f968
Added to build.xml the smalljar target to generate smalljs.jar. Its usage is documented in doc/footprint.html.
2003-10-12 13:45:41 +00:00
igor%mir2.org
6419c245b7
More optimizations to shrink code size.
2003-10-12 08:52:24 +00:00
igor%mir2.org
778fff4c99
Inlining of private functions and reorganization to shrink code size to offset resent Rhino size growth
2003-10-11 20:29:32 +00:00
igor%mir2.org
3cc6308b48
Using ScriptRuntime.splitSC to extract packages from semicolon-separated string instead of explicit code.
2003-10-11 20:27:08 +00:00
igor%mir2.org
0a5b59efe7
Added ScriptRuntime.splitSC
2003-10-11 20:24:27 +00:00
igor%mir2.org
bb5d66ddc1
Change JavaScriptException to include source and line information in Throwable.getMessage()
2003-10-11 19:36:25 +00:00
igor%mir2.org
6935fd4558
Optimization: for line counting use offset of line icode of interpreter instead of the line itself. In this way interpreter does not need to read encoded line data on each line marker which can occur quite frequently.
2003-10-11 19:34:29 +00:00
igor%mir2.org
fe83dbd84d
BinaryDigitReader logic is inlined in ScriptRuntime.stringToNumber removing the need in the class.
2003-10-09 17:38:34 +00:00
igor%mir2.org
4f020527c8
Use newly introduced Context.initStandardObjects(), not initStandardObjects(null) in the examples
2003-10-09 07:00:40 +00:00
igor%mir2.org
13d75fc940
Use non-static functions in Shell
2003-10-09 07:00:01 +00:00
igor%mir2.org
2aa3f1b663
Cosmetics: removal of end-of-line junk space
2003-10-09 06:57:12 +00:00
igor%mir2.org
99ad0b5fed
Use newly introduced Context.initStandardObjects(), not initStandardObjects(null) in the documentation
2003-10-09 06:55:49 +00:00
igor%mir2.org
a738d7b424
dist depends on deepclean to prevent erroneous distribution builds when ant fails to detect source code dependencies and misses recompilation.
2003-10-09 06:44:38 +00:00
igor%mir2.org
a95f9c4651
GlobalScope is a part of API now.
2003-10-09 06:42:30 +00:00
igor%mir2.org
0c39c2bd7b
Cosmetics: change argument order for package-private EcmaError constructor to it matchers other cases when a method takes line and column number.
2003-10-09 06:41:28 +00:00
igor%mir2.org
75e6970c55
Added version of Context.initStandardObjects that does not take scope as its argument.
2003-10-09 06:37:25 +00:00
igor%mir2.org
2593ae88cb
Adding getParent() to omg.debug.DebuggableScript to allow to browse whole script function tree from any function.
2003-10-01 15:03:06 +00:00
igor%mir2.org
2ab3731f6d
Cosmetics: expanding tabs
2003-10-01 15:02:09 +00:00
igor%mir2.org
002127495a
Changing ScriptRuntime.initScript to return vois since it does not and should not change scope
2003-10-01 11:55:56 +00:00
igor%mir2.org
c3fc6c32a5
Extending omj.debug.DebuggableScript interface with functions to access nested functions and check if it is top-level script.
2003-10-01 11:55:55 +00:00
igor%mir2.org
f8232c4663
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=220584 :
...
Script() result has no prototype and scope chains
Fix: initialize scope and prototype for Script instances in
NativeScript.jsConstructor
If Script is called as a constructor, it will get the proper parent and
prototype from the generic code to initialize newly constructed objects but if
it is called as a function, then it is the responsibility of the call
implementation to do the job.
2003-09-28 22:52:57 +00:00
igor%mir2.org
b74c0ad822
Fixing http://bugzilla.mozilla.org/show_bug.cgi?id=220362 :
...
Local functions lose scope when called from outside (compiled with dynamic scopes, optlevel >= 0)
Fix: ignore dynamic scope for nested functions and functions declared within
the with statement.
The patch makes optimizer to behave in the same way as the interpreter does
with regard to dynamic scope: it ignores it for nested functions and functions
declared under with statements. Now parser checks for such functions and set
new flag itsIgnoreDynamicScope in FunctionNode. The flag then checked both by
interpreter and optimizer during byte code generation.
The patch also changes slightly interaction between changing dynamic scope flag
and interpreted Script instances. Currently the dynamic flag is read during
script execution but patch changes interpreter to behave exactly as the
optimizer does: the dynamic flag only affect script compilation, changes in its
value does not affect already compiled scripts.
2003-09-28 20:01:27 +00:00
igor%mir2.org
1ef13c34c6
Self-documenting example
2003-09-28 19:49:07 +00:00