|
Lines 282-288
macro doCallToJavaScript(makeCall, doRet
Link Here
|
| 282 |
storep temp3, CodeBlock+4[cfr, temp1, 8] |
282 |
storep temp3, CodeBlock+4[cfr, temp1, 8] |
| 283 |
btinz temp1, .copyHeaderLoop |
283 |
btinz temp1, .copyHeaderLoop |
| 284 |
|
284 |
|
| 285 |
loadi ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2 |
285 |
loadi PayloadOffset + ProtoCallFrame::argCountAndCodeOriginValue[protoCallFrame], temp2 |
| 286 |
subi 1, temp2 |
286 |
subi 1, temp2 |
| 287 |
loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3 |
287 |
loadi ProtoCallFrame::paddedArgCount[protoCallFrame], temp3 |
| 288 |
subi 1, temp3 |
288 |
subi 1, temp3 |
|
Lines 321-327
macro doCallToJavaScript(makeCall, doRet
Link Here
|
| 321 |
|
321 |
|
| 322 |
.calleeFramePopped: |
322 |
.calleeFramePopped: |
| 323 |
loadp Callee[cfr], temp3 # VM.topCallFrame |
323 |
loadp Callee[cfr], temp3 # VM.topCallFrame |
| 324 |
loadp ScopeChain[cfr], temp4 |
324 |
loadp ScopeChain + PayloadOffset[cfr], temp4 |
| 325 |
storep temp4, [temp3] |
325 |
storep temp4, [temp3] |
| 326 |
|
326 |
|
| 327 |
doReturn(extraStackSpace) |
327 |
doReturn(extraStackSpace) |
|
Lines 598-604
end
Link Here
|
| 598 |
|
598 |
|
| 599 |
|
599 |
|
| 600 |
macro branchIfException(label) |
600 |
macro branchIfException(label) |
| 601 |
loadp ScopeChain[cfr], t3 |
601 |
loadp ScopeChain + PayloadOffset[cfr], t3 |
| 602 |
andp MarkedBlockMask, t3 |
602 |
andp MarkedBlockMask, t3 |
| 603 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
603 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
| 604 |
bieq VM::m_exception + TagOffset[t3], EmptyValueTag, .noException |
604 |
bieq VM::m_exception + TagOffset[t3], EmptyValueTag, .noException |
|
Lines 2039-2045
_llint_op_catch:
Link Here
|
| 2039 |
# the interpreter's throw trampoline (see _llint_throw_trampoline). |
2039 |
# the interpreter's throw trampoline (see _llint_throw_trampoline). |
| 2040 |
# The throwing code must have known that we were throwing to the interpreter, |
2040 |
# The throwing code must have known that we were throwing to the interpreter, |
| 2041 |
# and have set VM::targetInterpreterPCForThrow. |
2041 |
# and have set VM::targetInterpreterPCForThrow. |
| 2042 |
loadp ScopeChain[cfr], t3 |
2042 |
loadp ScopeChain + PayloadOffset[cfr], t3 |
| 2043 |
andp MarkedBlockMask, t3 |
2043 |
andp MarkedBlockMask, t3 |
| 2044 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
2044 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
| 2045 |
loadp VM::callFrameForThrow[t3], cfr |
2045 |
loadp VM::callFrameForThrow[t3], cfr |
|
Lines 2159-2165
macro nativeCallTrampoline(executableOff
Link Here
|
| 2159 |
andp MarkedBlockMask, t3 |
2159 |
andp MarkedBlockMask, t3 |
| 2160 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
2160 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
| 2161 |
elsif C_LOOP |
2161 |
elsif C_LOOP |
| 2162 |
loadp ScopeChain[cfr], t3 |
2162 |
loadp ScopeChain + PayloadOffset[cfr], t3 |
| 2163 |
andp MarkedBlockMask, t3 |
2163 |
andp MarkedBlockMask, t3 |
| 2164 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
2164 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
| 2165 |
storep cfr, VM::topCallFrame[t3] |
2165 |
storep cfr, VM::topCallFrame[t3] |
|
Lines 2172-2178
macro nativeCallTrampoline(executableOff
Link Here
|
| 2172 |
move t2, cfr |
2172 |
move t2, cfr |
| 2173 |
cloopCallNative executableOffsetToFunction[t1] |
2173 |
cloopCallNative executableOffsetToFunction[t1] |
| 2174 |
restoreReturnAddressBeforeReturn(t3) |
2174 |
restoreReturnAddressBeforeReturn(t3) |
| 2175 |
loadp ScopeChain[cfr], t3 |
2175 |
loadp ScopeChain + PayloadOffset[cfr], t3 |
| 2176 |
andp MarkedBlockMask, t3 |
2176 |
andp MarkedBlockMask, t3 |
| 2177 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
2177 |
loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3 |
| 2178 |
else |
2178 |
else |
|
Lines 2212-2218
macro resolveScope()
Link Here
|
| 2212 |
addi 1, t2 |
2212 |
addi 1, t2 |
| 2213 |
|
2213 |
|
| 2214 |
.resolveScopeAfterActivationCheck: |
2214 |
.resolveScopeAfterActivationCheck: |
| 2215 |
loadp ScopeChain[cfr], t0 |
2215 |
loadp ScopeChain + PayloadOffset[cfr], t0 |
| 2216 |
btiz t2, .resolveScopeLoopEnd |
2216 |
btiz t2, .resolveScopeLoopEnd |
| 2217 |
|
2217 |
|
| 2218 |
.resolveScopeLoop: |
2218 |
.resolveScopeLoop: |
|
Lines 2271-2283
_llint_op_resolve_scope:
Link Here
|
| 2271 |
|
2271 |
|
| 2272 |
macro loadWithStructureCheck(operand, slowPath) |
2272 |
macro loadWithStructureCheck(operand, slowPath) |
| 2273 |
loadisFromInstruction(operand, t0) |
2273 |
loadisFromInstruction(operand, t0) |
| 2274 |
loadp [cfr, t0, 8], t0 |
2274 |
loadp PayloadOffset[cfr, t0, 8], t0 |
| 2275 |
loadpFromInstruction(5, t1) |
2275 |
loadpFromInstruction(5, t1) |
| 2276 |
bpneq JSCell::m_structure[t0], t1, slowPath |
2276 |
bpneq JSCell::m_structure[t0], t1, slowPath |
| 2277 |
end |
2277 |
end |
| 2278 |
|
2278 |
|
| 2279 |
macro getProperty() |
2279 |
macro getProperty() |
| 2280 |
loadisFromInstruction(6, t3) |
2280 |
loadpFromInstruction(6, t3) |
| 2281 |
loadPropertyAtVariableOffset(t3, t0, t1, t2) |
2281 |
loadPropertyAtVariableOffset(t3, t0, t1, t2) |
| 2282 |
valueProfile(t1, t2, 28, t0) |
2282 |
valueProfile(t1, t2, 28, t0) |
| 2283 |
loadisFromInstruction(1, t0) |
2283 |
loadisFromInstruction(1, t0) |
|
Lines 2297-2303
end
Link Here
|
| 2297 |
|
2297 |
|
| 2298 |
macro getClosureVar() |
2298 |
macro getClosureVar() |
| 2299 |
loadp JSVariableObject::m_registers[t0], t0 |
2299 |
loadp JSVariableObject::m_registers[t0], t0 |
| 2300 |
loadisFromInstruction(6, t3) |
2300 |
loadpFromInstruction(6, t3) |
| 2301 |
loadp TagOffset[t0, t3, 8], t1 |
2301 |
loadp TagOffset[t0, t3, 8], t1 |
| 2302 |
loadp PayloadOffset[t0, t3, 8], t2 |
2302 |
loadp PayloadOffset[t0, t3, 8], t2 |
| 2303 |
valueProfile(t1, t2, 28, t0) |
2303 |
valueProfile(t1, t2, 28, t0) |
|
Lines 2356-2362
_llint_op_get_from_scope:
Link Here
|
| 2356 |
macro putProperty() |
2356 |
macro putProperty() |
| 2357 |
loadisFromInstruction(3, t1) |
2357 |
loadisFromInstruction(3, t1) |
| 2358 |
loadConstantOrVariable(t1, t2, t3) |
2358 |
loadConstantOrVariable(t1, t2, t3) |
| 2359 |
loadisFromInstruction(6, t1) |
2359 |
loadpFromInstruction(6, t1) |
| 2360 |
storePropertyAtVariableOffset(t1, t0, t2, t3) |
2360 |
storePropertyAtVariableOffset(t1, t0, t2, t3) |
| 2361 |
end |
2361 |
end |
| 2362 |
|
2362 |
|
|
Lines 2374-2380
macro putClosureVar()
Link Here
|
| 2374 |
loadisFromInstruction(3, t1) |
2374 |
loadisFromInstruction(3, t1) |
| 2375 |
loadConstantOrVariable(t1, t2, t3) |
2375 |
loadConstantOrVariable(t1, t2, t3) |
| 2376 |
loadp JSVariableObject::m_registers[t0], t0 |
2376 |
loadp JSVariableObject::m_registers[t0], t0 |
| 2377 |
loadisFromInstruction(6, t1) |
2377 |
loadpFromInstruction(6, t1) |
| 2378 |
storei t2, TagOffset[t0, t1, 8] |
2378 |
storei t2, TagOffset[t0, t1, 8] |
| 2379 |
storei t3, PayloadOffset[t0, t1, 8] |
2379 |
storei t3, PayloadOffset[t0, t1, 8] |
| 2380 |
end |
2380 |
end |