Commit Graph

70 Commits

Author SHA1 Message Date
Andreas Gal
ecdd402081 Backed out changeset 61de331861af (bug 558058). 2010-04-08 09:02:34 -07:00
Andreas Gal
0eaa2c4331 No need to lookup parent/proto for iterator objects, and cache the last free one (bug 558058, r=brendan). 2010-04-08 07:53:09 -07:00
Andreas Gal
b0126e4074 Backed out changeset 687d1e4c213e (bug 557914). 2010-04-07 18:34:05 -07:00
Andreas Gal
d0f2401879 Remove gcIteratorTable (557914, r=Waldo). 2010-04-07 17:14:38 -07:00
Nicholas Nethercote
26d8277a75 Bug 413730 - Replace all OBJ_GET_CLASS() macro calls with JSObject::getClass() calls. r=gal. 2010-04-07 16:09:49 -07:00
Nicholas Nethercote
684396fb91 Bug 555631 - Convert STOBJ_* macros to inline functions. r=gal. 2010-03-30 14:42:48 -07:00
Jeff Walden
3e9195e624 Readd jsiter.cpp, jsscript.cpp, jsxml.cpp changes for bug 548702. 2010-03-29 11:36:33 -07:00
Jeff Walden
95422c65a3 Backed out changeset e7065853ef79; I'll be repushing this incrementally, attempting to find the precise place where things go bad, in the near future. Happy days are here again! :-\ 2010-03-26 18:01:54 -07:00
Jeff Walden
106fbd8085 Bug 548702 - Temporary value-rooting scheme should be C++- and RAII-based, not macro-based. r=igor
--HG--
extra : rebase_source : c7bb34662dbd70df49d40880227139537c60356e
2010-01-11 11:52:21 -06:00
Igor Bukanov
9d1cbd468c bug 549010 - folowup to replace PROTO access macros with the inlne function 2010-03-04 23:52:52 -08:00
Mike Moening
0373a2437d bug 549010 - fixing and silencing MSVC warnings. r=brendan,igor 2010-03-04 20:44:09 -08:00
Nicholas Nethercote
c8a754a27d Bug 545274 - nanojit: start adding alias info to loads/stores/calls (TM-specific part). r=jseward. 2010-03-02 13:47:17 +11:00
Igor Bukanov
debaa592f7 bug 545529 - caching Class.prototype lookups. r=brendan 2010-02-19 20:44:23 +03:00
Luke Wagner
7714144859 Bug 535656 - remove JSStackFrame::dormantNext and varobj (r=waldo) 2010-01-29 18:25:16 -08:00
Luke Wagner
2645ecd2da Bug 541452 - put jstracer.cpp in namespace js (r=jorendorff) 2010-01-22 14:49:18 -08:00
Jason Orendorff
b46379b4f6 Bug 530879 - Generators get incorrect arguments.length. Discovered by Donny Viszneki. r=brendan. 2009-12-03 16:12:09 -06:00
Igor Bukanov
1e96fce476 bug 517795 - followup to fix the issue 512046. 2009-09-21 12:49:12 +04:00
Igor Bukanov
8da9fad53a bug 512046 - avoid maintaing a per-runtime iterator list. r=brendan 2009-09-19 13:40:43 +04:00
Luke Wagner
854c0294df Bug 412571 - replace thisp with thisv (r=brendan,mrbkap) 2009-09-11 19:07:00 -07:00
Brendan Eich
016b0f207a Bug 514981 - JSStackFrame::sharp{Array,Depth} should be locals allocated due to #n[#=] usage (r=igor). 2009-09-09 20:21:15 -07:00
Brendan Eich
cce4dce512 Join lambdas assigned or initialized as methods to the compiler-created function object if we can, with a read barrier to clone on method value extractions other than call expressions (471214, r=jorendorff). 2009-09-03 14:41:19 -07:00
Brendan Eich
b063d31520 Back out changeset aff171a8c4f0 (bug 471214). 2009-08-26 09:34:41 -07:00
Brendan Eich
bd8f55c0ad Join function objects where possible (471214, r=igor). 2009-08-25 23:42:37 -07:00
David Anderson
e322e64001 Removed JSStackFrame::xmlNamespace (bug 512389, r=brendan). 2009-08-25 12:07:45 -07:00
David Anderson
744033066f Removed JSStackFrame::callee (bug 512029, r=brendan). 2009-08-24 17:09:44 -07:00
Jason Orendorff
6772d63b3d Bug 511836 - Assertion failure: JSVAL_IS_INT(v), at ../jsapi.h. Iterator.prototype not initialized properly. r=mrbkap.
--HG--
extra : rebase_source : 50975b84c4b399a96d24eaa1884308c6a5b4d586
2009-08-21 11:58:34 -05:00
Jason Orendorff
9dc4a54a5d Bug 498488 - Change some JSObject macros to methods. r=Waldo. 2009-08-11 15:05:44 -05:00
Igor Bukanov
ef90f6f522 bug 493457 - uniform access to private slots. r=mrbkap, sr=jwalden 2009-08-04 23:06:55 +02:00
Robert Sayre
99a0962393 Backed out changeset e09130fcb013 2009-07-28 18:51:35 -04:00
Brendan Eich
8d27b07ec5 Bug 471214 - Join function objects transparently, clone via read barrier to satisfy de-facto standard (r=igor). 2009-07-28 13:20:14 -07:00
Andreas Gal
e7f2714ea1 When finalizing, deallocate memory in a separate thread (505612, r=bent,brendan,waldo). 2009-07-27 21:10:12 -07:00
Robert Sayre
9e0ade7287 Backed out changeset b3d459d23452 2009-07-24 00:01:37 -04:00
Andreas Gal
eb711234db Use a background thread to free() memory while sweeping (505612, r=brendan,bent). 2009-07-23 15:12:34 -07:00
Igor Bukanov
9534c3d315 bug 504033 - avoiding calling JSFinalizeStub. r=brendan 2009-07-22 18:23:21 +02:00
Andreas Gal
1af8dfb112 Avoid integer division in NewGCThing path (503157, r=jwalden). 2009-07-14 17:06:09 -07:00
David Mandelin
975f74c278 Bug 453730: trace JSOP_ARGUMENTS, r=gal 2009-07-08 11:16:41 -07:00
Jason Orendorff
52fe5a97ba Bug 497618 - Change JSString macros to methods. r=Waldo. 2009-06-10 20:29:44 -05:00
Andreas Gal
736876c48b Follow-up fix for 479888. 2009-05-05 17:49:29 -07:00
nnethercote@mozilla.com
1f7e5c0ef5 kill builtins.tbl (479888, r=jorendorff). 2009-05-05 17:36:26 -07:00
igor
48c3925a9a js_SetPropertyHelper does not null *entryp for read-only properties (489171, r=gal,brendan). 2009-04-20 17:00:59 -07:00
Brendan Eich
962b187fe5 upvar2, aka the big one take 2 (452598, r=mrbkap). 2009-04-05 21:17:22 -07:00
Andreas Gal
706120c0fb Backed out changeset 972c44aa9d1f (bug 452598). 2009-04-04 10:14:52 -07:00
Brendan Eich
5f4d9ff474 upvar2, aka the big one (452598, r=mrbkap). 2009-04-04 10:05:49 +01:00
Jim Blandy
875aee5e88 Bug 479258: Include "jsstdint.h" for <stdint.h> type use within SpiderMonkey. r=brendan 2009-03-18 11:38:16 -07: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
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