| 186 | } |
| 187 | |
| 188 | func (l *State) pushGoFrame(function, resultCount int) { |
| 189 | ci := l.callInfo.next |
| 190 | if ci == nil { |
| 191 | ci = &callInfo{previous: l.callInfo, goCallInfo: &goCallInfo{}} |
| 192 | l.callInfo.next = ci |
| 193 | } else if ci.goCallInfo == nil { |
| 194 | ci.goCallInfo = &goCallInfo{} |
| 195 | ci.luaCallInfo = nil |
| 196 | } |
| 197 | ci.function = function |
| 198 | ci.top = l.top + MinStack |
| 199 | // TODO l.assert(ci.top <= l.stackLast) |
| 200 | ci.resultCount = resultCount |
| 201 | ci.callStatus = 0 |
| 202 | l.callInfo = ci |
| 203 | } |
| 204 | |
| 205 | func (ci *luaCallInfo) step() instruction { |
| 206 | i := ci.code[ci.savedPC] |