Commit Graph

203669 Commits

Author SHA1 Message Date
Andreas Gal
2435c21c31 Read barrier for global object properties (463153, r=brendan). 2009-03-17 10:39:51 -07:00
Andreas Gal
75c5a19e92 Merge. 2009-03-17 10:27:06 -07:00
Andreas Gal
84aa0439ab Use lir->insImmf and emit ins_eq0 centrally in guard() (483365, r=brendan). 2009-03-17 10:26:37 -07:00
Brendan Eich
5a9a0cd0e6 Bug 457065. TM: Assertion failure: !fp->callee || fp->thisp == JSVAL_TO_OBJECT(fp->argv[-1]). r=mrbkap 2009-03-17 10:42:44 -04:00
Igor Bukanov
d7ce39760d bug 369696 - improving object graph serialization. r=brendan 2009-03-17 09:51:38 +01:00
Jim Blandy
a709baa21b 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
ed42bd2750 Backed out changeset 10b781704400 (bug 457065). 2009-03-15 23:45:51 -07:00
Brendan Eich
61f2416149 Fix bogus assertion (457065, r=gal). 2009-03-15 23:09:50 -07:00
Jason Orendorff
ccd4bf81b8 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
Bob Clary
15ef08947f bug 452913 - JavaScript Test by Gary Kwong. 2009-03-14 15:27:08 -07:00
Bob Clary
131d4fa305 bug 460504 - JavaScript Test by Jesse Ruderman. 2009-03-14 15:27:08 -07:00
Bob Clary
a6e74302f3 bug 466747 - JavaScript Test by Jesse Ruderman. 2009-03-14 15:27:08 -07:00
Bob Clary
d5397fc14e bug 476192 - JavaScript Test by Carsten Book, Jesse Ruderman. 2009-03-14 15:27:08 -07:00
Bob Clary
4f4f770a8b bug 479740 - JavaScript Test by Gary Kwong. 2009-03-14 15:27:08 -07:00
Bob Clary
f1f4108ad0 bug 480147 - JavaScript Test by Carsten Book, Jesse Ruderman. 2009-03-14 15:27:08 -07:00
Bob Clary
b8f10d6db0 bug 481800 - JavaScript Test by Gary Kwong. 2009-03-14 15:27:07 -07:00
Bob Clary
d78a095f81 bug 481989 - JavaScript Test by Gary Kwong. 2009-03-14 15:27:07 -07:00
Bob Clary
4fbdcd384d bug 482263 - JavaScript Test by Gary Kwong. 2009-03-14 15:27:07 -07:00
Bob Clary
78122dbd30 bug 482421 - JavaScript Test by Gary Kwong. 2009-03-14 15:27:07 -07:00
Bob Clary
1454b8846d Bug 482783, Bug 481793, Bug 476871, Bug 482349, Bug 482594 - merge js/src/trace-test.js, js/tests/js1_8_1/trace/trace-test.js. 2009-03-14 15:27:07 -07:00
Bob Clary
94d57c97de bug 483438 - remove public failures from source control. 2009-03-14 15:27:07 -07:00
Bob Clary
0719454711 bug 483435 - remove windows wlock.lnk file after hg pull. 2009-03-14 15:27:06 -07:00
Bob Clary
252a73927c bug 483434 - Sisyphus - JavaScript Tests - add support for narcissus. 2009-03-14 15:27:06 -07:00
Bob Clary
e7ff6babda bug 483433 - comment bug number in spidermonkey-n-1.9.2.tests. 2009-03-14 15:27:05 -07:00
Igor Bukanov
256adae7ca bug 362910 - js_GetMethod cleanup. r=brendan 2009-03-14 17:41:47 +01:00
Jim Blandy
90ced44f5a 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
3febbbf2b1 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
fe4cf97707 Back out 480132 fix; static analysis red 2009-03-14 00:57:54 -07:00
Jim Blandy
bbfb18733b 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
85a82cd735 Backout patch for Bug 480132. Debug only nit fix busts static analysis compile. 2009-03-14 02:20:45 -04:00
Jim Blandy
fbbd7c8499 Bug 480132. SpiderMonkey clones too many blocks into the heap. r=igor 2009-03-14 02:09:28 -04:00
Jim Blandy
6a8cf3514b 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
665ac862e0 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
0a18627951 backout merge 2009-03-13 18:37:27 +01:00
Igor Bukanov
903c931f12 Backed out changeset 57de81309176 - bug 437325 - due to mochitest leaks on tinderbox 2009-03-13 18:36:46 +01:00
Igor Bukanov
a6370ce13e triggering tinderbox rebuild for bug 437325 to check if orange there persists 2009-03-13 16:06:23 +01:00
Igor Bukanov
5827df6066 bug 437325 - JSThread is no longer shared between runtimes. r=brendan 2009-03-13 12:36:21 +01:00
Igor Bukanov
6ae6ba83d8 Backed out changeset 4159ebdfe31e to fix some typos in the patch 2009-03-13 12:21:04 +01:00
Igor Bukanov
5046859e37 bug 437325 - JSThread is not shared between runtimes. r=brendan 2009-03-13 12:10:34 +01:00
Robert Sayre
5b0d60710e Merge mozilla-central to tracemonkey. 2009-03-13 02:40:28 -04:00
Mike Connor
0c4416fe01 merging backout stuff 2009-03-13 00:30:53 -04:00
Mike Connor
637602fc0d Backed out changeset e27fe0b767ea to see if it helps unit test failures 2009-03-13 00:25:22 -04:00
Graydon Hoare
cb43b3f6ad Bug 482263 - Avoid re-entering recorder while deep aborting, r=mrbkap. 2009-03-12 20:14:51 -07:00
Robert Sayre
5697ba7870 Merge tracemonkey to mozilla-central. 2009-03-12 21:56:18 -04:00
Mike Connor
9a1abfa143 bug 418687 - [Mac] Firefox Menu Listing does not show Addons, Downloads, Error Console Popup Windows in PB mode, r=gavin 2009-03-12 21:41:57 -04:00
Graydon Hoare
cf9da8ba12 Backout changeset 5e0cc374593c for bug 482800. 2009-03-12 16:15:33 -07:00
Shawn Wilsher
ab6681a101 Bug 481227 - nsAnnoProtocolHandler gets favicon data synchronously from the database
The moz-anno protocol has a special case for favicons that would load them from
the database synchronously.  This patch changes this behavior to load them
asynchronously so we do not block the main thread while they load.
r=mak
r=bz
sr=bz
2009-03-12 17:49:37 -04:00
Andreas Gal
c3488766b0 Don't emit overflow guards if the operation is constant (483030, r=danderson). 2009-03-12 16:51:34 -04:00
Andreas Gal
ea2450c1b1 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
Boris Zbarsky
4b7bc7b23f Back out the crasher test change from CLOSED TREE 2009-03-12 16:20:04 -04:00