Commit Graph

4119 Commits

Author SHA1 Message Date
Robert Sayre
a6e93ac17a Merge tracemonkey to mozilla-central. 2009-03-16 18:44:07 -04:00
Jim Blandy
debdb32ef3 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.  Leave trace 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-16 09:55:06 -07:00
Andreas Gal
c5b3eb193e Backed out changeset 10b781704400 (bug 457065). 2009-03-15 23:45:51 -07:00
Brendan Eich
719048c202 Fix bogus assertion (457065, r=gal). 2009-03-15 23:09:50 -07:00
Robert Sayre
ca09c1a74b Merge mozilla-central to tracemonkey. 2009-03-15 12:23:57 -04:00
Doug Turner
ff0bc343ea Bug 478911. better geolocation mochitests. r=ctalbert/jmaher 2009-03-14 21:03:21 -07:00
Ben Turner
2a8109bd42 Bug 480185 - 'XPConnect shouldn't poke JS objects manually, should use JSAPI.' patch by Blake Kaplan <mrbkap@gmail.com> and myself. r+sr=jst. 2009-03-14 20:45:20 -07:00
Ben Turner
eed6c83bb8 Bug 482306 - "Several deadlocks related to nested requests and nsJSContext::CompileEventHandler". r+sr=mrbkap, a=blocking1.9.1+. 2009-03-14 20:42:50 -07:00
Robert Sayre
9c46baf11f Merge tracemonkey to mozilla-central. 2009-03-13 20:07:22 -04:00
Jeff Walden
55ec4e74cd I hate config/*. 2009-03-13 14:45:45 -07:00
Igor Bukanov
8021720a68 backout merge 2009-03-13 18:37:27 +01: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
a9dd7cc7ab triggering tinderbox rebuild for bug 437325 to check if orange there persists 2009-03-13 16:06:23 +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
Robert Sayre
d1d5f4493f Merge mozilla-central to tracemonkey. 2009-03-13 02:40:28 -04:00
Graydon Hoare
b65177a23f Bug 482263 - Avoid re-entering recorder while deep aborting, r=mrbkap. 2009-03-12 20:14:51 -07:00
Robert Sayre
ef566ce8da Merge tracemonkey to mozilla-central. 2009-03-12 21:56:18 -04:00
Graydon Hoare
2b47f671ac Backout changeset 5e0cc374593c for bug 482800. 2009-03-12 16:15:33 -07:00
Andreas Gal
d3533c3025 Don't emit overflow guards if the operation is constant (483030, r=danderson). 2009-03-12 16:51:34 -04:00
Andreas Gal
7118a3b6b6 Make sure we don't walk out of a thin loop even if the loop condition is constant (482800, r=danderson). 2009-03-12 16:49:29 -04:00
Igor Bukanov
16863b8913 triggering rebuild to check if bug 482038 really caused tinderbox failures 2009-03-12 15:04:00 +01:00
Ted Mielczarek
efd484eecc bug 482733 - nsinstall.py should support copying directories recursively. r=pike (fix the js/src copy as well) 2009-03-12 09:42:23 -04:00
Jason Orendorff
befcabe89e Bug 481444 - TM: objectHook is called on trace, via js_NewObject [@ LeaveTree] or [@ js_SynthesizeFrame]. r=gal.
Thanks Daniel!
2009-03-12 08:34:57 -05:00
Igor Bukanov
20e6be9c80 bug 362910 - js_GetMethod cleanup. r=brendan 2009-03-14 17:41:47 +01:00
Jim Blandy
74847db9cd Back out 480132: orange on Linux (http://tinderbox.mozilla.org/showlog.cgi?log=TraceMonkey/1237017748.1237029269.2403.gz&fulltext=1) 2009-03-14 08:19:58 -07:00
Jim Blandy
bed3611385 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.  Leave trace 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-14 00:58:27 -07:00
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
Jim Blandy
249eed4eb3 Back out fix for 481444; orange on Linux TraceMonkey unit test: http://tinderbox.mozilla.org/showlog.cgi?log=TraceMonkey/1236978913.1236990062.26824.gz&fulltext=1 2009-03-13 18:07:25 -07:00
Jason Orendorff
f7ad0e9e06 Bug 481444 - TM: objectHook is called on trace, via js_NewObject [@ LeaveTree] or [@ js_SynthesizeFrame]. r=gal.
Thanks Daniel!
2009-03-12 08:34:57 -05:00
Igor Bukanov
3e7114aad2 bug 482038 - removal of JSRuntime.gcPoke checks from js_NewGCThing. r=brendan 2009-03-12 10:15:55 +01:00
Robert Sayre
598602fe5d Bug 482899 - Don't call the reviver function when the JSON parse fails. r=jwalden 2009-03-12 03:27:15 -04:00
Robert Sayre
17397679cd Merge tracemonkey to mozilla-central. 2009-03-12 02:31:48 -04:00
Ginn Chen
bbf004a772 Bug 480144 Fix Solaris bustage 2009-03-12 14:24:04 +08:00
Robert Sayre
9e67170bdc Do things in a different order. Bug 482861. r=jwalden 2009-03-12 02:18:59 -04:00
Jeff Walden
2de1fda1f3 Bug 482783 - TM: Crash [@ js_ConcatStrings] due to forgetting about tagbits. r=brendan 2009-03-11 18:52:03 -07:00
Blake Kaplan
32bd109aca Bug 482830 - Use a principal when compiling -e scripts. r+sr=jst 2009-03-11 16:13:01 -07:00
Robert Sayre
60379a7a19 Merge tracemonkey to mozilla-central. 2009-03-11 17:42:39 -04:00
Ted Mielczarek
9aada2da48 bug 482084 - rewrite xpcshell test harness. r=bsmedberg 2009-03-11 11:56:58 -04:00
Ted Mielczarek
d0e46c0bc4 bug 480144 - fix spidermonkey to compile on mingw. r=bsmedberg,jorendorff 2009-03-11 11:56:58 -04:00
Jason Orendorff
3aee538e7f Bug 480147 - TM: "Assertion failure: cx->bailExit" with string.replace and type instability. r=gal. 2009-03-11 10:52:18 -05:00
Jason Orendorff
dbb0b6a149 Bug 481218 - js_IsCallable returns false for functions. r=brendan.
--HG--
extra : rebase_source : 52d3cba36f3fa1301223cb579bd75ec7bbd5d130
2009-03-11 10:46:45 -05:00
Igor Bukanov
94d4ac0da5 bug 478336 - fixing rt->state/rt->contextList mutation race. r=brendan 2009-03-11 11:54:49 +01:00
Ginn Chen
1233d3dcd9 Bug 480967 Don't leak MSYS paths into makefiles, fix Solaris bustage r=bsmedberg 2009-03-11 16:51:47 +08:00
Robert Sayre
8f77fb9b9e Merge. 2009-03-11 04:19:20 -04:00
Brendan Eich
9eb422d7f2 Bug 482594 - TM: followup work for support String(v) -- String constructor called as a converter (r=jwalden). 2009-03-10 16:32:16 -07:00