< prev index next > src/hotspot/share/oops/stackChunkOop.cpp
Print this page
_map(map) {
}
virtual void oops_do(OopClosure* cl) override {
if (_f.is_interpreted_frame()) {
! _f.oops_interpreted_do(cl, nullptr);
} else {
OopMapDo<OopClosure, DerivedOopClosure, IncludeAllValues> visitor(cl, nullptr);
visitor.oops_do(&_f, _map, _f.oop_map());
}
}
_map(map) {
}
virtual void oops_do(OopClosure* cl) override {
if (_f.is_interpreted_frame()) {
! _f.oops_interpreted_do(cl, _map);
} else {
OopMapDo<OopClosure, DerivedOopClosure, IncludeAllValues> visitor(cl, nullptr);
visitor.oops_do(&_f, _map, _f.oop_map());
}
}
}
int stackChunkOopDesc::num_java_frames() const {
int n = 0;
for (StackChunkFrameStream<ChunkFrames::Mixed> f(const_cast<stackChunkOopDesc*>(this)); !f.is_done();
! f.next(SmallRegisterMap::instance())) {
if (!f.is_stub()) {
n += ::num_java_frames(f);
}
}
return n;
}
int stackChunkOopDesc::num_java_frames() const {
int n = 0;
for (StackChunkFrameStream<ChunkFrames::Mixed> f(const_cast<stackChunkOopDesc*>(this)); !f.is_done();
! f.next(SmallRegisterMap::instance_no_args())) {
if (!f.is_stub()) {
n += ::num_java_frames(f);
}
}
return n;
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::Mixed>& f, const RegisterMap* map);
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::Mixed>& f, const RegisterMap* map);
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const RegisterMap* map);
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const RegisterMap* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::Mixed>& f, const SmallRegisterMap* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::Mixed>& f, const SmallRegisterMap* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const SmallRegisterMap* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const SmallRegisterMap* map);
template <typename RegisterMapT>
void stackChunkOopDesc::fix_thawed_frame(const frame& f, const RegisterMapT* map) {
if (!(is_gc_mode() || requires_barriers())) {
return;
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::Mixed>& f, const RegisterMap* map);
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::Mixed>& f, const RegisterMap* map);
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const RegisterMap* map);
template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const RegisterMap* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::Mixed>& f, const SmallRegisterMapNoArgs* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::Mixed>& f, const SmallRegisterMapNoArgs* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const SmallRegisterMapNoArgs* map);
! template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::CompiledOnly>& f, const SmallRegisterMapNoArgs* map);
+ template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Load> (const StackChunkFrameStream<ChunkFrames::Mixed>& f, const SmallRegisterMapWithArgs* map);
+ template void stackChunkOopDesc::do_barriers0<stackChunkOopDesc::BarrierType::Store>(const StackChunkFrameStream<ChunkFrames::Mixed>& f, const SmallRegisterMapWithArgs* map);
template <typename RegisterMapT>
void stackChunkOopDesc::fix_thawed_frame(const frame& f, const RegisterMapT* map) {
if (!(is_gc_mode() || requires_barriers())) {
return;
visitor.oops_do(&f, map, f.oop_map());
}
}
template void stackChunkOopDesc::fix_thawed_frame(const frame& f, const RegisterMap* map);
! template void stackChunkOopDesc::fix_thawed_frame(const frame& f, const SmallRegisterMap* map);
void stackChunkOopDesc::transfer_lockstack(oop* dst, bool requires_barriers) {
const bool requires_gc_barriers = is_gc_mode() || requires_barriers;
const bool requires_uncompress = has_bitmap() && UseCompressedOops;
const auto load_and_clear_obj = [&](intptr_t* at) -> oop {
visitor.oops_do(&f, map, f.oop_map());
}
}
template void stackChunkOopDesc::fix_thawed_frame(const frame& f, const RegisterMap* map);
! template void stackChunkOopDesc::fix_thawed_frame(const frame& f, const SmallRegisterMapNoArgs* map);
+ template void stackChunkOopDesc::fix_thawed_frame(const frame& f, const SmallRegisterMapWithArgs* map);
void stackChunkOopDesc::transfer_lockstack(oop* dst, bool requires_barriers) {
const bool requires_gc_barriers = is_gc_mode() || requires_barriers;
const bool requires_uncompress = has_bitmap() && UseCompressedOops;
const auto load_and_clear_obj = [&](intptr_t* at) -> oop {
bool do_frame(const StackChunkFrameStream<frame_kind>& f, const RegisterMapT* map) {
_sp = f.sp();
_cb = f.cb();
int fsize = f.frame_size() - ((f.is_interpreted() == _callee_interpreted) ? _argsize : 0);
! int num_oops = f.num_oops();
assert(num_oops >= 0, "");
_argsize = f.stack_argsize() + frame::metadata_words_at_top;
_size += fsize;
_num_oops += num_oops;
bool do_frame(const StackChunkFrameStream<frame_kind>& f, const RegisterMapT* map) {
_sp = f.sp();
_cb = f.cb();
int fsize = f.frame_size() - ((f.is_interpreted() == _callee_interpreted) ? _argsize : 0);
! int num_oops = f.num_oops(map);
assert(num_oops >= 0, "");
_argsize = f.stack_argsize() + frame::metadata_words_at_top;
_size += fsize;
_num_oops += num_oops;
< prev index next >