MCPcopy Index your code
hub / github.com/Shopify/go-lua / traceExecution

Method traceExecution

vm.go:219–251  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

217}
218
219func (l *State) traceExecution() {
220 callInfo := l.callInfo
221 mask := l.hookMask
222 countHook := mask&MaskCount != 0 && l.hookCount == 0
223 if countHook {
224 l.resetHookCount()
225 }
226 if callInfo.isCallStatus(callStatusHookYielded) {
227 callInfo.clearCallStatus(callStatusHookYielded)
228 return
229 }
230 if countHook {
231 l.hook(HookCount, -1)
232 }
233 if mask&MaskLine != 0 {
234 p := l.prototype(callInfo)
235 npc := callInfo.savedPC - 1
236 newline := p.lineInfo[npc]
237 if npc == 0 || callInfo.savedPC <= l.oldPC || newline != p.lineInfo[l.oldPC-1] {
238 l.hook(HookLine, int(newline))
239 }
240 }
241 l.oldPC = callInfo.savedPC
242 if l.shouldYield {
243 if countHook {
244 l.hookCount = 1
245 }
246 callInfo.savedPC--
247 callInfo.setCallStatus(callStatusHookYielded)
248 callInfo.function = l.top - 1
249 panic("Not implemented - use goroutines to emulate yield")
250 }
251}
252
253type engine struct {
254 frame []value

Callers 3

executeFunctionTableMethod · 0.95
executeSwitchMethod · 0.95
hookMethod · 0.80

Calls 6

resetHookCountMethod · 0.95
hookMethod · 0.95
prototypeMethod · 0.95
isCallStatusMethod · 0.80
clearCallStatusMethod · 0.80
setCallStatusMethod · 0.80

Tested by

no test coverage detected