Commit Graph

298 Commits

Author SHA1 Message Date
David Mandelin
f242431382 Bug 569766: Make tracing work with fat values 2010-06-10 17:20:26 -07:00
Jason Orendorff
c1a1fb9be1 Bug 563099 - Compartments and wrappers API. r=gal.
--HG--
extra : rebase_source : cb34d0d0fc689fc6401d67e7f719344cd8e27655
2010-06-23 16:35:10 -05:00
Jason Orendorff
c7000f4f86 Bug 574013 - Change JSObjectOps::call to compute this even later in certain cases. (This will also facilitate implementint ES5 primitive this.) r=gal.
--HG--
extra : rebase_source : 2f588a571cc7970ae2119338e4abfc34bdd6fdc8
2010-06-23 12:08:34 -05:00
David Anderson
858278d975 [JAEGER] Merge from fatval branch. 2010-06-10 14:01:11 -07:00
Luke Wagner
1bb5128ab0 Merge with TraceMonkey 2010-06-09 21:59:18 -07:00
David Anderson
ad6f6ffb02 [JAEGER] Merge from fatval branch. 2010-06-07 19:29:40 -07:00
Jason Orendorff
5874315d91 Back out changeset 5f425aecd7ab again. Still has performance issues; 14% in ThisObject hook. 2010-06-07 20:36:57 -05:00
Luke Wagner
0d5dd30ea8 Firefox builds 2010-06-07 18:21:51 -07:00
Jason Orendorff
5f5deee89d Bug 556277 - Compute this eagerly in more cases. r=brendan. Second landing. 2010-06-04 00:34:57 -07:00
David Anderson
8e4fe7b3e9 [JAEGER] Merge from fatval branch. 2010-06-03 23:04:57 -07:00
Luke Wagner
8f6c06b148 Remove jsboxedword, change jsid to be a jsval 2010-06-02 19:09:04 -07:00
David Mandelin
7bdb82c9d9 [JAEGER] Windows build fixes 2010-06-01 18:06:46 -07:00
David Anderson
dff194f865 [JAEGER] Merge from fatval. 2010-05-30 20:07:48 -07:00
Luke Wagner
f7242c4d3f [mq]: Refactor value logic for better reuse 2010-05-26 16:36:47 -07:00
Robert Sayre
3a10b5449b Backed out changeset 52be13ea0488. Bug 556277 - Compute this eagerly in more cases. r=brendan. Suspected of performance regression on SunSpider unpack-code. 80ms -> 135ms. 2010-06-05 11:42:59 -04:00
Jason Orendorff
2ab131a259 Bug 556277 - Compute this eagerly in more cases. r=brendan.
--HG--
extra : rebase_source : b295b576f019a95b55d12b86077aaef295e3eec8
2010-06-04 00:34:57 -07:00
David Anderson
38d6c177d7 [JAEGER] Merge from fatval. 2010-05-25 16:22:37 -07:00
David Anderson
0c7a8cdb75 [JAEGER] Merge from fatval. 2010-05-25 14:17:37 -07:00
David Anderson
61f3596d3c [JAEGER] Initial import of new compiler layout. 2010-05-25 14:14:13 -07:00
Luke Wagner
5cbf1c02f9 Merge 2010-05-25 11:31:47 -07:00
Luke Wagner
2a81dc5df9 Use nan-boxing, only working on 32-bit 2010-05-25 11:20:59 -07:00
David Mandelin
8aa596de26 Fix most MSVC warnings. 2010-05-24 13:26:38 -07:00
Andreas Gal
3026562007 Improve error reporting for proxy handlers and __iterator__ (568966, r=brendan). 2010-05-29 19:04:01 -07:00
David Anderson
167ee00231 [JAEGER] Enabled method JIT backend. 2010-05-22 17:41:21 -07:00
David Anderson
9f1aa534da Import method JIT 'outer' framework. 2010-05-22 17:09:52 -07:00
mozilla@buildmonkey-left.mv.mozilla.com
88fadd2d53 Fix some things so this builds on 64-bit and OS X 2010-05-19 09:55:27 -07:00
Luke Wagner
d3a3926b34 Fix bugs 2010-05-18 17:25:12 -07:00
Luke Wagner
e374a37e1c Remove explicit copy, ObjPtr 2010-05-17 22:15:51 -07:00
Luke Wagner
6d87e93eef 30% through jsstr 2010-05-13 18:55:25 -07:00
Luke Wagner
db5b99989b convert jsnum, touch up jsobj 2010-05-13 02:03:08 -07:00
Luke Wagner
36fb0452a3 fix jsiter, convert jsmath 2010-05-12 22:58:11 -07:00
Luke Wagner
588e08228c jsiter 2010-05-12 19:05:43 -07:00
Luke Wagner
4e6c52c52b New Tag scheme, no SetObject silliness 2010-05-12 16:36:10 -07:00
Luke Wagner
bd3571c1b5 Still recovering from rebase 2010-05-11 19:00:59 -07:00
Luke Wagner
6c0883c94f Merge from tracemonkey 2010-05-11 00:41:08 -07:00
Luke Wagner
4e71f5312b (unrebased) fat value patch 2010-05-10 22:01:31 -07:00
Luke Wagner
fb7ceb4c78 Bug 547851 - remove JSStackFrame::regs, JSStackFrame::callerFrame.sp (r=dvander) 2010-03-03 18:10:13 -08:00
Luke Wagner
bddd202c18 (unrebased) remove regs 2010-03-03 18:10:13 -08:00
Luke Wagner
24a4486456 (fake) remove-regs patch 2010-03-03 18:10:13 -08:00
Luke Wagner
9b49d62378 Bug 540706 - use contiguous buffer for stack frames and slots (r=waldo) 2010-03-03 17:52:26 -08:00
Luke Wagner
6a6afd60ce Backed out changeset 23efaeb8652b 2010-05-13 02:21:27 -07:00
Luke Wagner
c82711e2b5 (unrebased) contiguous patch 2010-03-03 17:52:26 -08:00
Luke Wagner
0e23d73f7a (fake) contiguous patch 2010-03-03 17:52:26 -08:00
Luke Wagner
98a7dc9ea6 Bug 540706 - use contiguous buffer for stack frames and slots (r=waldo) 2010-03-03 17:52:26 -08:00
Jason Orendorff
24aa3470aa Bug 556315 part 2 - JSObject::getGlobal() and JSStackFrame::getThisObject(). r=gal.
--HG--
extra : rebase_source : 103e73537d3c2f537a914b69a620136451a664ba
2010-03-31 17:57:03 -05:00
Blake Kaplan
387907ce9f Bug 515496 - Eliminate extra security check when computing this. r=jorendorff. 2010-02-11 17:04:42 -08:00
Jason Orendorff
25153c3c13 Bug 500431 part 1 - Move property cache code to jspropertycache{.h,.cpp,inlines.h}. r=brendan.
--HG--
extra : rebase_source : f7a7bb63bc3cded9452807ecdd0b5b8e8f5b3ff6
2010-03-24 16:16:01 -05:00
Brendan Eich
f819b36cf4 Use direct object shape instead of identity as key for deep property cache hits (497789, r=jorendorff). 2010-03-22 11:11:44 -07:00
Luke Wagner
116a193009 Bug 552248 - fix crash when JS_EvaluateInStackFrame is called for frame in saved callstack (r=Waldo) 2010-03-15 19:24:08 -07:00
Mike Moening
0373a2437d bug 549010 - fixing and silencing MSVC warnings. r=brendan,igor 2010-03-04 20:44:09 -08:00
Brendan Eich
fe7558946d Bug 549531 - fix strict aliasing warnings about scopeChain (also clean trailing whitespace; r=dmandelin). 2010-03-02 11:03:04 -08:00
Igor Bukanov
f74b35769d bug 538463 - caching only single-threaded objects. r=jorendorff 2010-02-03 13:42:07 +03:00
Igor Bukanov
008691b6f9 Backed out changeset b9700adc3951 - the landing for the bug 538463 had wrong changes 2010-02-03 13:37:56 +03:00
Igor Bukanov
7aafadcc76 bug 538463 - caching only single-threaded objects. r=jorendorff 2010-02-03 12:46:10 +03:00
Luke Wagner
7714144859 Bug 535656 - remove JSStackFrame::dormantNext and varobj (r=waldo) 2010-01-29 18:25:16 -08:00
Brendan Eich
85a5badeef ES5-conformance fix to make a new RegExp for each regexp literal evaluation (98409, r=igor/jwalden). 2010-01-06 15:12:54 -08:00
Jason Orendorff
e5ac8476fd Backed out changeset 3862a7e48e79 due to tinderbox failures on js1_5/GC/regress-324278.js. 2010-01-05 12:48:09 -06:00
Brendan Eich
1b4fbd91e6 ES5-conformance fix to make a new RegExp for each regexp literal evaluation (98409, r=jwalden). 2010-01-04 12:25:44 -08:00
Brendan Eich
e3b2653ade Bug 533705 - Lock proto-scope around canProvideEmptyScope/getEmptyScope; check for slot mismatch in js_AddProperty; don't optimize for slot mismatch in JSOP_SETPROP. r=jorendorff.
--HG--
extra : rebase_source : 4d49e9ef150286db93f2e5e1c77b217832263f83
2009-12-16 18:11:19 -06:00
David Anderson
ab74b2ff81 Added calleValue()/calleObject() inline helpers to JSStackFrame (bug 512371, r=brendan). 2009-10-26 17:28:56 -07:00
David Anderson
924ded9082 Cap JIT frames to the interpreter inline call count (bug 522136, r=brendan). 2009-10-13 17:22:11 -07:00
Jason Orendorff
cb511bce9e Backed out changeset 2fbd2420ef8b (bug 500431) due to Tinderbox orangeness. 2009-09-18 08:58:24 -05:00
Jason Orendorff
666b4c3e13 Bug 500431 - Encapsulate the property cache using C++ best practices - Part 1, just moving a few functions to a new file. 2009-09-17 18:23:36 -05:00
Brendan Eich
eaabbf253c Bug 516075 - Move shape into JSObjectMap from JSScope, const-ipate and use LIR_ldc* to get to it (r=jorendorff). 2009-09-14 20:29:46 -04:00
Luke Wagner
854c0294df Bug 412571 - replace thisp with thisv (r=brendan,mrbkap) 2009-09-11 19:07:00 -07:00
Jeff Walden
9d39c0d549 Bug 515285 - Implement JS_SameValue, and make assertEq use it rather than JS_StrictlyEqual. r=jorendorff 2009-09-09 11:51:52 -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
Jason Orendorff
b53824855d Bug 513119 - Change JSScript macros to methods. r=Waldo. 2009-09-09 18:52:55 -05: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
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
Igor Bukanov
7e607aac4d bug 495061 - js_PutArgsObject and js_PutCallObject that never fail. r=brendan 2009-08-14 20:43:16 +02:00
Igor Bukanov
ca5953ea0c bug 507573 - put activation clenup. r=brendan 2009-08-04 12:55:58 +02:00
Jason Orendorff
a9c63ed454 Bug 497886 - Document the property cache. r=brendan. 2009-07-29 15:18:31 -05:00
David Mandelin
cfb0d1fd1b Bug 506821: clean up trailing whitespace, r=brendan 2009-07-27 18:40:12 -07:00
Jason Orendorff
08e0a53af4 Bug 503408 - Trace native setters. r=brendan. 2009-07-27 16:47:34 -05:00
Robert Sayre
a181aec2ed Merge mozilla-central to tracemonkey. 2009-07-23 16:49:14 -04:00
Jason Orendorff
a31f80165c Bug 503080 - Remove prototype-scope-sharing. r=brendan. 2009-07-21 16:25:11 -05:00
Ginn Chen
5e813f70a4 Bug 492720 libgjs failed to compile with js headers of Firefox 3.5 r=brendan 2009-07-23 18:07:09 +08:00
Brendan Eich
f60779aef5 Bug 503343 - Change JSScope macros to methods. r=jorendorff 2009-07-09 15:27:21 -05:00
David Mandelin
975f74c278 Bug 453730: trace JSOP_ARGUMENTS, r=gal 2009-07-08 11:16:41 -07:00
Johnny Stenback
a511964116 Fixing bug 442399. Remove LiveConnect from the tree. r=joshmoz@gmail.com, bclary@bclary.com, sr=brendan@mozilla.org 2009-06-30 15:55:16 -07:00
Igor Bukanov
3193020246 bug 498899 - avoiding excessive JS_(LOCK|UNLOCK)_OBJ while quering property cache. r=brendan 2009-06-18 15:24:06 +02:00
Igor Bukanov
e90c3cd0d5 Backed out changeset 7ab1be136cfa - that patch for bug 498899 has a bug. 2009-06-18 15:00:55 +02:00
Igor Bukanov
7d5d5e6b13 bug 498899 - avoiding excessive JS_(LOCK|UNLOCK)_OBJ while quering property cache. r=brendan 2009-06-18 14:26:16 +02:00
Brendan Eich
0416e1e679 Bug 492355 - Suspected Txul regression from JS engine changes (r=igor). 2009-05-13 17:11:23 -07:00
David Mandelin
4e118ecf45 Bug 492610: correctly determine when an upvar is part of the trace, r=brendan 2009-05-12 16:25:57 -07:00
Benjamin Smedberg
154f21ccdd Bug 492040 - js_Execute must bail off trace, r=jorendorff a=josh for CLOSED TREE checkin 2009-05-08 16:32:35 -04:00
Jim Blandy
56af1e088d Bug 488018: Propagate errors from tracer to interpreter. r=igor
Rename JSMonitorRecordingStatus to JSRecordingStatus.  The JSMRS_
prefix becomes JSRS_, accordingly.

Make 'record_' functions return JSRecordingStatus, not bool.  'false'
becomes 'JSRS_STOP'; 'true' becomes 'JSRS_CONTINUE'.  Since subsequent
patches will begin to use more than two values (the next assigns
meaning to JSRS_IMACRO), take care to propagate values to callers
accurately.

Define a new recording status, JSRS_ERROR.  Return it from recording
functions when appropriate.  Check for it at appropriate bottlenecks
in tracer and interpreter.

ABORT_TRACE becomes one of:
. ABORT_TRACE, for when we're simply aborting the recording process
. ABORT_TRACE_ERROR, for aborting due to an error
. ABORT_TRACE_CV, for producing an error message and returning something
  other than JSRS_STOP --- some contexts require boolean values.

Conditionally provide an alternative definition for the
JSRecordingStatus type that cannot be converted to 'bool', so that we
can use the C++ compiler to catch improperly converted code.

Use recording function return value for imacro invocation.  Eliminate
the JSFRAME_IMACRO_START frame flag.  Instead, return JSRS_IMACRO
directly from recording functions.
2009-04-30 17:30:46 -07:00
Igor Bukanov
b8405f1171 bug 487846 - optimizing shape prediction for set opcodes. r=brendan 2009-04-29 07:07:21 -07:00
Brendan Eich
7f4de719f8 Fix dangling JS_PROPERTY_CACHE_METERING bits broken by patch for bug 489171. 2009-04-20 17:32:36 -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
Igor Bukanov
4ad2e764fa bug 488414 - js_GenerateShape just schedules, not run, the GC. r=brendan,gal 2009-04-20 12:10:29 +02:00
Igor Bukanov
fd49b19773 Backed out changeset f4662701526b (bug 488414) to fix !JS_THREADSAFE compilation errors 2009-04-20 11:59:36 +02:00
Igor Bukanov
56547f8087 bug 488414 - js_GenerateShape just schedules, not run, the GC. r=brendan,gal 2009-04-20 10:17:28 +02:00
Igor Bukanov
ba556afe6d bug 487039 - caching only white-listed non-globals on the scope chain. r=brendan 2009-04-18 20:10:59 +02:00
Andreas Gal
adc0da147c Merge. 2009-04-17 12:44:37 -07:00
Andreas Gal
da0094a55c Backed out changeset 324bb9dc8372 (bug 487204 is implicated in top site failures). 2009-04-17 12:41:00 -07:00
Andreas Gal
6520b20732 Backed out changeset 5bd116148175 (attempting to re-land bug 487204). 2009-04-16 17:56:18 -07:00
Andreas Gal
3b10c56019 Backed out changeset d1a4ee3d0c59 (bug 487204, due to possible leak). 2009-04-16 12:19:24 -07:00
Andreas Gal
51c5e8d189 Properly calculate 'this' object on trace and side exit if we have to wrap (488203, r=mrbkap,jorendorff). 2009-04-16 12:21:45 -07:00
Andreas Gal
c6e4da316b Backed out changeset 062ea62f9bda (backed out bug 488203 again). 2009-04-16 12:18:46 -07:00
Andreas Gal
69d6e84fc4 Backed out changeset 64d7df1fe160 (re-landing 488203). 2009-04-16 10:16:14 -07:00
Andreas Gal
a943161ace Backed out changeset e8c23c42db7f (bug 488203) to see whether it causes the leak. 2009-04-16 10:07:53 -07:00
Andreas Gal
53d87f13a2 Properly calculate 'this' object on trace and side exit if we have to wrap (488203, r=mrbkap). 2009-04-15 17:54:37 -07:00
Igor Bukanov
5836717df3 bug 487204 - avoiding extra locks for js_Native(Get|Set). r=brendan 2009-04-16 02:36:14 +02:00
Andreas Gal
05faccf228 Backed out changeset d1a4ee3d0c59 due to build fail, test fail, and perf regressions. 2009-04-15 14:20:52 -07:00
Igor Bukanov
577cb23ac0 bug 487204 - avoiding extra locks for js_Native(Get|Set). r=brendan 2009-04-15 21:13:27 +02:00
Andreas Gal
4c09e7eb02 Backed out bug 488203. 2009-04-14 23:44:34 -07:00
Andreas Gal
e01cfd34c3 Properly compute 'this' object on trace and wrap if necessary (488203, r=mrbkap). 2009-04-14 19:52:09 -07:00
Jeff Walden
b282a2b89b Import http://hg.mozilla.org/mozilla-central/rev/a94142e82a0d to TM since it seems to be horking my shell builds (but not a browser build? odd, I thought I'd tested both) 2009-04-11 15:01:17 -07:00
Jeff Walden
61aee1746d Bug 473096 - js1_5/Regress/regress-366601.js - Internal Error: script too large. r=brendan 2009-04-10 17:41:13 -07:00
Brendan Eich
c77da042f2 Fix JS_LONE_INTERPRET-mislocated js_GetUpvar prototype (487563). 2009-04-09 19:19:21 -07:00
Brendan Eich
26a5b7f3fc Bug 487563 - Crash [@ js_Interpret] (r=mrbkap). 2009-04-09 18:44:54 -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
02252a653d Bug 482743: Fix up bytecode execution tracing. Allow tracing to file. r=igor
js_TraceOpcode: Remember the last bytecode we traced explicitly,
instead of subtracting 'len' from regs.pc, which isn't reliable.
Decline to trace values in script prologues (between 'code' and
'main').  Decline to walk off the bottom of the stack when the 'last
bytecode' is misleading.  Flush the stream after each bytecode.

Use the TRACE_OPCODE macro in both threaded and non-threaded
interpreters.  Take care to make threaded and non-threaded
interpreters produce the same traces.

In the shell's 'tracing' function, use JS_ValueToBoolean to recognize
all sorts of booleans, and treat a string as the name of a file to
write the trace to.
2009-04-01 08:50:57 -07:00
Igor Bukanov
a8094a7903 bug 437325 - JSThread is no longer shared between JSRuntime instances. r=brendan 2009-03-24 13:07:35 +01:00
Igor Bukanov
f28d80b499 Backed out changeset e117c22cc1d1 - the landed patch for bug 437325 has a shutdown leak. 2009-03-22 10:15:27 +01:00
Igor Bukanov
a61176553e bug 437325 - JSThread is no longer shared between JSRuntime instances. r=brendan 2009-03-22 10:07:14 +01:00
Andreas Gal
2b615b1fd3 Compilation fix for MSVC (no bug). 2009-03-17 16:36:45 -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
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
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