equal
deleted
inserted
replaced
688 } |
688 } |
689 }; |
689 }; |
690 |
690 |
691 |
691 |
692 int Method::line_number_from_bci(int bci) const { |
692 int Method::line_number_from_bci(int bci) const { |
693 if (bci == SynchronizationEntryBCI) bci = 0; |
|
694 assert(bci == 0 || 0 <= bci && bci < code_size(), "illegal bci"); |
|
695 int best_bci = 0; |
693 int best_bci = 0; |
696 int best_line = -1; |
694 int best_line = -1; |
697 |
695 if (bci == SynchronizationEntryBCI) bci = 0; |
698 if (has_linenumber_table()) { |
696 if (0 <= bci && bci < code_size() && has_linenumber_table()) { |
699 // The line numbers are a short array of 2-tuples [start_pc, line_number]. |
697 // The line numbers are a short array of 2-tuples [start_pc, line_number]. |
700 // Not necessarily sorted and not necessarily one-to-one. |
698 // Not necessarily sorted and not necessarily one-to-one. |
701 CompressedLineNumberReadStream stream(compressed_linenumber_table()); |
699 CompressedLineNumberReadStream stream(compressed_linenumber_table()); |
702 while (stream.read_pair()) { |
700 while (stream.read_pair()) { |
703 if (stream.bci() == bci) { |
701 if (stream.bci() == bci) { |