Commit Graph

537 Commits

Author SHA1 Message Date
Andreas Gal
bd43ddb1c8 Bad assert in NEXTITER exception handling (494975, r=brendan). 2009-05-26 16:39:43 -07:00
Igor Bukanov
0374ee3760 bug 490364 - mutating parent chain shapes only for Call objects and only when adding properties that are not parameter or var names. r=brendan 2009-05-15 11:43:19 +02:00
Igor Bukanov
92f94e451c bug 491126 - sharing object map for non-native objects. r=brendan 2009-05-14 12:35:23 +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
Igor Bukanov
3597961095 bug 491013 - fixing shared setter regression and eliminating several useless anonymous prototype objects. r=brendan 2009-05-06 20:33:10 -02:30
jorendorff
93c6d226d3 Record all calls to native functions (487134, r=gal, brendan). 2009-05-05 14:26:06 -07:00
Andreas Gal
fe1ed6adb9 Backed out changeset 6534f8b9aa74 (bug 491013, assert on startup). 2009-05-04 15:07:53 -07:00
Igor Bukanov
d77b8664fb bug 491013 - fixing shared setter regression and eliminating several useless anonymous prototype objects. r=brendan 2009-05-03 20:43:55 -04:00
Igor Bukanov
40475ad940 bug - 488607
- fixing test_property_cache asserts. r=brendan
2009-05-01 07:10:25 -07: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
Andreas Gal
cafa156d52 We don't cache access to shared properties in the property cache (490666, r=igor,brendan). 2009-04-30 15:52:13 -07:00
Igor Bukanov
b8405f1171 bug 487846 - optimizing shape prediction for set opcodes. r=brendan 2009-04-29 07:07:21 -07:00
Graydon Hoare
bb4177dccd Bug 490044 - TM: Add deep-bailing write barrier to global shape change code, r=brendan. 2009-04-24 17:47:32 -07:00
Graydon Hoare
3471a48ea3 Bug 470964 - Simulate CFG in imacro assembler and decompiler, r=brendan. 2009-04-24 09:07:49 -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
Igor Bukanov
95c0598199 bug 488285 - fixing strict mode warnings with DOm window object. r=brendan 2009-04-15 16:09:58 +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
Igor Bukanov
6da0ea9b5e bug 462734 - fixing JSOP_BINDNAME caching issues. r=brendan 2009-04-11 10:11:06 +02:00
Igor Bukanov
d738892163 Backed out changeset 595ebe7b82fa - it had wrong patch 2009-04-11 10:07:42 +02:00
Igor Bukanov
de22fe3e47 bug 462734 - fixing JSOP_BINDNAME caching issues. r=brendan 2009-04-11 10:04:24 +02: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
Blake Kaplan
1c5e6afeac Bug 487684 - Store the last trace PC to pass into the decompiler. r=igor 2009-04-10 14:06:28 -07:00
Brendan Eich
26a5b7f3fc Bug 487563 - Crash [@ js_Interpret] (r=mrbkap). 2009-04-09 18:44:54 -07:00
Brendan Eich
e29805bd5a Bug 487561 - More cleanup from bug 452498 and bug 487271 patches (r=mrbkap/igor, and this fixes bug 487570). 2009-04-09 15:05:12 -07:00
Andreas Gal
4f7fe5afa4 Bug 485959 - TM: Recording continues across loop edge. r=jorendorff 2009-04-07 00:45:49 -07:00
Andreas Gal
ca62b9e9e3 backout Bug 485959, disable-jit bustage. 2009-04-07 03:34:06 -04:00
Andreas Gal
fd3fd2676a Bug 485959 - TM: Recording continues across loop edge. r=jorendorff 2009-04-07 03:25:29 -04:00
Jason Orendorff
32b58a38be Thread-safety comment for bug 479198. r=brendan. 2009-04-06 16:43:45 -05:00
Jason Orendorff
81f9c93dec Bug 479198 - "Deep" property cache entries not invalidated when shadowed (TIBCO General Interface regression). r=brendan. 2009-04-06 13:24:20 -05: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
Igor Bukanov
09ffabb7a1 bug 485164 - fixing sharp semantic regressions. r=mrbkap 2009-04-03 09:53:02 +02:00
Jason Orendorff
cd0fe70742 Bug 483179 - TM: JIT embeds stale closure in trace for JSOP_DEFLOCALFUN. r=mrbkap 2009-04-02 14:08:48 -07:00
Jim Blandy
b34fbbe457 Bug 482743: Compute opcode stack usage correctly. r=igor 2009-04-01 11:02:52 -07: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
Andreas Gal
38b604f834 Bug 485022 - TM: Assertion failure: JS_ON_TRACE(cx), at ../jsarray.cpp. r=mrbkap 2009-03-30 16:43:23 -07:00
Igor Bukanov
a7851480ad bug 469492 - calling the call hook after fully initializing the freame. r=brendan 2009-03-30 15:29:17 +02:00
Robert Sayre
150b7d8a28 Merge tracemonkey to mozilla-central. 2009-03-24 13:49:05 -04: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
81a69a36df bug 427196 - property cache fix. r=brendan 2009-03-23 21:05:25 +01:00
Robert Sayre
d5acda3fc3 Merge tracemonkey to mozilla-central. 2009-03-19 14:49:04 -04:00
Andreas Gal
47b45e60e7 Always check operation callback on backwards branches (484035, r=brendan). 2009-03-19 01:07:31 -07:00
Graydon Hoare
44c661ddb2 Bug 471373 - OOM in imacro trips assert, r=brendan. 2009-03-17 15:50:55 -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
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
Igor Bukanov
3e7114aad2 bug 482038 - removal of JSRuntime.gcPoke checks from js_NewGCThing. r=brendan 2009-03-12 10:15:55 +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
Brendan Eich
e37fd1b818 Bug 476447 - Array.prototype getter/setter does not work as usual (r=jorendorff). 2009-03-09 11:25:43 -07:00
Andreas Gal
52cc17234c Check for non-stub getters/setters in SETNAME and SETPROP and invoke SetPropHit after setting the property in INITPROP (481989, r=brendan). 2009-03-07 01:25:37 -08:00
Brendan Eich
0332084955 Bug 481516 - Assertion failure: pobj_ == obj2, at ../jsinterp.cpp:4276 when getting a property that is cached but shadowed (r=jorendorff). 2009-03-06 16:34:19 -08:00
Robert Sayre
8f71e6c715 Merge m-c to tm 2009-03-04 14:52:53 -05:00
Brendan Eich
f32c3d8613 Bug 480657 - TM: Add an API to define traceable constructors (r=gal, jorendorff). 2009-03-03 22:53:27 -08:00
Andreas Gal
5b7dfe03a9 Assert prototype shapes when reading a hole from a dense array instead of calling a builtin (481328, r=brendan). 2009-03-03 21:58:56 -08:00
Andreas Gal
8c3223aab5 Browser spuriously sets runtime->anyArrayPrototypeHasElement and makes perf bad (481251, r=mrbkap). 2009-03-03 18:04:15 -08:00
Robert Sayre
f4c8ebe128 Merge tm to m-c. 2009-03-03 13:48:15 -05:00
Igor Bukanov
7f8a45e9f9 bug 479430 - adding mixing operation callback calls. r=gal 2009-03-02 14:32:27 +01:00
Andreas Gal
4c04aa2f53 Backed out bug 480657. Massive failures across all platforms. 2009-02-28 23:40:04 -08:00
Andreas Gal
7bd6cbad5f Add an API to define traceable constructors (480657, r=brendan). 2009-02-28 18:18:42 -08:00
Andreas Gal
1cbf259c3c Improve blacklisting (479109, r=graydon). 2009-02-25 18:47:22 -08:00
Jason Orendorff
2f464f3348 Bug 479826 - Remove cx->pcHint. r=gal.
--HG--
extra : rebase_source : caf9fef929fe161fad2f6a98b53cb3d00e43f31f
2009-02-23 17:29:40 -06:00
Robert Sayre
12943580cf Merge m-c to tracemonkey. 2009-02-23 12:44:23 -05:00
Jason Orendorff
15b9f03458 Bug 479566 - Rename array "dense length" to capacity. r=shaver. 2009-02-21 15:33:50 -06:00
Igor Bukanov
7ac32de806 bug 478543 - fixing warnings about casts between function and data pointers. r=brendan 2009-02-19 09:33:37 +01:00
Jim Blandy
2d6ea8b787 Bug 478075: Remove parent argument to js_GetCallObject. r=brendan 2009-02-18 23:57:24 -08:00
Jason Orendorff
c936fbe2d4 Bug 463239 - JS_SetTrap alters code execution. r=brendan. 2009-02-18 18:31:09 -06:00
Robert Sayre
695b4646c3 Merge tm to mc 2009-02-19 11:48:08 -05:00
Jim Blandy
ede7e6d142 Bug 391488: Eliminate PTRDIFF macro; delete jssttddef.h. r=jimb
Delete jsstddef.h, since its only remaining purpose is to make certain
Win16-specific definitions; we don't support Win16 any more.  In
particular, we can just subtract pointers now, so the PTRDIFF macro is
unnecessary noise.

Most places get stddef.h via jstypes.h or some other header, so we can
just delete #inclusions of jstddef.h.  The exception is jskwgen.h, so
there we explicitly include <stddef.h> instead.
2009-02-18 09:14:51 -08:00
Robert Sayre
a3ab3a989e Merge tm to m-c. 2009-02-17 20:08:01 -05:00
Wladimir Palant
0028837f26 Bug 475334 - Don't trigger debugger hooks until frame initialization is complete. r=mrbkap 2009-02-11 22:28:55 +01:00