RFR(L): 8028468: Add inlining information into ciReplay
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