Commit Graph

123 Commits

Author SHA1 Message Date
Jim Blandy
d72dff994b Back out 480132 fix; static analysis red 2009-03-14 00:57:54 -07:00
Jim Blandy
4778b96a85 Bug 480132: Clone lexical blocks only when needed. r=igor
Terminology:

A "script block" is an object of class Block allocated by the byte
compiler and associated with a script.  Script blocks are never
modified, and may be used as a prototype for a "closure block":

A "closure block" is an object of class Block that holds variables
that have been closed over (although we actually leave the variables
on the stack until we leave their dynamic scope).  A closure block is
a clone of a script block (its prototype is a script block).

Adjust the meanings of fp->blockChain and fp->scopeChain:

  fp->blockChain is always the innermost script block in whose static
  scope we're executing.

  fp->scopeChain is the current scope chain, including 'call' objects
  and closure blocks for those function calls and blocks in whose
  static scope we are currently executing, and 'with' objects for with
  statements; the chain is typically terminated by a global object.
  However, as an optimization, the young end of the chain omits block
  objects we have not yet needed to clone.

Closures need fully reified scope chains, so have js_GetScopeChain
reify any closure blocks missing from the young end of fp->scopeChain
by cloning script blocks as needed from fp->blockChain.  Thus, if we
never actually close over a particular block, we never place a closure
block for it on fp->scopeChain.

Have JSOP_ENTERBLOCK and JSOP_LEAVEBLOCK always keep fp->blockChain
current.  When JSOP_LEAVEBLOCK pops a block from fp->blockChain that
has been cloned on fp->scopeChain, pop fp->scopeChain as well.

Remove the JSFRAME_POP_BLOCKS flag, as it is no longer needed.

Ensure that the JIT won't have to create closure blocks or call
js_PutBlockObject; it can't handle those things yet.  Note our current
script block when we begin recording.  Abort recording if we leave
that block; we can't tell in advance whether it will need to be "put"
in future trace invocations.  Abort recording if we call
js_GetScopeChain while in the static scope of lexical blocks.  Remove
JIT tests based on JSFRAME_POP_BLOCKS.

Verify that generators capture the correct value for blockChain.

Add a constructor to JSAutoTempValueRooter for rooting JSObject
pointers.
2009-03-13 23:43:32 -07:00
Robert Sayre
8e061e35da Backout patch for Bug 480132. Debug only nit fix busts static analysis compile. 2009-03-14 02:20:45 -04:00
Jim Blandy
40e8a7d560 Bug 480132. SpiderMonkey clones too many blocks into the heap. r=igor 2009-03-14 02:09:28 -04:00
Igor Bukanov
4b95050fe2 Backed out changeset 57de81309176 - bug 437325 - due to mochitest leaks on tinderbox 2009-03-13 18:36:46 +01:00
Igor Bukanov
3de011b9cd bug 437325 - JSThread is no longer shared between runtimes. r=brendan 2009-03-13 12:36:21 +01:00
Igor Bukanov
75640ecce1 Backed out changeset 4159ebdfe31e to fix some typos in the patch 2009-03-13 12:21:04 +01:00
Igor Bukanov
8eeedd9647 bug 437325 - JSThread is not shared between runtimes. r=brendan 2009-03-13 12:10:34 +01:00
Jason Orendorff
37f2985bdf Bug 476177 - TM: cx->stackPool must not be accessed on trace. r=brendan.
--HG--
extra : rebase_source : 746d61b54aa38cbe18fe31bce4efcbbad4629678
2009-01-30 17:40:05 -06:00
Boris Zbarsky
dc570eacdd Bug 466935. Make JS_JIT_SPEW non-DEBUG build again. r=dmandelin,brendan 2008-12-11 13:55:04 -05:00
Jason Orendorff
b7fb9bc849 Bug 460865 - Read barrier for cx->fp. r=mrbkap, r=dmandelin.
--HG--
extra : rebase_source : 19963188b2f9f96336ce6ca28dbaefccf3a639b7
2008-12-09 10:38:32 -06:00
Igor Bukanov
b31f8300ea bug 452913 - fixing sprop management, r=brendan, a.9.1b2=sayer 2008-11-17 13:59:39 +01:00
Brendan Eich
bab1f697ee Bug 464978 - TM: hang with "[] + null" (r=danderson). 2008-11-15 10:33:50 -08:00
Brendan Eich
cb47c4cf08 Bug 456511 - (imacros) TM: Make conversion work on arbitrary JSObjects (r=gal). 2008-11-13 00:30:20 -08:00
Andreas Gal
074d900a57 Backed out changeset a40f2117bcc0 2008-11-12 17:39:48 -08:00
Brendan
0ca607d76b Add imacros to support conversion of arbitrary JSObjects (456511, r=gal). 2008-11-12 16:55:45 -08:00
Andreas Gal
708f08ca9c Properly handle side exits in scripted constructors (originally mrbkap, r=brendan, 453462). 2008-09-18 14:13:37 -07:00
Brendan Eich
94b10f6170 Avoid needless prototype-shape purges (454035, r=igor). 2008-09-09 11:24:03 -07:00
Igor Bukanov
23c5063560 bug 446386 - eliminating compiler pseudo-frames. r=brendan 2008-09-08 11:47:12 +02:00
Brendan Eich
9cd8e5a539 Upvar, v0.1 (limited to looking up from eval in a function, to the function's args and vars). 2008-08-21 03:47:33 -07:00
Brendan Eich
eaf4254c15 Merge from mozilla-central. 2008-08-08 18:58:04 -07:00
Brendan Eich
f644a96ebb Better idea for avoiding level-1 property cache collisions. 2008-08-08 14:28:10 -07:00
Brendan Eich
4e0e30452f Improve first-level property cache hash function to avoid collisions in linear sequence of setprops. 2008-08-08 14:12:55 -07:00
Graydon Hoare
aaf41f8ee5 Bug 447713, remove the import/export functionality from spidermonkey, r=brendan 2008-08-06 17:34:58 -07:00
Igor Bukanov
dcdf0df942 bug 445391 - re-enable OJI for Firefox 3.1, the configure changes is from jst, r=jst,crowder, sr=benjamin 2008-07-29 19:53:03 +02:00
Igor Bukanov
fc68712767 bug 441686 - eliminating JSStackFrame.(nvars|vars). r=brendan 2008-07-20 22:13:17 +02:00
Igor Bukanov
708422ea13 [Bug 433337] jsinterp.cpp source no longer split between 2 compilation units when compiling on Windows. r=brendan 2008-07-17 10:57:34 +02:00
Igor Bukanov
d24b2f9846 [Bug 432881] SM: JSVAL_VOID as a pseudo-boolean. r=brendan 2008-06-25 11:43:02 +02:00
Igor Bukanov
c6b43c7494 [Bug 433382] More efficient interpreter switch when computed goto is not available. r=brendan 2008-06-20 11:55:49 +02:00
Igor Bukanov
fed7ad6a4a Backed out changeset 97977f224aff due to build breakage 2008-06-20 11:46:36 +02:00
Igor Bukanov
ac0a058f20 [Bug 433382] More efficient interpreter switch when computed goto
is not available. r=brendan
2008-06-20 10:06:45 +02:00
Igor Bukanov
26b618a50f Backed out changeset 21527193c49b: the patch has used CSRCS, not CPPSRCS. 2008-06-20 09:45:29 +02:00
Igor Bukanov
feb0f05335 [Bug 433382] More efficient interpreter switch when computed goto is not available. r=brendan 2008-06-20 09:36:56 +02:00
igor@mir2.org
e34384934d [Bug 429739] proper handling of __noSuchMethod__ when it is invoked as constructor. r=brendan a1.9=dsicore 2008-04-29 14:17:11 -07:00
brendan@mozilla.org
b5b5553389 Fix hang when GetPropertyTreeChild calls js_GenerateShape calls js_GC (424636, r=igor, a=beltzner). 2008-04-28 23:19:42 -07:00
igor@mir2.org
e573263407 [Bug 430871] Eliminating unused JSINVOKE_INTERNAL and JSFRAME_INTERNAL. r=brendan a1.9=dsicore 2008-04-27 23:50:37 -07:00
igor@mir2.org
c0d5c51190 [bug 423874] backing out as a simpler patch would do the job with less code. 2008-03-29 03:34:29 -07:00
igor@mir2.org
eaa513c2f5 bug=423874 r=brendan a1.9b5=dsicore Allocating native functions together with JSObject 2008-03-21 01:19:23 -07:00
brendan@mozilla.org
8c8498de43 Fix for JSCLASS_NEW_RESOLVE-related bug in js_FillPropertyCache, found by Mike Moening <MikeM@RetekSolutions.com> (418989, r=shaver, a=beltzner). 2008-03-19 17:44:59 -07:00
igor@mir2.org
8e2eeba5aa bug=421274 r=brendan a=beltzner Eliminating SAVE_SP_AND_PC() macro 2008-03-17 01:58:28 -07:00
igor@mir2.org
9e25b95889 bug 421274: backing out again due to crashes on 64 bit Linux. 2008-03-13 11:03:02 -07:00
igor@mir2.org
8205bdd921 bug=421274 r=brendan a1.9=mtschrep eliminating SAVE_SP_AND_PC and friends from the interpreter loop 2008-03-12 23:48:23 -07:00
igor@mir2.org
d75b521da0 backing out bug 421274 2008-03-12 23:23:09 -07:00
igor@mir2.org
e8279e4617 bug=421274 r=brendan a1.9=mtschrep eliminating SAVE_SP_AND_PC and friends from the interpreter loop 2008-03-12 22:52:52 -07:00
igor@mir2.org
8ad00a0798 bug=421266 r=brendan a1.9=beltzner js_Interpret now takes just single cx argument. 2008-03-06 14:47:46 -08:00
igor@mir2.org
28f24f8321 bug=418641 r=brendan a1.9=dsicore Avoiding code bloat on slow paths in the interpreter. 2008-03-05 12:26:06 -08:00
igor@mir2.org
03f433c720 bug=420399 r=brendan a1.9=blocking1.9 eliminating the pc stack in the interpreter 2008-03-04 15:30:58 -08:00
igor@mir2.org
d9417500fc Bug 419969: the interpreter loop belongs to its own compilation unit. r,a1.9=brendan 2008-03-04 04:52:43 -08:00
brendan@mozilla.org
4f4cb9e28b Unregress perf in wake of 418069 (420426, r=mrbkap, a=mconnor). 2008-03-01 14:15:21 -08:00
brendan@mozilla.org
da4792dd55 Optimize object initialisers via property cache; remove JSOP_SET{NAME,PROP} cache hazards (129496, r=shaver). 2008-02-26 17:59:36 -08:00
brendan@mozilla.org
a76138b7d2 Beware non-native objects along scope and proto chains in property cache hit testing (418540, r=shaver). 2008-02-20 21:51:12 -08:00
brendan@mozilla.org
f337b63afc Guard property cache tests with native ops or obj guards (417981, r=shaver). 2008-02-18 11:32:01 -08:00
brendan@mozilla.org
fc623a24eb Optimize ComputeGlobalThis (395993, r=mrbkap). 2008-02-15 18:46:46 -08:00
igor@mir2.org
f86e5a86d2 Bug 416601: property cache is properly disabled under with statements with generators. r=brendan a1.9=blocking1.9 2008-02-15 03:38:40 -08:00
igor@mir2.org
ac22737548 Bug 309894: non-recursive XML-filtering implementation. r,a1.9=brendan 2008-02-13 06:32:31 -08:00
jag@tty.nl
e76dc17580 Bug 416685: jsinterp.c warning: empty body in an if-statement (times 4). r=/a=brendan 2008-02-11 02:55:59 -08:00
brendan@mozilla.org
23c36b84f4 Return of the property cache (365851, r=shaver). 2008-02-07 15:18:45 -08:00
mrbkap@gmail.com
ace379fdfe Give the JS engine some knowledge of wrappers so that they can compare equal and be noticed when they take part in __proto__ cycles. bug 397855, r=brendan sr=dveditz 2007-12-20 14:59:44 -08:00
brendan@mozilla.org
7d8fcab4dc Remove DUMP_CALL_TABLE (preliminary patch for 365851, r=igor). 2007-12-14 13:36:02 -08:00
igor@mir2.org
22c2a33a75 Bug 403878: No compiler pseudo-frames when compiling functions. r,a=brendan 2007-11-29 06:49:42 -08:00
igor@mir2.org
a4162380a8 Bug 398609: simpler handling of hidden properties, r,a=brendan 2007-11-19 09:15:45 -08:00
igor@mir2.org
7d6e57125d Bug 398609: backing out due to test failures. 2007-11-18 16:58:46 -08:00
igor@mir2.org
64dc5b1984 Bug 398609: cleanup of hidden properties support. r,a=brendan 2007-11-18 16:36:49 -08:00
igor@mir2.org
837c046912 Bug 398609: Backing out due to mochi test failure. 2007-11-13 07:47:28 -08:00
igor@mir2.org
6c43fd5702 Bug 398609: cleanup of hidden properties. r,a=brendan 2007-11-13 06:56:18 -08:00
igor@mir2.org
cc6784b030 Bug 394551: no JS frames for fast native calls. r=brendan 2007-09-18 00:34:54 -07:00
igor@mir2.org
aacdc13f0f Bug 394551: taking out the last patch as broke Windows build. 2007-09-17 12:28:14 -07:00
igor@mir2.org
065a93dd1c Bug 394551: no JS frames for fast native calls. r=brendan 2007-09-17 12:08:46 -07:00
brendan@mozilla.org
ba3ad2ce7a Fast (frame-less) native call optimizations (385393, r=igor). 2007-08-01 21:33:52 -07:00
brendan@mozilla.org
18e7692117 Backing out, see bug 389122 and orange or red tinderboxes. 2007-07-21 16:21:20 -07:00
brendan@mozilla.org
5f038f69ae Fast natives and related optimizations (385393, r=igor). 2007-07-21 14:39:42 -07:00
igor@mir2.org
1aa40de49d Bug 384151: refactoring boxing of primitive values, r=brendan 2007-06-14 00:07:01 -07:00
hg@mozilla.com
465265d0d4 Free the (distributed) Lizard! Automatic merge from CVS: Module mozilla: tag HG_REPO_INITIAL_IMPORT at 22 Mar 2007 10:30 PDT, 2007-03-22 10:30:00 -07:00