Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/compile.cpp @ 65:99269dbf4ba8
6674588: (Escape Analysis) Improve Escape Analysis code
Summary: Current EA code has several problems which have to be fixed.
Reviewed-by: jrose, sgoldman
author | kvn |
---|---|
date | Fri, 14 Mar 2008 15:26:33 -0700 |
parents | b789bcaf2dd9 |
children | c7c777385a15 |
comparison
equal
deleted
inserted
replaced
64:b8f5ba577b02 | 65:99269dbf4ba8 |
---|---|
405 buf.stubs()->initialize_shared_locs(&locs_buf[lsize], lsize); | 405 buf.stubs()->initialize_shared_locs(&locs_buf[lsize], lsize); |
406 n->emit(buf, this->regalloc()); | 406 n->emit(buf, this->regalloc()); |
407 return buf.code_size(); | 407 return buf.code_size(); |
408 } | 408 } |
409 | 409 |
410 void Compile::record_for_escape_analysis(Node* n) { | |
411 if (_congraph != NULL) | |
412 _congraph->record_for_escape_analysis(n); | |
413 } | |
414 | |
415 | 410 |
416 // ============================================================================ | 411 // ============================================================================ |
417 //------------------------------Compile standard------------------------------- | 412 //------------------------------Compile standard------------------------------- |
418 debug_only( int Compile::_debug_idx = 100000; ) | 413 debug_only( int Compile::_debug_idx = 100000; ) |
419 | 414 |
492 uint estimated_size = method()->code_size()*4+64; | 487 uint estimated_size = method()->code_size()*4+64; |
493 estimated_size = (estimated_size < MINIMUM_NODE_HASH ? MINIMUM_NODE_HASH : estimated_size); | 488 estimated_size = (estimated_size < MINIMUM_NODE_HASH ? MINIMUM_NODE_HASH : estimated_size); |
494 PhaseGVN gvn(node_arena(), estimated_size); | 489 PhaseGVN gvn(node_arena(), estimated_size); |
495 set_initial_gvn(&gvn); | 490 set_initial_gvn(&gvn); |
496 | 491 |
497 if (_do_escape_analysis) | |
498 _congraph = new ConnectionGraph(this); | |
499 | |
500 { // Scope for timing the parser | 492 { // Scope for timing the parser |
501 TracePhase t3("parse", &_t_parser, true); | 493 TracePhase t3("parse", &_t_parser, true); |
502 | 494 |
503 // Put top into the hash table ASAP. | 495 // Put top into the hash table ASAP. |
504 initial_gvn()->transform_no_reclaim(top()); | 496 initial_gvn()->transform_no_reclaim(top()); |
579 | 571 |
580 if (failing()) return; | 572 if (failing()) return; |
581 NOT_PRODUCT( verify_graph_edges(); ) | 573 NOT_PRODUCT( verify_graph_edges(); ) |
582 | 574 |
583 // Perform escape analysis | 575 // Perform escape analysis |
576 if (_do_escape_analysis) | |
577 _congraph = new ConnectionGraph(this); | |
584 if (_congraph != NULL) { | 578 if (_congraph != NULL) { |
585 NOT_PRODUCT( TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, TimeCompiler); ) | 579 NOT_PRODUCT( TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, TimeCompiler); ) |
586 _congraph->compute_escape(); | 580 _congraph->compute_escape(); |
587 if (failing()) return; | 581 if (failing()) return; |
588 | 582 |