|
|
|
Lines 2241-2256
mjit::Compiler::generateMethod()
|
Link Here
|
|---|
|
| 2241 |
if (script->needsArgsObj()) { |
2241 |
if (script->needsArgsObj()) { |
| 2242 |
prepareStubCall(Uses(0)); |
2242 |
prepareStubCall(Uses(0)); |
| 2243 |
INLINE_STUBCALL(stubs::Arguments, REJOIN_FALLTHROUGH); |
2243 |
INLINE_STUBCALL(stubs::Arguments, REJOIN_FALLTHROUGH); |
| 2244 |
pushSyncedEntry(0); |
2244 |
pushSyncedEntry(0); |
| 2245 |
} else { |
2245 |
} else { |
| 2246 |
frame.push(MagicValue(JS_OPTIMIZED_ARGUMENTS)); |
2246 |
frame.push(MagicValue(JS_OPTIMIZED_ARGUMENTS)); |
| 2247 |
} |
2247 |
} |
| 2248 |
END_CASE(JSOP_ARGUMENTS) |
2248 |
END_CASE(JSOP_ARGUMENTS) |
|
|
2249 |
BEGIN_CASE(JSOP_ACTUALSFILLED) |
| 2250 |
{ |
| 2251 |
|
| 2252 |
// We never inline things with defaults because of the switch. |
| 2253 |
JS_ASSERT(!inlining()); |
| 2254 |
RegisterID value = frame.allocReg(), nactual = frame.allocReg(); |
| 2255 |
int32_t defstart = GET_UINT16(PC); |
| 2256 |
masm.move(Imm32(defstart), value); |
| 2257 |
masm.load32(Address(JSFrameReg, StackFrame::offsetOfNumActual()), nactual); |
| 2258 |
|
| 2259 |
// Best would be a single instruction where available (like |
| 2260 |
// cmovge on x86), but there's no way get that yet, so jump. |
| 2261 |
Jump j = masm.branchPtr(Assembler::LessThan, nactual, Imm32(defstart)); |
| 2262 |
masm.move(nactual, value); |
| 2263 |
j.linkTo(masm.label(), &masm); |
| 2264 |
frame.freeReg(nactual); |
| 2265 |
frame.pushInt32(value); |
| 2266 |
} |
| 2267 |
END_CASE(JSOP_ACTUALSFILLED) |
| 2249 |
|
2268 |
|
| 2250 |
BEGIN_CASE(JSOP_ITERNEXT) |
2269 |
BEGIN_CASE(JSOP_ITERNEXT) |
| 2251 |
iterNext(GET_INT8(PC)); |
2270 |
iterNext(GET_INT8(PC)); |
| 2252 |
END_CASE(JSOP_ITERNEXT) |
2271 |
END_CASE(JSOP_ITERNEXT) |
| 2253 |
|
2272 |
|
| 2254 |
BEGIN_CASE(JSOP_DUP) |
2273 |
BEGIN_CASE(JSOP_DUP) |
| 2255 |
frame.dup(); |
2274 |
frame.dup(); |
| 2256 |
END_CASE(JSOP_DUP) |
2275 |
END_CASE(JSOP_DUP) |