Attachment #628553: JaegerMonkey support ready for checkin for bug #757676

View | Details | Raw Unified | Return to bug 757676
Collapse All | Expand All

(-)a/js/src/jsanalyze.cpp (+1 lines)
Line     Link Here 
 Lines 584-599   ScriptAnalysis::analyzeBytecode(JSContex Link Here 
584
          case JSOP_OBJECT:
584
          case JSOP_OBJECT:
585
          case JSOP_UINT24:
585
          case JSOP_UINT24:
586
          case JSOP_GETXPROP:
586
          case JSOP_GETXPROP:
587
          case JSOP_INT8:
587
          case JSOP_INT8:
588
          case JSOP_INT32:
588
          case JSOP_INT32:
589
          case JSOP_HOLE:
589
          case JSOP_HOLE:
590
          case JSOP_LOOPHEAD:
590
          case JSOP_LOOPHEAD:
591
          case JSOP_LOOPENTRY:
591
          case JSOP_LOOPENTRY:
592
          case JSOP_ACTUALSFILLED:
592
            break;
593
            break;
593
594
594
          default:
595
          default:
595
            if (!(js_CodeSpec[op].format & JOF_DECOMPOSE))
596
            if (!(js_CodeSpec[op].format & JOF_DECOMPOSE))
596
                isJaegerCompileable = isInlineable = false;
597
                isJaegerCompileable = isInlineable = false;
597
            break;
598
            break;
598
        }
599
        }
599
600
(-)a/js/src/methodjit/Compiler.cpp (+19 lines)
Line     Link Here 
 Lines 2248-2263   mjit::Compiler::generateMethod() Link Here 
2248
            if (script->needsArgsObj()) {
2248
            if (script->needsArgsObj()) {
2249
                prepareStubCall(Uses(0));
2249
                prepareStubCall(Uses(0));
2250
                INLINE_STUBCALL(stubs::Arguments, REJOIN_FALLTHROUGH);
2250
                INLINE_STUBCALL(stubs::Arguments, REJOIN_FALLTHROUGH);
2251
                pushSyncedEntry(0);
2251
                pushSyncedEntry(0);
2252
            } else {
2252
            } else {
2253
                frame.push(MagicValue(JS_OPTIMIZED_ARGUMENTS));
2253
                frame.push(MagicValue(JS_OPTIMIZED_ARGUMENTS));
2254
            }
2254
            }
2255
          END_CASE(JSOP_ARGUMENTS)
2255
          END_CASE(JSOP_ARGUMENTS)
2256
          BEGIN_CASE(JSOP_ACTUALSFILLED)
2257
          {
2258
2259
            // We never inline things with defaults because of the switch.
2260
            JS_ASSERT(a == outer);
2261
            RegisterID value = frame.allocReg(), nactual = frame.allocReg();
2262
            int32_t defstart = GET_UINT16(PC);
2263
            masm.move(Imm32(defstart), value);
2264
            masm.load32(Address(JSFrameReg, StackFrame::offsetOfNumActual()), nactual);
2265
2266
            // Best would be a single instruction where available (like
2267
            // cmovge on x86), but there's no way get that yet, so jump.
2268
            Jump j = masm.branch32(Assembler::LessThan, nactual, Imm32(defstart));
2269
            masm.move(nactual, value);
2270
            j.linkTo(masm.label(), &masm);
2271
            frame.freeReg(nactual);
2272
            frame.pushInt32(value);
2273
          }
2274
          END_CASE(JSOP_ACTUALSFILLED)
2256
2275
2257
          BEGIN_CASE(JSOP_ITERNEXT)
2276
          BEGIN_CASE(JSOP_ITERNEXT)
2258
            iterNext(GET_INT8(PC));
2277
            iterNext(GET_INT8(PC));
2259
          END_CASE(JSOP_ITERNEXT)
2278
          END_CASE(JSOP_ITERNEXT)
2260
2279
2261
          BEGIN_CASE(JSOP_DUP)
2280
          BEGIN_CASE(JSOP_DUP)
2262
            frame.dup();
2281
            frame.dup();
2263
          END_CASE(JSOP_DUP)
2282
          END_CASE(JSOP_DUP)

Return to bug 757676