hotspot/src/share/vm/ci/ciMethod.cpp
changeset 38177 b0c9cb06506b
parent 38144 0976c0c5c5d3
child 38719 133bf85c3f36
equal deleted inserted replaced
38175:4e2bff1a5467 38177:b0c9cb06506b
   441 // along different paths.  In that case the local must be dead when
   441 // along different paths.  In that case the local must be dead when
   442 // those paths merge. Since the interpreter's viewpoint is used when
   442 // those paths merge. Since the interpreter's viewpoint is used when
   443 // gc'ing an interpreter frame we need to use its viewpoint  during
   443 // gc'ing an interpreter frame we need to use its viewpoint  during
   444 // OSR when loading the locals.
   444 // OSR when loading the locals.
   445 
   445 
   446 BitMap ciMethod::live_local_oops_at_bci(int bci) {
   446 ResourceBitMap ciMethod::live_local_oops_at_bci(int bci) {
   447   VM_ENTRY_MARK;
   447   VM_ENTRY_MARK;
   448   InterpreterOopMap mask;
   448   InterpreterOopMap mask;
   449   OopMapCache::compute_one_oop_map(get_Method(), bci, &mask);
   449   OopMapCache::compute_one_oop_map(get_Method(), bci, &mask);
   450   int mask_size = max_locals();
   450   int mask_size = max_locals();
   451   BitMap result(mask_size);
   451   ResourceBitMap result(mask_size);
   452   result.clear();
   452   result.clear();
   453   int i;
   453   int i;
   454   for (i = 0; i < mask_size ; i++ ) {
   454   for (i = 0; i < mask_size ; i++ ) {
   455     if (mask.is_oop(i)) result.set_bit(i);
   455     if (mask.is_oop(i)) result.set_bit(i);
   456   }
   456   }
   461 #ifdef COMPILER1
   461 #ifdef COMPILER1
   462 // ------------------------------------------------------------------
   462 // ------------------------------------------------------------------
   463 // ciMethod::bci_block_start
   463 // ciMethod::bci_block_start
   464 //
   464 //
   465 // Marks all bcis where a new basic block starts
   465 // Marks all bcis where a new basic block starts
   466 const BitMap ciMethod::bci_block_start() {
   466 const BitMap& ciMethod::bci_block_start() {
   467   check_is_loaded();
   467   check_is_loaded();
   468   if (_liveness == NULL) {
   468   if (_liveness == NULL) {
   469     // Create the liveness analyzer.
   469     // Create the liveness analyzer.
   470     Arena* arena = CURRENT_ENV->arena();
   470     Arena* arena = CURRENT_ENV->arena();
   471     _liveness = new (arena) MethodLiveness(arena, this);
   471     _liveness = new (arena) MethodLiveness(arena, this);