RFR(L): 8028468: Add inlining information into ciReplay (original) (raw)

Roland Westrelin roland.westrelin at oracle.com
Tue Jan 7 02:39:54 PST 2014


http://cr.openjdk.java.net/~kvn/8028468/webrev/

Should the agent/doc/cireplay.html be updated? Is there another doc on how to use the replay support somewhere (wiki)?

ciReplay.cpp typos: // Use pointer because we may need to retirn inline records

// Replay Inlinig

vmError.cpp typo: // Do not overwite file during replay

compile.hpp Shouldn’t _replay_inline_data be private with an accessor?

1183 // Dump inlining replay data to the stream. 1184 void dump_inline_data(outputStream* out); 1185 void* _replay_inline_data;

ciReplay.cpp Why was this changed? Why was it there in the first place? 1052 // Make sure we don't run with background compilation 1053 // BackgroundCompilation = false;

Existing fields in class CompileReplay that don’t start with _ make the code confusing:

char* bufptr; char* buffer; int buffer_length; int buffer_end; int line_no;

etc. Maybe it would be worthwhile to fix that as part of this change?

Can buffer be a growableArray? If not factor this code and other similar code in a method? 437 if (pos + 1 >= buffer_length) { 438 int newl = buffer_length * 2; 439 char* newb = NEW_RESOURCE_ARRAY(char, newl); 440 memcpy(newb, buffer, pos); 441 buffer = newb; 442 buffer_length = newl; 443 }

Same for: 445 // null terminate it, reset the pointer and process the line 446 buffer[pos] = '\0'; 447 buffer_end = pos++; 448 bufptr = buffer;

Shouldn’t the fields below be private? 422 ciKlass* _iklass; 423 Method* _imethod; 424 int _entry_bci; 425 int _comp_level;

I think ciInlineRecord* find_ciInlineRecord(Method* method, int bci, int inline_depth) should be implemented by calling: static ciInlineRecord* find_ciInlineRecord(GrowableArray<ciInlineRecord*>* records, Method* method, int bci, int inline_depth) to avoid duplication of code.

Roland.



More information about the hotspot-compiler-dev mailing list