Skip to content

Commit 711d5de

Browse files
committed
Rename KlassID to KlassKind
This follows the upstream change
1 parent 48c5f3e commit 711d5de

File tree

3 files changed

+20
-21
lines changed

3 files changed

+20
-21
lines changed

mmtk/src/abi.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ pub const BITS_IN_LONG: usize = 1 << LOG_BITS_IN_LONG;
2525
#[repr(i32)]
2626
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
2727
#[allow(dead_code)]
28-
pub enum KlassID {
28+
pub enum KlassKind {
2929
Instance,
3030
InstanceRef,
3131
InstanceMirror,
3232
InstanceClassLoader,
3333
InstanceStackChunk,
3434
TypeArray,
3535
ObjArray,
36-
MaxKlassID
36+
Unknown,
3737
}
3838

3939
#[repr(i32)]
@@ -66,7 +66,7 @@ pub struct Klass {
6666
#[cfg(debug_assertions)]
6767
valid: i32,
6868
pub layout_helper: i32,
69-
pub id: KlassID, // _kind
69+
pub kind: KlassKind,
7070
pub modifier_flags: i32,
7171
pub super_check_offset: u32,
7272
pub name: OpaquePointer, // Symbol*
@@ -82,7 +82,7 @@ pub struct Klass {
8282
pub vtable_len: i32,
8383
pub access_flags: i32, // AccessFlags
8484
#[cfg(feature = "jfr")]
85-
pub trace_id: u64, // JFR_ONLY(traceid _trace_id;)
85+
pub trace_id: u64, // JFR_ONLY(traceid _trace_id;)
8686
pub shared_class_flags: u16,
8787
pub archived_mirror_index: i32,
8888
pub padding: i32,
@@ -137,7 +137,7 @@ pub struct InstanceKlass {
137137
pub init_state: u8,
138138
pub reference_type: ReferenceType,
139139
pub misc_flags: u16,
140-
pub init_monitor: OpaquePointer, // Monitor*
140+
pub init_monitor: OpaquePointer, // Monitor*
141141
pub init_thread: OpaquePointer, // Thread*
142142
pub oop_map_cache: OpaquePointer, // OopMapCache*
143143
pub jni_ids: OpaquePointer, // JNIid*

mmtk/src/object_model.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::abi::Oop;
1+
use crate::abi::{KlassKind, Oop};
22
use crate::UPCALLS;
33
use crate::{vm_metadata, OpenJDK};
44
use mmtk::util::alloc::fill_alignment_gap;
@@ -99,9 +99,8 @@ impl<const COMPRESSED: bool> ObjectModel<OpenJDK<COMPRESSED>> for VMObjectModel<
9999

100100
fn is_object_sane(object: ObjectReference) -> bool {
101101
let oop = Oop::from(object);
102-
// It is only valid if klass.id is between 0 and 5 (see KlassID in openjdk/src/hotspot/share/oops/klass.hpp)
103-
// If oop.klass is not a valid pointer, we may segfault here.
104-
let klass_id = oop.klass::<COMPRESSED>().id as i32;
105-
(0..6).contains(&klass_id)
102+
// The KlassKind must be one of the known variants, and cannot be InstanceStackChunk which we don't support.
103+
let kind = oop.klass::<COMPRESSED>().kind;
104+
(kind as i32) < (KlassKind::Unknown as i32) && kind != KlassKind::InstanceStackChunk
106105
}
107106
}

mmtk/src/object_scanning.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -181,42 +181,42 @@ fn oop_iterate_slow<const COMPRESSED: bool, V: SlotVisitor<S<COMPRESSED>>>(
181181

182182
fn oop_iterate<const COMPRESSED: bool>(oop: Oop, closure: &mut impl SlotVisitor<S<COMPRESSED>>) {
183183
let klass = oop.klass::<COMPRESSED>();
184-
let klass_id = klass.id;
184+
let klass_id = klass.kind;
185185
assert!(
186-
klass_id as i32 >= 0 && (klass_id as i32) < KlassID::MaxKlassID as i32,
186+
klass_id as i32 >= 0 && (klass_id as i32) < KlassKind::Unknown as i32,
187187
"Invalid klass-id: {:x} for oop: {:x}",
188188
klass_id as i32,
189189
unsafe { mem::transmute::<Oop, ObjectReference>(oop) }
190190
);
191191
match klass_id {
192-
KlassID::Instance => {
192+
KlassKind::Instance => {
193193
let instance_klass = unsafe { klass.cast::<InstanceKlass>() };
194194
instance_klass.oop_iterate::<COMPRESSED>(oop, closure);
195195
}
196-
KlassID::InstanceClassLoader => {
196+
KlassKind::InstanceClassLoader => {
197197
let instance_klass = unsafe { klass.cast::<InstanceClassLoaderKlass>() };
198198
instance_klass.oop_iterate::<COMPRESSED>(oop, closure);
199199
}
200-
KlassID::InstanceMirror => {
200+
KlassKind::InstanceMirror => {
201201
let instance_klass = unsafe { klass.cast::<InstanceMirrorKlass>() };
202202
instance_klass.oop_iterate::<COMPRESSED>(oop, closure);
203203
}
204-
KlassID::ObjArray => {
204+
KlassKind::ObjArray => {
205205
let array_klass = unsafe { klass.cast::<ObjArrayKlass>() };
206206
array_klass.oop_iterate::<COMPRESSED>(oop, closure);
207207
}
208-
KlassID::TypeArray => {
208+
KlassKind::TypeArray => {
209209
// Skip scanning primitive arrays as they contain no reference fields.
210210
}
211-
KlassID::InstanceRef => {
211+
KlassKind::InstanceRef => {
212212
let instance_klass = unsafe { klass.cast::<InstanceRefKlass>() };
213213
instance_klass.oop_iterate::<COMPRESSED>(oop, closure);
214214
}
215-
KlassID::InstanceStackChunk => {
215+
KlassKind::InstanceStackChunk => {
216216
unreachable!("StackChunkOop not supported!")
217217
}
218-
KlassID::MaxKlassID => {
219-
unreachable!("Invalid KlassID")
218+
KlassKind::Unknown => {
219+
unreachable!("Unknown KlassKind")
220220
}
221221
}
222222
}

0 commit comments

Comments
 (0)