3636import org .graalvm .compiler .debug .GraalError ;
3737
3838import java .lang .reflect .Modifier ;
39- import java .util .ArrayList ;
4039
4140import static com .oracle .objectfile .pecoff .cv .CVConstants .CV_AMD64_CL ;
4241import static com .oracle .objectfile .pecoff .cv .CVConstants .CV_AMD64_CX ;
@@ -83,8 +82,6 @@ final class CVSymbolSubsectionBuilder {
8382 private static final short [] javaGP32registers = {CV_AMD64_EDX , CV_AMD64_R8D , CV_AMD64_R9D , CV_AMD64_EDI , CV_AMD64_ESI , CV_AMD64_ECX };
8483 private static final short [] javaGP16registers = {CV_AMD64_DX , CV_AMD64_R8W , CV_AMD64_R9W , CV_AMD64_DI , CV_AMD64_SI , CV_AMD64_CX };
8584 private static final short [] javaGP8registers = {CV_AMD64_DL , CV_AMD64_R8B , CV_AMD64_R9B , CV_AMD64_DIL , CV_AMD64_SIL , CV_AMD64_CL };
86- // private static final short[] javaFP128registers = {CV_AMD64_XMM0, CV_AMD64_XMM1,
87- // CV_AMD64_XMM2, CV_AMD64_XMM3};
8885 private static final short [] javaFP64registers = {CV_AMD64_XMM0L , CV_AMD64_XMM1L , CV_AMD64_XMM2L , CV_AMD64_XMM3L };
8986 private static final short [] javaFP32registers = {CV_AMD64_XMM0_0 , CV_AMD64_XMM1_0 , CV_AMD64_XMM2_0 , CV_AMD64_XMM3_0 };
9087
@@ -174,14 +171,13 @@ private void buildFunction(CompiledMethodEntry compiledEntry) {
174171 /* The name as exposed to the linker. */
175172 final String externalName = primaryRange .getSymbolName ();
176173
177- /* S_PROC32 add function definition. */
174+ /* add function definition. */
178175 final int functionTypeIndex = addTypeRecords (compiledEntry );
179176 final byte funcFlags = 0 ;
180177 CVSymbolSubrecord .CVSymbolGProc32Record proc32 = new CVSymbolSubrecord .CVSymbolGProc32Record (cvDebugInfo , externalName , debuggerName , 0 , 0 , 0 , primaryRange .getHi () - primaryRange .getLo (), 0 ,
181178 0 , functionTypeIndex , (short ) 0 , funcFlags );
182179 addSymbolRecord (proc32 );
183180
184- /* NB: LLVM uses 0x14000. */
185181 final int frameFlags = FRAME_ASYNC_EH + FRAME_LOCAL_BP + FRAME_PARAM_BP ;
186182 addSymbolRecord (new CVSymbolSubrecord .CVSymbolFrameProcRecord (cvDebugInfo , compiledEntry .getFrameSize (), frameFlags ));
187183
@@ -194,18 +190,14 @@ private void buildFunction(CompiledMethodEntry compiledEntry) {
194190 addLineNumberRecords (compiledEntry );
195191 }
196192
197-
198193 void addLocals (CompiledMethodEntry primaryEntry ) {
199194 final Range primaryRange = primaryEntry .getPrimary ();
200195 /* The name as exposed to the linker. */
201196 final String externalName = primaryRange .getSymbolName ();
202197
203198 /* Add register parameters - only valid for the first instruction or two. */
204- // addToSymbolSubsection(new CVSymbolSubrecord.CVSymbolBlock32Record(cvDebugInfo,
205- // externalName));
206199
207200 MethodEntry method = primaryRange .getMethodEntry ();
208- ArrayList <CVSymbolSubrecord > regRelRecords = new ArrayList <>(method .getParamCount () + 1 );
209201 int gpRegisterIndex = 0 ;
210202 int fpRegisterIndex = 0 ;
211203
@@ -219,7 +211,7 @@ void addLocals(CompiledMethodEntry primaryEntry) {
219211 gpRegisterIndex ++;
220212 }
221213
222- /* define function parameters accoording to the calling convention */
214+ /* define function parameters (p1, p2...) according to the calling convention */
223215 for (int i = 0 ; i < method .getParamCount (); i ++) {
224216 final TypeEntry paramType = method .getParamType (i );
225217 final int typeIndex = cvDebugInfo .getCVTypeSection ().addTypeRecords (paramType ).getSequenceNumber ();
@@ -229,19 +221,11 @@ void addLocals(CompiledMethodEntry primaryEntry) {
229221 if (fpRegisterIndex < javaFP64registers .length ) {
230222 final short register = typeIndex == T_REAL64 ? javaFP64registers [fpRegisterIndex ] : javaFP32registers [fpRegisterIndex ];
231223 addSymbolRecord (new CVSymbolSubrecord .CVSymbolLocalRecord (cvDebugInfo , paramName , typeIndex , 1 ));
232- // addSymbolRecord(new CVSymbolSubrecord.CVSymbolRegisterRecord(cvDebugInfo,
233- // paramName, typeIndex, javaFPregisters[fpRegisterIndex]));
234224 addSymbolRecord (new CVSymbolSubrecord .CVSymbolDefRangeRegisterRecord (cvDebugInfo , register , externalName , 0 , 8 ));
235- // addSymbolRecord(new
236- // CVSymbolSubrecord.CVSymbolDefRangeFramepointerRel(cvDebugInfo, "main", 8,
237- // (short) 8, 32));
238225 addSymbolRecord (new CVSymbolSubrecord .CVSymbolDefRangeFramepointerRelFullScope (cvDebugInfo , 0 ));
239- // regRelRecords.add(new
240- // CVSymbolSubrecord.CVSymbolRegRel32Record(cvDebugInfo, paramName,
241- // typeIndex, 0, javaFPregisters[fpRegisterIndex]));
242226 fpRegisterIndex ++;
243227 } else {
244- /* TODO: stack parameter; keep track of stack offset, etc. */
228+ /* TODO: handle stack parameter; keep track of stack offset, etc. */
245229 break ;
246230 }
247231 } else if (paramType .isPrimitive ()) {
@@ -261,49 +245,27 @@ void addLocals(CompiledMethodEntry primaryEntry) {
261245 GraalError .shouldNotReachHere ("Unknown primitive (type" + paramType .getTypeName () + ") size:" + paramType .getSize ());
262246 }
263247 addSymbolRecord (new CVSymbolSubrecord .CVSymbolLocalRecord (cvDebugInfo , paramName , typeIndex , 1 ));
264- // addSymbolRecord(new
265- // CVSymbolSubrecord.CVSymbolRegisterRecord(cvDebugInfo, paramName,
266- // typeIndex, javaGPregisters[gpRegisterIndex]));
267248 addSymbolRecord (new CVSymbolSubrecord .CVSymbolDefRangeRegisterRecord (cvDebugInfo , register , externalName , 0 , 8 ));
268- // addSymbolRecord(new
269- // CVSymbolSubrecord.CVSymbolDefRangeFramepointerRel(cvDebugInfo,
270- // "main", 8, (short) 8, 32));
271249 addSymbolRecord (new CVSymbolSubrecord .CVSymbolDefRangeFramepointerRelFullScope (cvDebugInfo , 8 ));
272- // regRelRecords.add(new
273- // CVSymbolSubrecord.CVSymbolRegRel32Record(cvDebugInfo, paramName,
274- // typeIndex, 0, javaGPregisters[gpRegisterIndex]));
275250 gpRegisterIndex ++;
276251 } else {
277- /* TODO: stack parameter; keep track of stack offset, etc. */
252+ /* TODO: handle stack parameter; keep track of stack offset, etc. */
278253 break ;
279254 }
280255 } else {
281256 /* Java object. */
282257 if (gpRegisterIndex < javaGP64registers .length ) {
283- // int pointerIndex =
284- // cvDebugInfo.getCVTypeSection().getIndexForPointer(paramType);
285- // define as offset from register addSymbolRecord(new
286- // CVSymbolSubrecord.CVSymbolRegRel32Record(cvDebugInfo, paramName,
287- // typeIndex, 0, javaGPregisters[gpRegisterIndex]));
288258 addSymbolRecord (new CVSymbolSubrecord .CVSymbolLocalRecord (cvDebugInfo , paramName , typeIndex , 1 ));
289259 addSymbolRecord (new CVSymbolSubrecord .CVSymbolDefRangeRegisterRecord (cvDebugInfo , javaGP64registers [gpRegisterIndex ], externalName , 0 , 8 ));
290260 addSymbolRecord (new CVSymbolSubrecord .CVSymbolDefRangeFramepointerRelFullScope (cvDebugInfo , 0 ));
291- // regRelRecords.add(new
292- // CVSymbolSubrecord.CVSymbolRegRel32Record(cvDebugInfo, paramName,
293- // typeIndex, 0, javaGPregisters[gpRegisterIndex]));
294261 gpRegisterIndex ++;
295262 } else {
296- // TODO: stack parameter; keep track of stack offset, etc.
263+ /* TODO: handle stack parameter; keep track of stack offset, etc. */
297264 break ;
298265 }
299266 }
300267 }
301- for (CVSymbolSubrecord record : regRelRecords ) {
302- addSymbolRecord (record );
303- }
304268 /* TODO: add entries for stack parameters. */
305- // addToSymbolSubsection(new CVSymbolSubrecord.CVSymbolEndRecord(cvDebugInfo));
306-
307269 /* TODO: add local variables, and their types. */
308270 /* TODO: add block definitions. */
309271 }
0 commit comments