equal
deleted
inserted
replaced
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); |