8379013: Remove some unused code in generateOopMap.cpp

Reviewed-by: matsaave, dholmes
This commit is contained in:
Coleen Phillimore 2026-03-04 13:57:22 +00:00
parent 7c8f66c831
commit eb50630d98
3 changed files with 8 additions and 111 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -78,15 +78,10 @@ class OopMapForCacheEntry: public GenerateOopMap {
int _stack_top;
virtual bool report_results() const { return false; }
virtual bool possible_gc_point (BytecodeStream *bcs);
virtual void fill_stackmap_prolog (int nof_gc_points);
virtual void fill_stackmap_epilog ();
virtual void fill_stackmap_for_opcodes (BytecodeStream *bcs,
CellTypeState* vars,
CellTypeState* stack,
int stack_top);
virtual void fill_init_vars (GrowableArray<intptr_t> *init_vars);
public:
OopMapForCacheEntry(const methodHandle& method, int bci, OopMapCacheEntry *entry);
@ -119,27 +114,6 @@ bool OopMapForCacheEntry::compute_map(Thread* current) {
return true;
}
bool OopMapForCacheEntry::possible_gc_point(BytecodeStream *bcs) {
return false; // We are not reporting any result. We call result_for_basicblock directly
}
void OopMapForCacheEntry::fill_stackmap_prolog(int nof_gc_points) {
// Do nothing
}
void OopMapForCacheEntry::fill_stackmap_epilog() {
// Do nothing
}
void OopMapForCacheEntry::fill_init_vars(GrowableArray<intptr_t> *init_vars) {
// Do nothing
}
void OopMapForCacheEntry::fill_stackmap_for_opcodes(BytecodeStream *bcs,
CellTypeState* vars,
CellTypeState* stack,

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -391,7 +391,6 @@ void CellTypeState::print(outputStream *os) {
//
void GenerateOopMap::initialize_bb() {
_gc_points = 0;
_bb_count = 0;
_bb_hdr_bits.reinitialize(method()->code_size());
}
@ -409,7 +408,7 @@ void GenerateOopMap::bb_mark_fct(GenerateOopMap *c, int bci, int *data) {
}
void GenerateOopMap::mark_bbheaders_and_count_gc_points() {
void GenerateOopMap::mark_bbheaders() {
initialize_bb();
bool fellThrough = false; // False to get first BB marked.
@ -445,9 +444,6 @@ void GenerateOopMap::mark_bbheaders_and_count_gc_points() {
default:
break;
}
if (possible_gc_point(&bcs))
_gc_points++;
}
}
@ -1051,9 +1047,6 @@ void GenerateOopMap::setup_method_entry_state() {
// Initialize CellState type of arguments
methodsig_to_effect(method()->signature(), method()->is_static(), vars());
// If some references must be pre-assigned to null, then set that up
initialize_vars();
// This is the start state
merge_state_into_bb(&_basic_blocks[0]);
@ -1077,27 +1070,6 @@ void GenerateOopMap::update_basic_blocks(int bci, int delta,
}
}
//
// Initvars handling
//
void GenerateOopMap::initialize_vars() {
for (int k = 0; k < _init_vars->length(); k++)
_state[_init_vars->at(k)] = CellTypeState::make_slot_ref(k);
}
void GenerateOopMap::add_to_ref_init_set(int localNo) {
if (TraceNewOopMapGeneration)
tty->print_cr("Added init vars: %d", localNo);
// Is it already in the set?
if (_init_vars->contains(localNo) )
return;
_init_vars->append(localNo);
}
//
// Interpreration code
//
@ -1672,7 +1644,6 @@ void GenerateOopMap::ppload(CellTypeState *out, int loc_no) {
if (vcts.can_be_uninit()) {
// It is a ref-uninit conflict (at least). If there are other
// problems, we'll get them in the next round
add_to_ref_init_set(loc_no);
vcts = out1;
} else {
// It wasn't a ref-uninit conflict. So must be a
@ -2065,7 +2036,6 @@ GenerateOopMap::GenerateOopMap(const methodHandle& method) {
// We have to initialize all variables here, that can be queried directly
_method = method;
_max_locals=0;
_init_vars = nullptr;
#ifndef PRODUCT
// If we are doing a detailed trace, include the regular trace information.
@ -2095,7 +2065,6 @@ bool GenerateOopMap::compute_map(Thread* current) {
_max_stack = method()->max_stack();
_has_exceptions = (method()->has_exception_handler());
_nof_refval_conflicts = 0;
_init_vars = new GrowableArray<intptr_t>(5); // There are seldom more than 5 init_vars
_report_result = false;
_report_result_for_send = false;
_new_var_map = nullptr;
@ -2119,8 +2088,6 @@ bool GenerateOopMap::compute_map(Thread* current) {
// if no code - do nothing
// compiler needs info
if (method()->code_size() == 0 || _max_locals + method()->max_stack() == 0) {
fill_stackmap_prolog(0);
fill_stackmap_epilog();
return true;
}
// Step 1: Compute all jump targets and their return value
@ -2129,7 +2096,7 @@ bool GenerateOopMap::compute_map(Thread* current) {
// Step 2: Find all basic blocks and count GC points
if (!_got_error)
mark_bbheaders_and_count_gc_points();
mark_bbheaders();
// Step 3: Calculate stack maps
if (!_got_error)
@ -2186,9 +2153,6 @@ void GenerateOopMap::report_result() {
// We now want to report the result of the parse
_report_result = true;
// Prolog code
fill_stackmap_prolog(_gc_points);
// Mark everything changed, then do one interpretation pass.
for (int i = 0; i<_bb_count; i++) {
if (_basic_blocks[i].is_reachable()) {
@ -2197,14 +2161,6 @@ void GenerateOopMap::report_result() {
}
}
// Note: Since we are skipping dead-code when we are reporting results, then
// the no. of encountered gc-points might be fewer than the previously number
// we have counted. (dead-code is a pain - it should be removed before we get here)
fill_stackmap_epilog();
// Report initvars
fill_init_vars(_init_vars);
_report_result = false;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -348,17 +348,15 @@ class GenerateOopMap {
// Basicblock info
BasicBlock * _basic_blocks; // Array of basicblock info
int _gc_points;
int _bb_count;
ResourceBitMap _bb_hdr_bits;
// Basicblocks methods
void initialize_bb ();
void mark_bbheaders_and_count_gc_points();
void mark_bbheaders();
bool is_bb_header (int bci) const {
return _bb_hdr_bits.at(bci);
}
int gc_points () const { return _gc_points; }
int bb_count () const { return _bb_count; }
void set_bbmark_bit (int bci);
BasicBlock * get_basic_block_at (int bci) const;
@ -419,12 +417,6 @@ class GenerateOopMap {
void report_result ();
// Initvars
GrowableArray<intptr_t> * _init_vars;
void initialize_vars ();
void add_to_ref_init_set (int localNo);
// Conflicts rewrite logic
bool _conflict; // True, if a conflict occurred during interpretation
int _nof_refval_conflicts; // No. of conflicts that require rewrites
@ -450,7 +442,7 @@ class GenerateOopMap {
int binsToHold (int no) { return ((no+(BitsPerWord-1))/BitsPerWord); }
char *state_vec_to_string (CellTypeState* vec, int len);
// Helper method. Can be used in subclasses to fx. calculate gc_points. If the current instruction
// Helper method. If the current instruction
// is a control transfer, then calls the jmpFct all possible destinations.
void ret_jump_targets_do (BytecodeStream *bcs, jmpFct_t jmpFct, int varNo,int *data);
bool jump_targets_do (BytecodeStream *bcs, jmpFct_t jmpFct, int *data);
@ -480,14 +472,7 @@ class GenerateOopMap {
bool monitor_safe() { return _monitor_safe; }
// Specialization methods. Intended use:
// - possible_gc_point must return true for every bci for which the stackmaps must be returned
// - fill_stackmap_prolog is called just before the result is reported. The arguments tells the estimated
// number of gc points
// - fill_stackmap_for_opcodes is called once for each bytecode index in order (0...code_length-1)
// - fill_stackmap_epilog is called after all results has been reported. Note: Since the algorithm does not report
// stackmaps for deadcode, fewer gc_points might have been encountered than assumed during the epilog. It is the
// responsibility of the subclass to count the correct number.
// - fill_init_vars are called once with the result of the init_vars computation
//
// All these methods are used during a call to: compute_map. Note: Non of the return results are valid
// after compute_map returns, since all values are allocated as resource objects.
@ -495,15 +480,10 @@ class GenerateOopMap {
// All virtual method must be implemented in subclasses
virtual bool allow_rewrites () const { return false; }
virtual bool report_results () const { return true; }
virtual bool report_init_vars () const { return true; }
virtual bool possible_gc_point (BytecodeStream *bcs) { ShouldNotReachHere(); return false; }
virtual void fill_stackmap_prolog (int nof_gc_points) { ShouldNotReachHere(); }
virtual void fill_stackmap_epilog () { ShouldNotReachHere(); }
virtual void fill_stackmap_for_opcodes (BytecodeStream *bcs,
CellTypeState* vars,
CellTypeState* stack,
int stackTop) { ShouldNotReachHere(); }
virtual void fill_init_vars (GrowableArray<intptr_t> *init_vars) { ShouldNotReachHere();; }
};
//
@ -513,19 +493,12 @@ class GenerateOopMap {
class ResolveOopMapConflicts: public GenerateOopMap {
private:
bool _must_clear_locals;
virtual bool report_results() const { return false; }
virtual bool report_init_vars() const { return true; }
virtual bool allow_rewrites() const { return true; }
virtual bool possible_gc_point (BytecodeStream *bcs) { return false; }
virtual void fill_stackmap_prolog (int nof_gc_points) {}
virtual void fill_stackmap_epilog () {}
virtual void fill_stackmap_for_opcodes (BytecodeStream *bcs,
CellTypeState* vars,
CellTypeState* stack,
int stack_top) {}
virtual void fill_init_vars (GrowableArray<intptr_t> *init_vars) { _must_clear_locals = init_vars->length() > 0; }
#ifndef PRODUCT
// Statistics
@ -535,10 +508,9 @@ class ResolveOopMapConflicts: public GenerateOopMap {
#endif
public:
ResolveOopMapConflicts(const methodHandle& method) : GenerateOopMap(method) { _must_clear_locals = false; };
ResolveOopMapConflicts(const methodHandle& method) : GenerateOopMap(method) { }
methodHandle do_potential_rewrite(TRAPS);
bool must_clear_locals() const { return _must_clear_locals; }
};
@ -549,16 +521,11 @@ class GeneratePairingInfo: public GenerateOopMap {
private:
virtual bool report_results() const { return false; }
virtual bool report_init_vars() const { return false; }
virtual bool allow_rewrites() const { return false; }
virtual bool possible_gc_point (BytecodeStream *bcs) { return false; }
virtual void fill_stackmap_prolog (int nof_gc_points) {}
virtual void fill_stackmap_epilog () {}
virtual void fill_stackmap_for_opcodes (BytecodeStream *bcs,
CellTypeState* vars,
CellTypeState* stack,
int stack_top) {}
virtual void fill_init_vars (GrowableArray<intptr_t> *init_vars) {}
public:
GeneratePairingInfo(const methodHandle& method) : GenerateOopMap(method) {};