< prev index next >
src/hotspot/share/classfile/compactHashtable.cpp
Print this page
@@ -25,10 +25,11 @@
#include "precompiled.hpp"
#include "jvm.h"
#include "classfile/compactHashtable.inline.hpp"
#include "classfile/javaClasses.hpp"
#include "logging/logMessage.hpp"
+#include "memory/heapShared.inline.hpp"
#include "memory/metadataFactory.hpp"
#include "memory/metaspaceShared.hpp"
#include "oops/compressedOops.inline.hpp"
#include "runtime/vmThread.hpp"
#include "utilities/numberSeq.hpp"
@@ -278,12 +279,13 @@
class CompactHashtable_OopIterator {
OopClosure* const _closure;
public:
CompactHashtable_OopIterator(OopClosure *cl) : _closure(cl) {}
inline void do_value(address base_address, u4 offset) const {
- narrowOop o = (narrowOop)offset;
- _closure->do_oop(&o);
+ narrowOop v = (narrowOop)offset;
+ oop obj = HeapShared::decode_with_archived_oop_encoding_mode(v);
+ _closure->do_oop(&obj);
}
};
template <class T, class N> void CompactHashtable<T, N>::oops_do(OopClosure* cl) {
assert(_type == _string_table || _bucket_count == 0, "sanity");
< prev index next >