|
|
|
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) |