Commit Graph

5586 Commits

Author SHA1 Message Date
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
brendan%mozilla.org
c98a6b4d3f - Eliminate WellTerminated by coalescing its call sites to the end of Statement and inlining it there. This adds a tiny bit of overhead in some cases, due to
the ON_CURRENT_LINE check, which can be proven redundant for cases such as the
debugger statement.  But the cost should be in the noise, and code size wins.

- Remove bogus lastExprType argument to WellTerminated and eliminate its only
use, in parsing an expression statement.  Also eliminate the WellTerminated
check after a function "statement" (which could be a top-level declaration, or
an instance of our function statement extension, e.g. 'if (x) function f(){}',
neither of which should require semicolon termination).

The intent of the lastExprType parameter, the WellTerminated call from the
TOK_FUNCTION case, the call from the default expression-statement case, and the
#if JS_HAS_LEXICAL_CLOSURE code in WellTerminated appears to have been to allow
'function f(){} function g(){}' for JS versions < 1.2, and to forbid it as an
error otherwise, requiring a semicolon in between the function declarations.
But in fact ECMA and good sense should allow as many function declarations on
a line as you please, optionally followed by other statements, and without
requiring semicolons after function declarations.

Since this change removes an error case, I don't expect any incompatibility
bugs to be reported.

- Coalescing/inlining WellTerminated meant removing its call from MatchLabel,
called by the break and continue cases in Statement.

- The debugger keyword could be used without a semicolon terminator to make it
a statement, as in 'debugger 1 + 2;', parsed as a debugger statement followed
by an expression statement -- which seems quite wrong (ECMA reserves debugger
but does not specify its usage).

This bug arose due to the early return at the end of the TOK_DEBUGGER case.
Although that case called WellTerminated, because it returned rather than broke
from the main switch, it failed to match an explicit semicolon terminator (if
present), making 'debugger; 1 + 2;' parse as three statements, with the first
semicolon becoming an empty statement (contrary to ECMA automatic semicolon
insertion rules).
2004-01-05 07:47:49 +00:00
brendan%mozilla.org
5a06114b4c Use macroized version of dbaron's fix for >65535 line script parsing bug (229006, r=shaver). 2004-01-03 18:19:51 +00:00
brendan%mozilla.org
cecef07869 Fix SCRIPT_FIND_CATCH_START to cope with exceptions thrown from prolog bytecodes (206199, r=shaver, a=asa). 2003-12-31 02:53:02 +00:00
technutz%netscape.net
ad1ae94ec1 MinGW bustage fix from bug 213910's landing. Patch by bsmedberg@covad.net. r=dbaron, sr=brendan 2003-12-30 17:53:17 +00:00
brendan%mozilla.org
5946f557e5 Don't JS_ReportOutOfMemory while holding script_filename_table_lock (r=self). 2003-12-30 07:54:09 +00:00
bsmedberg%covad.net
b3ccee7f7d Bug 213910 - Implement Components.interfacesByID r=dbradley sr=jst 2003-12-28 04:37:57 +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
pschwartau%netscape.com
0f5c835578 Updating README to reflect addition of collect.cgi to mozilla/js/perf/. 2003-12-23 22:46:04 +00:00
pschwartau%netscape.com
04b20eb9ef Initial add. This is a CGI script that jsPerformance.pl can log results to. 2003-12-23 22:44:51 +00:00
brendan%mozilla.org
54f33f94ec Disable bogus error check for { followed by a digit (228087, r=shaver). 2003-12-23 17:05:24 +00:00
brendan%mozilla.org
7c6f47247d Footprint wins: disable export/import from js1.5, fuse common code before a given jump target in js_Invoke, avoid unnecessary subtraction when enforcing ARGC_LIMIT. Also, clean up comment nits. 2003-12-22 06:15:14 +00:00
brendan%mozilla.org
f7d4b5b5f2 Add an assertion to catch an embedding API usage error mentioned recently on m.jseng. 2003-12-22 06:13:07 +00:00
brendan%mozilla.org
f5b40a54ca Add JS_GetObjectId, void cx->exception in JS_ClearPendingException (127418, r=shaver). 2003-12-22 06:10:51 +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
pschwartau%netscape.com
3b17289926 Adding more cases 2003-12-16 03:13:04 +00:00
pschwartau%netscape.com
42aa9da4c0 Correcting an error. 2003-12-13 23:52:12 +00:00
pschwartau%netscape.com
20d7a3ea4f Correcting an error. 2003-12-13 23:41:09 +00:00
pschwartau%netscape.com
bf6feda3d0 Adding more cases. 2003-12-13 23:32:10 +00:00
pschwartau%netscape.com
c8302041c3 Correcting a typo. 2003-12-13 19:37:43 +00:00
pschwartau%netscape.com
36aebce7c8 Text README for jsPerformance.pl. 2003-12-13 19:35:14 +00:00
pschwartau%netscape.com
5399d76814 Trying to correct initial checkin via admin -kb (these are binary files and should have been added to CVS via add -kb). 2003-12-13 19:25:53 +00:00
pschwartau%netscape.com
a3b46f9010 Initial add. Regression testcase for bug 228087. 2003-12-12 23:29:16 +00:00
brendan%mozilla.org
f583fb8580 Followup patch to cope with lightweight function calls (direct or via natives) to exec (227432, r=shaver, a=dbaron). 2003-12-10 00:24:13 +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
pschwartau%netscape.com
2efd5657a3 Correcting format from .bmp to .jpg 2003-12-08 23:25:47 +00:00
pschwartau%netscape.com
d25ed5cb53 Changing from folder.gif to folder.jpg. 2003-12-08 22:25:20 +00:00
pschwartau%netscape.com
50e88bdbc5 Image needed for README-jsPerformance.html. 2003-12-08 22:23:23 +00:00
pschwartau%netscape.com
e088611b80 Deleting folder.gif in favor of folder.jpg 2003-12-08 22:19:08 +00:00
pschwartau%netscape.com
2ecdedf667 Initial add. JS shell performance test by mazielobo@netscape.com. 2003-12-08 18:59:19 +00:00
pschwartau%netscape.com
946614fe24 Initial add. Performance-test utility functions by mazielobo@netscape.com. 2003-12-08 18:51:41 +00:00
pschwartau%netscape.com
8f6fc15b50 Images needed for README-jsPerformance.html. 2003-12-08 18:46:10 +00:00
pschwartau%netscape.com
998003cffd Adaptation by mazielobo@netscape.com of JS Engine test driver (jsDriver.pl by rginda@netscape.com), to run performance tests. 2003-12-08 18:44:55 +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