comparison src/share/vm/c1/c1_IR.cpp @ 2007:5ddfcf4b079e

7003554: (tiered) assert(is_null_object() || handle() != NULL) failed: cannot embed null pointer Summary: C1 with profiling doesn't check whether the MDO has been really allocated, which can silently fail if the perm gen is full. The solution is to check if the allocation failed and bailout out of inlining or compilation. Reviewed-by: kvn, never
author iveresov
date Thu, 02 Dec 2010 17:21:12 -0800
parents f95d63e2154a
children 701a83c86f28
comparison
equal deleted inserted replaced
2006:bbefa3ca1543 2007:5ddfcf4b079e
502 502
503 init_visited(); 503 init_visited();
504 count_edges(start_block, NULL); 504 count_edges(start_block, NULL);
505 505
506 if (compilation()->is_profiling()) { 506 if (compilation()->is_profiling()) {
507 compilation()->method()->method_data()->set_compilation_stats(_num_loops, _num_blocks); 507 ciMethod *method = compilation()->method();
508 if (!method->is_accessor()) {
509 ciMethodData* md = method->method_data_or_null();
510 assert(md != NULL, "Sanity");
511 md->set_compilation_stats(_num_loops, _num_blocks);
512 }
508 } 513 }
509 514
510 if (_num_loops > 0) { 515 if (_num_loops > 0) {
511 mark_loops(); 516 mark_loops();
512 clear_non_natural_loops(start_block); 517 clear_non_natural_loops(start_block);