Skip to content

Commit e2196f8

Browse files
committed
8253162: Make frame::oops_do const
Reviewed-by: kbarrett, coleenp, pliden
1 parent 300b851 commit e2196f8

File tree

2 files changed

+35
-36
lines changed

2 files changed

+35
-36
lines changed

src/hotspot/share/runtime/frame.cpp

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -672,13 +672,13 @@ void frame::print_on_error(outputStream* st, char* buf, int buflen, bool verbose
672672
*/
673673
class InterpreterFrameClosure : public OffsetClosure {
674674
private:
675-
frame* _fr;
676-
OopClosure* _f;
677-
int _max_locals;
678-
int _max_stack;
675+
const frame* _fr;
676+
OopClosure* _f;
677+
int _max_locals;
678+
int _max_stack;
679679

680680
public:
681-
InterpreterFrameClosure(frame* fr, int max_locals, int max_stack,
681+
InterpreterFrameClosure(const frame* fr, int max_locals, int max_stack,
682682
OopClosure* f) {
683683
_fr = fr;
684684
_max_locals = max_locals;
@@ -709,16 +709,15 @@ class InterpreterFrameClosure : public OffsetClosure {
709709
}
710710

711711
int max_locals() { return _max_locals; }
712-
frame* fr() { return _fr; }
713712
};
714713

715714

716715
class InterpretedArgumentOopFinder: public SignatureIterator {
717716
private:
718-
OopClosure* _f; // Closure to invoke
719-
int _offset; // TOS-relative offset, decremented with each argument
720-
bool _has_receiver; // true if the callee has a receiver
721-
frame* _fr;
717+
OopClosure* _f; // Closure to invoke
718+
int _offset; // TOS-relative offset, decremented with each argument
719+
bool _has_receiver; // true if the callee has a receiver
720+
const frame* _fr;
722721

723722
friend class SignatureIterator; // so do_parameters_on can call do_type
724723
void do_type(BasicType type) {
@@ -733,7 +732,7 @@ class InterpretedArgumentOopFinder: public SignatureIterator {
733732
}
734733

735734
public:
736-
InterpretedArgumentOopFinder(Symbol* signature, bool has_receiver, frame* fr, OopClosure* f) : SignatureIterator(signature), _has_receiver(has_receiver) {
735+
InterpretedArgumentOopFinder(Symbol* signature, bool has_receiver, const frame* fr, OopClosure* f) : SignatureIterator(signature), _has_receiver(has_receiver) {
737736
// compute size of arguments
738737
int args_size = ArgumentSizeComputer(signature).size() + (has_receiver ? 1 : 0);
739738
assert(!fr->is_interpreted_frame() ||
@@ -769,10 +768,10 @@ class InterpretedArgumentOopFinder: public SignatureIterator {
769768
// visits and GC's all the arguments in entry frame
770769
class EntryFrameOopFinder: public SignatureIterator {
771770
private:
772-
bool _is_static;
773-
int _offset;
774-
frame* _fr;
775-
OopClosure* _f;
771+
bool _is_static;
772+
int _offset;
773+
const frame* _fr;
774+
OopClosure* _f;
776775

777776
friend class SignatureIterator; // so do_parameters_on can call do_type
778777
void do_type(BasicType type) {
@@ -789,7 +788,7 @@ class EntryFrameOopFinder: public SignatureIterator {
789788
}
790789

791790
public:
792-
EntryFrameOopFinder(frame* frame, Symbol* signature, bool is_static) : SignatureIterator(signature) {
791+
EntryFrameOopFinder(const frame* frame, Symbol* signature, bool is_static) : SignatureIterator(signature) {
793792
_f = NULL; // will be set later
794793
_fr = frame;
795794
_is_static = is_static;
@@ -811,7 +810,7 @@ oop* frame::interpreter_callee_receiver_addr(Symbol* signature) {
811810
}
812811

813812

814-
void frame::oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache) {
813+
void frame::oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache) const {
815814
assert(is_interpreted_frame(), "Not an interpreted frame");
816815
assert(map != NULL, "map must be set");
817816
Thread *thread = Thread::current();
@@ -892,12 +891,12 @@ void frame::oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool quer
892891
}
893892

894893

895-
void frame::oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) {
894+
void frame::oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const {
896895
InterpretedArgumentOopFinder finder(signature, has_receiver, this, f);
897896
finder.oops_do();
898897
}
899898

900-
void frame::oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* reg_map) {
899+
void frame::oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* reg_map) const {
901900
assert(_cb != NULL, "sanity check");
902901
if (_cb->oop_maps() != NULL) {
903902
OopMapSet::oops_do(this, reg_map, f);
@@ -974,7 +973,7 @@ class CompiledArgumentOopFinder: public SignatureIterator {
974973
};
975974

976975
void frame::oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix,
977-
const RegisterMap* reg_map, OopClosure* f) {
976+
const RegisterMap* reg_map, OopClosure* f) const {
978977
ResourceMark rm;
979978
CompiledArgumentOopFinder finder(signature, has_receiver, has_appendix, f, *this, reg_map);
980979
finder.oops_do();
@@ -1023,7 +1022,7 @@ oop frame::get_native_receiver() {
10231022
return owner;
10241023
}
10251024

1026-
void frame::oops_entry_do(OopClosure* f, const RegisterMap* map) {
1025+
void frame::oops_entry_do(OopClosure* f, const RegisterMap* map) const {
10271026
assert(map != NULL, "map must be set");
10281027
if (map->include_argument_oops()) {
10291028
// must collect argument oops, as nobody else is doing it
@@ -1037,7 +1036,7 @@ void frame::oops_entry_do(OopClosure* f, const RegisterMap* map) {
10371036
}
10381037

10391038

1040-
void frame::oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) {
1039+
void frame::oops_do_internal(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map, bool use_interpreter_oop_map_cache) const {
10411040
#ifndef PRODUCT
10421041
// simulate GC crash here to dump java thread in error report
10431042
if (CrashGCForDumpingJavaThread) {
@@ -1056,15 +1055,15 @@ void frame::oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* ma
10561055
}
10571056
}
10581057

1059-
void frame::nmethods_do(CodeBlobClosure* cf) {
1058+
void frame::nmethods_do(CodeBlobClosure* cf) const {
10601059
if (_cb != NULL && _cb->is_nmethod()) {
10611060
cf->do_code_blob(_cb);
10621061
}
10631062
}
10641063

10651064

10661065
// Call f closure on the interpreted Method*s in the stack.
1067-
void frame::metadata_do(MetadataClosure* f) {
1066+
void frame::metadata_do(MetadataClosure* f) const {
10681067
ResourceMark rm;
10691068
if (is_interpreted_frame()) {
10701069
Method* m = this->interpreter_frame_method();
@@ -1073,7 +1072,7 @@ void frame::metadata_do(MetadataClosure* f) {
10731072
}
10741073
}
10751074

1076-
void frame::verify(const RegisterMap* map) {
1075+
void frame::verify(const RegisterMap* map) const {
10771076
// for now make sure receiver type is correct
10781077
if (is_interpreted_frame()) {
10791078
Method* method = interpreter_frame_method();
@@ -1087,7 +1086,7 @@ void frame::verify(const RegisterMap* map) {
10871086
#if COMPILER2_OR_JVMCI
10881087
assert(DerivedPointerTable::is_empty(), "must be empty before verify");
10891088
#endif
1090-
oops_do_internal(&VerifyOopClosure::verify_oop, NULL, (RegisterMap*)map, false);
1089+
oops_do_internal(&VerifyOopClosure::verify_oop, NULL, map, false);
10911090
}
10921091

10931092

src/hotspot/share/runtime/frame.hpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -359,27 +359,27 @@ class frame {
359359
oop* oopmapreg_to_location(VMReg reg, const RegisterMap* reg_map) const;
360360

361361
// Oops-do's
362-
void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f);
363-
void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true);
362+
void oops_compiled_arguments_do(Symbol* signature, bool has_receiver, bool has_appendix, const RegisterMap* reg_map, OopClosure* f) const;
363+
void oops_interpreted_do(OopClosure* f, const RegisterMap* map, bool query_oop_map_cache = true) const;
364364

365365
private:
366-
void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f);
366+
void oops_interpreted_arguments_do(Symbol* signature, bool has_receiver, OopClosure* f) const;
367367

368368
// Iteration of oops
369-
void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
370-
void oops_entry_do(OopClosure* f, const RegisterMap* map);
371-
void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
369+
void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map, bool use_interpreter_oop_map_cache) const;
370+
void oops_entry_do(OopClosure* f, const RegisterMap* map) const;
371+
void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map) const;
372372
int adjust_offset(Method* method, int index); // helper for above fn
373373
public:
374374
// Memory management
375-
void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
376-
void nmethods_do(CodeBlobClosure* cf);
375+
void oops_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map) const { oops_do_internal(f, cf, map, true); }
376+
void nmethods_do(CodeBlobClosure* cf) const;
377377

378378
// RedefineClasses support for finding live interpreted methods on the stack
379-
void metadata_do(MetadataClosure* f);
379+
void metadata_do(MetadataClosure* f) const;
380380

381381
// Verification
382-
void verify(const RegisterMap* map);
382+
void verify(const RegisterMap* map) const;
383383
static bool verify_return_pc(address x);
384384
// Usage:
385385
// assert(frame::verify_return_pc(return_address), "must be a return pc");

0 commit comments

Comments
 (0)