< prev index next >

src/share/vm/oops/generateOopMap.cpp

Print this page
rev 13015 : imported patch 8180755-remove-bitmap-inline-hpp-include
rev 13016 : [mq]: 8180755-dholmes-review


 420 
 421     fellThrough = jump_targets_do(&bcs, &GenerateOopMap::bb_mark_fct, NULL);
 422 
 423      /* We will also mark successors of jsr's as basic block headers. */
 424     switch (bytecode) {
 425       case Bytecodes::_jsr:
 426         assert(!fellThrough, "should not happen");
 427         bb_mark_fct(this, bci + Bytecodes::length_for(bytecode), NULL);
 428         break;
 429       case Bytecodes::_jsr_w:
 430         assert(!fellThrough, "should not happen");
 431         bb_mark_fct(this, bci + Bytecodes::length_for(bytecode), NULL);
 432         break;
 433     }
 434 
 435     if (possible_gc_point(&bcs))
 436       _gc_points++;
 437   }
 438 }
 439 
 440 inline void GenerateOopMap::set_bbmark_bit(int bci) {
 441   _bb_hdr_bits.at_put(bci, true);
 442 }
 443 
 444 void GenerateOopMap::reachable_basicblock(GenerateOopMap *c, int bci, int *data) {
 445   assert(bci>= 0 && bci < c->method()->code_size(), "index out of bounds");
 446   BasicBlock* bb = c->get_basic_block_at(bci);
 447   if (bb->is_dead()) {
 448     bb->mark_as_alive();
 449     *data = 1; // Mark basicblock as changed
 450   }
 451 }
 452 
 453 
 454 void GenerateOopMap::mark_reachable_code() {
 455   int change = 1; // int to get function pointers to work
 456 
 457   // Mark entry basic block as alive and all exception handlers
 458   _basic_blocks[0].mark_as_alive();
 459   ExceptionTable excps(method());
 460   for(int i = 0; i < excps.length(); i++) {




 420 
 421     fellThrough = jump_targets_do(&bcs, &GenerateOopMap::bb_mark_fct, NULL);
 422 
 423      /* We will also mark successors of jsr's as basic block headers. */
 424     switch (bytecode) {
 425       case Bytecodes::_jsr:
 426         assert(!fellThrough, "should not happen");
 427         bb_mark_fct(this, bci + Bytecodes::length_for(bytecode), NULL);
 428         break;
 429       case Bytecodes::_jsr_w:
 430         assert(!fellThrough, "should not happen");
 431         bb_mark_fct(this, bci + Bytecodes::length_for(bytecode), NULL);
 432         break;
 433     }
 434 
 435     if (possible_gc_point(&bcs))
 436       _gc_points++;
 437   }
 438 }
 439 
 440 void GenerateOopMap::set_bbmark_bit(int bci) {
 441   _bb_hdr_bits.at_put(bci, true);
 442 }
 443 
 444 void GenerateOopMap::reachable_basicblock(GenerateOopMap *c, int bci, int *data) {
 445   assert(bci>= 0 && bci < c->method()->code_size(), "index out of bounds");
 446   BasicBlock* bb = c->get_basic_block_at(bci);
 447   if (bb->is_dead()) {
 448     bb->mark_as_alive();
 449     *data = 1; // Mark basicblock as changed
 450   }
 451 }
 452 
 453 
 454 void GenerateOopMap::mark_reachable_code() {
 455   int change = 1; // int to get function pointers to work
 456 
 457   // Mark entry basic block as alive and all exception handlers
 458   _basic_blocks[0].mark_as_alive();
 459   ExceptionTable excps(method());
 460   for(int i = 0; i < excps.length(); i++) {


< prev index next >