RFR(L): 8028468: Add inlining information into ciReplay (original) (raw)
Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Jan 7 20:09:45 PST 2014
- Previous message: RFR(L): 8028468: Add inlining information into ciReplay
- Next message: RFR(L): 8028468: Add inlining information into ciReplay
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 1/7/14 4:49 AM, Roland Westrelin wrote:
One more question:
When can the code below cause an early return from processcompile()? Can that really happen?
When replaying inlining it will skip OSR compilation if you dumped inlining for normal compilation before (entry_bci != _entry_bci). And reverse.
Dumping inlining from C2 and run application with Tiered. We need to skip C1 compilations (when we have replay inlining in C1) (comp_level != _comp_level).
You can specify several DumpInline commands for different methods and one output inline data file so it will contains several lines of inlining data for different methods. We need to find only related data for current compilation.
thanks, Vladimir
493 if (entrybci != entrybci || complevel != complevel) { 494 return; 495 } 496 const char* iklassname = imethod->methodholder()->name()->asutf8(); 497 const char* imethodname = imethod->name()->asutf8(); 498 const char* isignature = imethod->signature()->asutf8(); 499 const char* klassname = method->methodholder()->name()->asutf8(); 500 const char* methodname = method->name()->asutf8(); 501 const char* signature = method->signature()->asutf8(); 502 if (strcmp(iklassname, klassname) != 0 || 503 strcmp(imethodname, methodname) != 0 || 504 strcmp(isignature, signature) != 0) { 505 return; 506 } 507 } Roland. On Jan 7, 2014, at 11:39 AM, Roland Westrelin <roland.westrelin at oracle.com> wrote:
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 replayinlinedata be private with an accessor? 1183 // Dump inlining replay data to the stream. 1184 void dumpinlinedata(outputStream* out); 1185 void* replayinlinedata; 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 bufferlength; int bufferend; int lineno; 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 >= bufferlength) { 438 int newl = bufferlength * 2; 439 char* newb = NEWRESOURCEARRAY(char, newl); 440 memcpy(newb, buffer, pos); 441 buffer = newb; 442 bufferlength = newl; 443 } Same for: 445 // null terminate it, reset the pointer and process the line 446 buffer[pos] = '\0'; 447 bufferend = pos++; 448 bufptr = buffer; Shouldn’t the fields below be private? 422 ciKlass* iklass; 423 Method* imethod; 424 int entrybci; 425 int complevel; I think ciInlineRecord* findciInlineRecord(Method* method, int bci, int inlinedepth) should be implemented by calling: static ciInlineRecord* findciInlineRecord(GrowableArray<ciInlineRecord*>* records, Method* method, int bci, int inlinedepth) to avoid duplication of code. Roland.
- Previous message: RFR(L): 8028468: Add inlining information into ciReplay
- Next message: RFR(L): 8028468: Add inlining information into ciReplay
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the hotspot-compiler-dev mailing list