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

Method CheckConflict

code.go:976–998  ·  view source on GitHub ↗
(t *assignmentTarget, e exprDesc)

Source from the content-addressed store, hash-verified

974}
975
976func (f *function) CheckConflict(t *assignmentTarget, e exprDesc) {
977 extra, conflict := f.freeRegisterCount, false
978 for ; t != nil; t = t.previous {
979 if t.kind == kindIndexed {
980 if t.tableType == e.kind && t.table == e.info {
981 conflict = true
982 t.table, t.tableType = extra, kindLocal
983 }
984 if e.kind == kindLocal && t.index == e.info {
985 conflict = true
986 t.index = extra
987 }
988 }
989 }
990 if conflict {
991 if e.kind == kindLocal {
992 f.EncodeABC(opMove, extra, e.info, 0)
993 } else {
994 f.EncodeABC(opGetUpValue, extra, e.info, 0)
995 }
996 f.ReserveRegisters(1)
997 }
998}
999
1000func (f *function) AdjustAssignment(variableCount, expressionCount int, e exprDesc) {
1001 if extra := variableCount - expressionCount; e.hasMultipleReturns() {

Callers 1

assignmentMethod · 0.80

Calls 2

EncodeABCMethod · 0.95
ReserveRegistersMethod · 0.95

Tested by

no test coverage detected