Don't trace a property access with a watchpoint (455413, r=brendan)
authorDavid Mandelin <dmandelin@mozilla.com>
Tue, 30 Sep 2008 13:34:17 -0700
changeset 20012 71b214a5ecca58407323adc152b92c428ba51032
parent 20011 0994c23a8c618a5fc04b1d709d0e672caccd8f10
child 20013 3daa02cc94caee4d4322323df07cc67961830da7
push id2577
push userbrendan@mozilla.com
push dateWed, 01 Oct 2008 04:35:27 +0000
treeherdermozilla-central@a613924403d6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbrendan
bugs455413
milestone1.9.1b1pre
Don't trace a property access with a watchpoint (455413, r=brendan)
js/src/jstracer.cpp
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -4671,16 +4671,19 @@ TraceRecorder::record_JSOP_SETPROP()
     if (obj->map->ops->setProperty != js_SetProperty)
         ABORT_TRACE("non-native JSObjectOps::setProperty");
     return true;
 }
 
 bool
 TraceRecorder::record_SetPropHit(JSPropCacheEntry* entry, JSScopeProperty* sprop)
 {
+    if (sprop->setter == js_watch_set)
+        ABORT_TRACE("watchpoint detected");
+
     jsbytecode* pc = cx->fp->regs->pc;
     jsval& r = stackval(-1);
     jsval& l = stackval(-2);
 
     JS_ASSERT(!JSVAL_IS_PRIMITIVE(l));
     JSObject* obj = JSVAL_TO_OBJECT(l);
     LIns* obj_ins = get(&l);