Compile scripts containing decomposed opcodes, fix warning. bug 728342.
authorBrian Hackett <bhackett1024@gmail.com>
Wed, 22 Feb 2012 12:57:25 -0800
changeset 90357 bf3651d2e149d3b6de62860f25060514428aacfa
parent 90356 046998d673fc27862e53de553f1ffce78aca0460
child 90358 18af6c2316d4abed9a097095b6f6afe22727f8cb
push idunknown
push userunknown
push dateunknown
bugs728342
milestone13.0a1
Compile scripts containing decomposed opcodes, fix warning. bug 728342.
js/src/jsanalyze.cpp
js/src/methodjit/Compiler.cpp
--- a/js/src/jsanalyze.cpp
+++ b/js/src/jsanalyze.cpp
@@ -613,17 +613,18 @@ ScriptAnalysis::analyzeBytecode(JSContex
           case JSOP_INT8:
           case JSOP_INT32:
           case JSOP_HOLE:
           case JSOP_LOOPHEAD:
           case JSOP_LOOPENTRY:
             break;
 
           default:
-            isCompileable = isInlineable = false;
+            if (!(js_CodeSpec[op].format & JOF_DECOMPOSE))
+                isCompileable = isInlineable = false;
             break;
         }
 
         uint32_t type = JOF_TYPE(js_CodeSpec[op].format);
 
         /* Check basic jump opcodes, which may or may not have a fallthrough. */
         if (type == JOF_JUMP) {
             /* Some opcodes behave differently on their branching path. */
--- a/js/src/methodjit/Compiler.cpp
+++ b/js/src/methodjit/Compiler.cpp
@@ -76,24 +76,16 @@ using namespace js::mjit::ic;
 using namespace js::analyze;
 
 #define RETURN_IF_OOM(retval)                                   \
     JS_BEGIN_MACRO                                              \
         if (oomInVector || masm.oom() || stubcc.masm.oom())     \
             return retval;                                      \
     JS_END_MACRO
 
-#if defined(JS_METHODJIT_SPEW)
-static const char *OpcodeNames[] = {
-# define OPDEF(op,val,name,token,length,nuses,ndefs,prec,format) #name,
-# include "jsopcode.tbl"
-# undef OPDEF
-};
-#endif
-
 /*
  * Number of times a script must be called or had a backedge before we try to
  * inline its calls.
  */
 static const size_t USES_BEFORE_INLINING = 10000;
 
 mjit::Compiler::Compiler(JSContext *cx, JSScript *outerScript,
                          unsigned chunkIndex, bool isConstructing)