MCPcopy Create free account
hub / github.com/Hiro420/NikkeTools / process

Method process

UnLuac/src/unluac/decompile/VariableFinder.java:110–404  ·  view source on GitHub ↗
(Decompiler d, int args, int registers)

Source from the content-addressed store, hash-verified

108 }
109
110 public static Declaration[] process(Decompiler d, int args, int registers) {
111 Code code = d.code;
112 RegisterStates states = new RegisterStates(registers, code.length());
113 boolean[] skip = new boolean[code.length()];
114 for(int line = 1; line <= code.length(); line++) {
115 states.nextLine(line);
116 if(skip[line - 1]) continue;
117 int A = code.A(line);
118 int B = code.B(line);
119 int C = code.C(line);
120 switch(code.op(line)) {
121 case MOVE:
122 states.setWritten(A, line);
123 states.setRead(B, line);
124 if(A < B) {
125 states.setLocalWrite(A, A, line);
126 } else if(B < A) {
127 states.setLocalRead(B, line);
128 }
129 break;
130 case LOADK:
131 case LOADBOOL:
132 case GETUPVAL:
133 case GETGLOBAL:
134 case NEWTABLE:
135 case NEWTABLE50:
136 states.setWritten(A, line);
137 break;
138 case LOADNIL: {
139 int maximum = B;
140 int register = code.A(line);
141 while(register <= maximum) {
142 states.setWritten(register, line);
143 register++;
144 }
145 break;
146 }
147 case LOADNIL52: {
148 int maximum = A + B;
149 int register = code.A(line);
150 while(register <= maximum) {
151 states.setWritten(register, line);
152 register++;
153 }
154 break;
155 }
156 case GETTABLE:
157 states.setWritten(A, line);
158 if(!isConstantReference(d, code.B(line))) states.setRead(B, line);
159 if(!isConstantReference(d, code.C(line))) states.setRead(C, line);
160 break;
161 case SETGLOBAL:
162 case SETUPVAL:
163 states.setRead(A, line);
164 break;
165 case SETTABLE:
166 case ADD:
167 case SUB:

Callers 1

DecompilerMethod · 0.95

Calls 15

lengthMethod · 0.95
nextLineMethod · 0.95
AMethod · 0.95
BMethod · 0.95
CMethod · 0.95
opMethod · 0.95
setWrittenMethod · 0.95
setReadMethod · 0.95
setLocalWriteMethod · 0.95
setLocalReadMethod · 0.95
isConstantReferenceMethod · 0.95
getMethod · 0.95

Tested by

no test coverage detected