Mercurial > hg > graal-compiler
comparison src/share/vm/code/nmethod.cpp @ 994:753cf9794df9
6885169: merge of 4957990 and 6863023 causes conflict on do_nmethods
Summary: After mechanically merging changes, some by-hand adjustments are needed.
Reviewed-by: ysr
author | jrose |
---|---|
date | Wed, 23 Sep 2009 23:57:44 -0700 |
parents | 54b3b351d6f9 |
children | 032260830071 |
comparison
equal
deleted
inserted
replaced
993:54b3b351d6f9 | 994:753cf9794df9 |
---|---|
1556 // This method is called twice during GC -- once while | 1556 // This method is called twice during GC -- once while |
1557 // tracing the "active" nmethods on thread stacks during | 1557 // tracing the "active" nmethods on thread stacks during |
1558 // the (strong) marking phase, and then again when walking | 1558 // the (strong) marking phase, and then again when walking |
1559 // the code cache contents during the weak roots processing | 1559 // the code cache contents during the weak roots processing |
1560 // phase. The two uses are distinguished by means of the | 1560 // phase. The two uses are distinguished by means of the |
1561 // do_nmethods() method in the closure "f" below -- which | 1561 // 'do_strong_roots_only' flag, which is true in the first |
1562 // answers "yes" in the first case, and "no" in the second | |
1563 // case. We want to walk the weak roots in the nmethod | 1562 // case. We want to walk the weak roots in the nmethod |
1564 // only in the second case. The weak roots in the nmethod | 1563 // only in the second case. The weak roots in the nmethod |
1565 // are the oops in the ExceptionCache and the InlineCache | 1564 // are the oops in the ExceptionCache and the InlineCache |
1566 // oops. | 1565 // oops. |
1567 void nmethod::oops_do(OopClosure* f) { | 1566 void nmethod::oops_do(OopClosure* f, bool do_strong_roots_only) { |
1568 // make sure the oops ready to receive visitors | 1567 // make sure the oops ready to receive visitors |
1569 assert(!is_zombie() && !is_unloaded(), | 1568 assert(!is_zombie() && !is_unloaded(), |
1570 "should not call follow on zombie or unloaded nmethod"); | 1569 "should not call follow on zombie or unloaded nmethod"); |
1571 | 1570 |
1572 // If the method is not entrant or zombie then a JMP is plastered over the | 1571 // If the method is not entrant or zombie then a JMP is plastered over the |
1580 // (See comment above.) | 1579 // (See comment above.) |
1581 } | 1580 } |
1582 | 1581 |
1583 // Compiled code | 1582 // Compiled code |
1584 f->do_oop((oop*) &_method); | 1583 f->do_oop((oop*) &_method); |
1585 if (!f->do_nmethods()) { | 1584 if (!do_strong_roots_only) { |
1586 // weak roots processing phase -- update ExceptionCache oops | 1585 // weak roots processing phase -- update ExceptionCache oops |
1587 ExceptionCache* ec = exception_cache(); | 1586 ExceptionCache* ec = exception_cache(); |
1588 while(ec != NULL) { | 1587 while(ec != NULL) { |
1589 f->do_oop((oop*)ec->exception_type_addr()); | 1588 f->do_oop((oop*)ec->exception_type_addr()); |
1590 ec = ec->next(); | 1589 ec = ec->next(); |