mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-27 23:31:47 +00:00
8379013: Remove some unused code in generateOopMap.cpp
Reviewed-by: matsaave, dholmes
This commit is contained in:
parent
7c8f66c831
commit
eb50630d98
@ -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,
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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) {};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user