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

Method executeSwitch

vm.go:971–1338  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

969}
970
971func (l *State) executeSwitch() {
972 ci := l.callInfo
973 frame, closure, constants := newFrame(l, ci)
974 for {
975 if l.hookMask&(MaskLine|MaskCount) != 0 {
976 if l.hookCount--; l.hookCount == 0 || l.hookMask&MaskLine != 0 {
977 l.traceExecution()
978 frame = ci.frame
979 }
980 }
981 switch i := ci.step(); i.opCode() {
982 case opMove:
983 frame[i.a()] = frame[i.b()]
984 case opLoadConstant:
985 frame[i.a()] = constants[i.bx()]
986 case opLoadConstantEx:
987 frame[i.a()] = constants[expectNext(ci, opExtraArg).ax()]
988 case opLoadBool:
989 frame[i.a()] = i.b() != 0
990 if i.c() != 0 {
991 ci.skip()
992 }
993 case opLoadNil:
994 a, b := i.a(), i.b()
995 clear(frame[a : a+b+1])
996 case opGetUpValue:
997 frame[i.a()] = closure.upValue(i.b())
998 case opGetTableUp:
999 tmp := l.tableAt(closure.upValue(i.b()), k(i.c(), constants, frame))
1000 frame = ci.frame
1001 frame[i.a()] = tmp
1002 case opGetTable:
1003 tmp := l.tableAt(frame[i.b()], k(i.c(), constants, frame))
1004 frame = ci.frame
1005 frame[i.a()] = tmp
1006 case opSetTableUp:
1007 l.setTableAt(closure.upValue(i.a()), k(i.b(), constants, frame), k(i.c(), constants, frame))
1008 frame = ci.frame
1009 case opSetUpValue:
1010 closure.setUpValue(i.b(), frame[i.a()])
1011 case opSetTable:
1012 l.setTableAt(frame[i.a()], k(i.b(), constants, frame), k(i.c(), constants, frame))
1013 frame = ci.frame
1014 case opNewTable:
1015 a := i.a()
1016 if b, c := float8(i.b()), float8(i.c()); b != 0 || c != 0 {
1017 frame[a] = newTableWithSize(intFromFloat8(b), intFromFloat8(c))
1018 } else {
1019 frame[a] = newTable()
1020 }
1021 clear(frame[a+1:])
1022 case opSelf:
1023 a, t := i.a(), frame[i.b()]
1024 tmp := l.tableAt(t, k(i.c(), constants, frame))
1025 frame = ci.frame
1026 frame[a+1], frame[a] = t, tmp
1027 case opAdd:
1028 b := k(i.b(), constants, frame)

Callers

nothing calls this directly

Calls 15

traceExecutionMethod · 0.95
tableAtMethod · 0.95
setTableAtMethod · 0.95
arithMethod · 0.95
objectLengthMethod · 0.95
concatMethod · 0.95
closeMethod · 0.95
equalObjectsMethod · 0.95
lessThanMethod · 0.95
lessOrEqualMethod · 0.95
preCallMethod · 0.95
postCallMethod · 0.95

Tested by

no test coverage detected