MCPcopy Create free account
hub / github.com/ZDoom/Raze / Alloc

Method Alloc

source/common/scripting/vm/vmframe.cpp:160–233  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158}
159
160void VMScriptFunction::Alloc(int numops, int numkonstd, int numkonstf, int numkonsts, int numkonsta, int numlinenumbers)
161{
162 assert(Code == NULL);
163 assert(numops > 0);
164 assert(numkonstd >= 0 && numkonstd <= 65535);
165 assert(numkonstf >= 0 && numkonstf <= 65535);
166 assert(numkonsts >= 0 && numkonsts <= 65535);
167 assert(numkonsta >= 0 && numkonsta <= 65535);
168 assert(numlinenumbers >= 0 && numlinenumbers <= 65535);
169 void *mem = ClassDataAllocator.Alloc(numops * sizeof(VMOP) +
170 numkonstd * sizeof(int) +
171 numkonstf * sizeof(double) +
172 numkonsts * sizeof(FString) +
173 numkonsta * sizeof(FVoidObj) +
174 numlinenumbers * sizeof(FStatementInfo));
175 Code = (VMOP *)mem;
176 mem = (void *)((VMOP *)mem + numops);
177
178 if (numlinenumbers > 0)
179 {
180 LineInfo = (FStatementInfo*)mem;
181 LineInfoCount = numlinenumbers;
182 mem = LineInfo + numlinenumbers;
183 }
184 else
185 {
186 LineInfo = nullptr;
187 LineInfoCount = 0;
188 }
189 if (numkonstd > 0)
190 {
191 KonstD = (int *)mem;
192 mem = (void *)((int *)mem + numkonstd);
193 }
194 else
195 {
196 KonstD = NULL;
197 }
198 if (numkonstf > 0)
199 {
200 KonstF = (double *)mem;
201 mem = (void *)((double *)mem + numkonstf);
202 }
203 else
204 {
205 KonstF = NULL;
206 }
207 if (numkonsts > 0)
208 {
209 KonstS = (FString *)mem;
210 for (int i = 0; i < numkonsts; ++i)
211 {
212 ::new(&KonstS[i]) FString;
213 }
214 mem = (void *)((FString *)mem + numkonsts);
215 }
216 else
217 {

Callers 12

GetStringConstMethod · 0.45
CompileArraysMethod · 0.45
NodeFromSymbolConstMethod · 0.45
CompileFunctionMethod · 0.45
ParseSingleFileFunction · 0.45
InitNodeMethod · 0.45
operator newMethod · 0.45
MakeFunctionMethod · 0.45
EmitCallMethod · 0.45
operator newMethod · 0.45
CreateRegUseMethod · 0.45
operator newMethod · 0.45

Calls 1

InitFreeSpaceMethod · 0.80

Tested by

no test coverage detected