Merge. If I had a cent for every merge. Sigh.
authorAndreas Gal <gal@mozilla.com>
Wed, 13 Aug 2008 17:48:04 -0700
changeset 18155 58d063dff82eadb93211cc48e054dec0acd5e4f6
parent 18154 f8033bfacfbbab4a70cc0f5c616656a412c830df (current diff)
parent 18153 8c2a3e462e6c807154095fee051f92205e4df931 (diff)
child 18156 f24fdeae617ba032a0066d95ee4651ec32c7e238
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone1.9.1a2pre
Merge. If I had a cent for every merge. Sigh.
js/src/jstracer.cpp
--- a/js/src/jsbuiltins.cpp
+++ b/js/src/jsbuiltins.cpp
@@ -526,29 +526,31 @@ js_TypeOfBoolean(JSContext* cx, jsint un
     JS_ASSERT(JSVAL_IS_VOID(boxed) || JSVAL_IS_BOOLEAN(boxed));
     JSType type = JS_TypeOfValue(cx, boxed);
     return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
 }
 
 jsint FASTCALL
 js_Object_p_hasOwnProperty(JSContext* cx, JSObject* obj, JSString *str)
 {
+    jsid id = ATOM_TO_JSID(STRING_TO_JSVAL(str));
     jsval v;
-    if (!js_HasOwnProperty(cx, obj->map->ops->lookupProperty, obj, ATOM_TO_JSID(str), &v))
+    if (!js_HasOwnProperty(cx, obj->map->ops->lookupProperty, obj, id, &v))
         return JSVAL_TO_BOOLEAN(JSVAL_VOID);
     JS_ASSERT(JSVAL_IS_BOOLEAN(v));
     return JSVAL_TO_BOOLEAN(v);
 }
 
 jsint FASTCALL
 js_Object_p_propertyIsEnumerable(JSContext* cx, JSObject* obj, JSString *str)
 {
+    jsid id = ATOM_TO_JSID(STRING_TO_JSVAL(str));
     jsval v;
-    if (!js_PropertyIsEnumerable(cx, obj, ATOM_TO_JSID(str), &v))
-        return -1;
+    if (!js_PropertyIsEnumerable(cx, obj, id, &v))
+        return JSVAL_TO_BOOLEAN(JSVAL_VOID);
     JS_ASSERT(JSVAL_IS_BOOLEAN(v));
     return JSVAL_TO_BOOLEAN(v);
 }
 
 jsdouble FASTCALL
 js_BooleanToNumber(JSContext* cx, jsint unboxed)
 {
     if (unboxed == JSVAL_TO_BOOLEAN(JSVAL_VOID))
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -2692,27 +2692,27 @@ TraceRecorder::record_EnterFrame()
     return true;
 }
 
 bool
 TraceRecorder::record_LeaveFrame()
 {
 #ifdef DEBUG
     if (cx->fp->fun)
-        printf("LeaveFrame (back to %s), callDept=%d\n", 
+        printf("LeaveFrame (back to %s), callDepth=%d\n", 
                js_AtomToPrintableString(cx, cx->fp->fun->atom),
                callDepth);
 #endif    
     if (callDepth-- <= 0)
         return false;
 
     // LeaveFrame gets called after the interpreter popped the frame and
     // stored rval, so cx->fp not cx->fp->down, and -1 not 0.
     atoms = cx->fp->script->atomMap.vector;
-    stack(-1, rval_ins);
+    set(&stackval(-1), rval_ins, true);
     return true;
 }
 
 bool TraceRecorder::record_JSOP_INTERRUPT()
 {
     return false;
 }
 
@@ -3502,17 +3502,17 @@ TraceRecorder::record_JSOP_CALL()
         { js_str_replace,              F_String_p_replace_str, "TC", "sr",    FAIL_NULL,   NULL },
         { js_str_replace,              F_String_p_replace_fun, "TC", "fr",    FAIL_NULL,   NULL },
         { js_math_random,              F_Math_random,          "R",    "",    INFALLIBLE,  NULL },
         { js_str_concat,               F_String_p_concat_1int, "TC",  "i",    FAIL_NULL,   NULL },
         { js_array_join,               F_Array_p_join,         "TC",  "s",    FAIL_NULL,   NULL },
         { js_obj_hasOwnProperty,       F_Object_p_hasOwnProperty,
                                                                "TC",  "s",    FAIL_VOID,   NULL },
         { js_obj_propertyIsEnumerable, F_Object_p_propertyIsEnumerable,
-                                                               "TC",  "s",    FAIL_NEG,    NULL },
+                                                               "TC",  "s",    FAIL_VOID,   NULL },
     };
 
     for (uintN i = 0; i < JS_ARRAY_LENGTH(knownNatives); i++) {
         JSTraceableNative* known = &knownNatives[i];
         if ((JSFastNative)fun->u.n.native != known->native)
             continue;
 
         uintN knownargc = strlen(known->argtypes);