Fixed sideexit coalescing code not checking global count (bug 496813, r=gal).
authorDavid Anderson <danderson@mozilla.com>
Mon, 08 Jun 2009 13:20:25 -0700
changeset 28996 2b57dcfdb13db2c3ec3ea26a6ed73a9701f1e40a
parent 28995 1965e3b7a40693f4092d8b82131ee17b9a57daa8
child 28997 2d8dd0494e645218bd291d39f8feb8da0ac29b64
push id7365
push userrsayre@mozilla.com
push dateTue, 09 Jun 2009 02:39:30 +0000
treeherderautoland@66a40d5fda11 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgal
bugs496813
milestone1.9.2a1pre
Fixed sideexit coalescing code not checking global count (bug 496813, r=gal).
js/src/jstracer.cpp
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -2432,16 +2432,17 @@ TraceRecorder::snapshot(ExitType exitTyp
      * side exit instead of creating a new one.
      */
     VMSideExit** exits = treeInfo->sideExits.data();
     unsigned nexits = treeInfo->sideExits.length();
     if (exitType == LOOP_EXIT) {
         for (unsigned n = 0; n < nexits; ++n) {
             VMSideExit* e = exits[n];
             if (e->pc == pc && e->imacpc == fp->imacpc &&
+                ngslots == e->numGlobalSlots &&
                 !memcmp(getFullTypeMap(exits[n]), typemap, typemap_size)) {
                 AUDIT(mergedLoopExits);
                 return e;
             }
         }
     }
 
     if (sizeof(VMSideExit) + (stackSlots + ngslots) * sizeof(uint8) >= MAX_SKIP_BYTES) {