Skip to content

Commit 31f10f3

Browse files
committed
Fixed bugs after rebasing.
1 parent d4aa077 commit 31f10f3

File tree

6 files changed

+19
-14
lines changed

6 files changed

+19
-14
lines changed

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#include "oops/method.inline.hpp"
5252
#include "oops/objArrayKlass.inline.hpp"
5353
#include "oops/typeArrayOop.inline.hpp"
54+
#include "oops/layoutKind.hpp"
5455
#include "prims/jvmtiExport.hpp"
5556
#include "prims/methodHandles.hpp"
5657
#include "prims/nativeLookup.hpp"
@@ -719,8 +720,14 @@ C2V_VMENTRY_NULL(jobject, getFlatArrayType, (JNIEnv* env, jobject, jchar type_ch
719720

720721
if(klass->is_inline_klass()){
721722
InlineKlass* inline_klass = InlineKlass::cast(klass);
723+
ArrayKlass* flat_array_klass;
724+
if(inline_klass->flat_array()){
725+
flat_array_klass = (ArrayKlass*)inline_klass->flat_array_klass(LayoutKind::NON_ATOMIC_FLAT, CHECK_NULL);
726+
}else{
727+
flat_array_klass = (ArrayKlass*)inline_klass->null_free_reference_array(CHECK_NULL);
728+
}
722729
// Request a flat array, but we might not actually get it...either way "null-free" are the aaload/aastore semantics
723-
ArrayKlass* flat_array_klass = (ArrayKlass*)inline_klass->value_array_klass(CHECK_NULL);
730+
//ArrayKlass* flat_array_klass = (ArrayKlass*)inline_klass->flat_array_klass(LayoutKind::NON_ATOMIC_FLAT, CHECK_NULL);
724731
array_klass = flat_array_klass;
725732
assert(array_klass->is_null_free_array_klass(), "Expect a null-free array class here");
726733
//assert(array_klass->is_flatArray_klass, "Expect a flat array class here");

src/hotspot/share/jvmci/jvmciEnv.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1714,7 +1714,7 @@ BasicType JVMCIEnv::typeCharToBasicType(jchar ch, JVMCI_TRAPS) {
17141714
case 'J': return T_LONG;
17151715
case 'D': return T_DOUBLE;
17161716
case 'A': return T_OBJECT;
1717-
case 'Q': return T_PRIMITIVE_OBJECT;
1717+
case 'Q': return T_OBJECT;
17181718
case '-': return T_ILLEGAL;
17191719
default:
17201720
JVMCI_ERROR_(T_ILLEGAL, "unexpected type char: %c", ch);

src/hotspot/share/jvmci/jvmciRuntime.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,14 +445,13 @@ JRT_ENTRY(void, JVMCIRuntime::load_unknown_inline(JavaThread* current, flatArray
445445
assert(array->klass()->is_flatArray_klass(), "should not be called");
446446

447447
assert(array->length() > 0 && index < array->length(), "already checked");
448-
flatArrayHandle vah(current, array);
449-
oop obj = flatArrayOopDesc::value_alloc_copy_from_index(vah, index, CHECK);
448+
oop obj = array->read_value_from_flat_array(index, THREAD);
450449
current->set_vm_result(obj);
451450
JRT_END
452451

453-
JRT_LEAF(void, JVMCIRuntime::store_unknown_inline(JavaThread* current, flatArrayOopDesc* array, jint index, oopDesc* value))
452+
JRT_ENTRY(void, JVMCIRuntime::store_unknown_inline(JavaThread* current, flatArrayOopDesc* array, jint index, oopDesc* value))
454453
assert(array->klass()->is_flatArray_klass(), "should not be called");
455-
array->value_copy_to_index(value, index);
454+
array->write_value_to_flat_array(value, index, THREAD);
456455
JRT_END
457456

458457
// Object.notifyAll() fast path, caller does slow path

src/hotspot/share/jvmci/vmStructs_jvmci.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,8 @@
268268
nonstatic_field(Klass, _super, Klass*) \
269269
nonstatic_field(Klass, _super_check_offset, juint) \
270270
nonstatic_field(InstanceKlass, _adr_inlineklass_fixed_block, InlineKlassFixedBlock const *) \
271-
nonstatic_field(InlineKlassFixedBlock, _first_field_offset, int) \
272-
nonstatic_field(InlineKlassFixedBlock, _internal_null_marker_offset, int) \
271+
nonstatic_field(InlineKlassFixedBlock, _payload_offset, int) \
272+
nonstatic_field(InlineKlassFixedBlock, _null_marker_offset, int) \
273273
nonstatic_field(FieldInfo, _null_marker_offset, u4) \
274274
volatile_nonstatic_field(Klass, _subklass, Klass*) \
275275
nonstatic_field(Klass, _layout_helper, jint) \
@@ -499,7 +499,6 @@
499499
declare_constant(FieldInfo::FieldFlags::_ff_flat) \
500500
declare_constant(FieldInfo::FieldFlags::_ff_null_free_inline_type) \
501501
declare_constant(FieldInfo::FieldFlags::_ff_null_marker) \
502-
declare_constant(FieldInfo::FieldFlags::_ff_internal_null_marker) \
503502
declare_preprocessor_constant("JVM_ACC_VARARGS", JVM_ACC_VARARGS) \
504503
declare_preprocessor_constant("JVM_ACC_BRIDGE", JVM_ACC_BRIDGE) \
505504
declare_preprocessor_constant("JVM_ACC_ANNOTATION", JVM_ACC_ANNOTATION) \
@@ -841,7 +840,7 @@
841840
declare_constant(markWord::inline_type_pattern) \
842841
declare_constant(markWord::inline_type_mask_in_place) \
843842
declare_constant(markWord::inline_type_bit_in_place) \
844-
declare_constant(markWord::flat_array_pattern) \
843+
declare_constant(markWord::null_free_flat_array_pattern) \
845844
declare_constant(markWord::flat_array_mask_in_place) \
846845
declare_constant(markWord::null_free_array_pattern) \
847846
declare_constant(markWord::null_free_array_mask_in_place) \

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,8 @@ private boolean hasNullMarker() {
834834
}
835835

836836
private boolean hasInternalNullMarker() {
837-
return (getInternalFlags() & (1 << config().jvmFieldFlagInternalNullMarkerShift)) != 0;
837+
return true;
838+
//return (getInternalFlags() & (1 << config().jvmFieldFlagInternalNullMarkerShift)) != 0;
838839
}
839840

840841
// private int internalNullMarkerOffset() {

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfig.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ String getHostArchitectureName() {
7777
final int nextSiblingOffset = getFieldOffset("Klass::_next_sibling", Integer.class, "Klass*");
7878
final int superCheckOffsetOffset = getFieldOffset("Klass::_super_check_offset", Integer.class, "juint");
7979
final int secondarySuperCacheOffset = getFieldOffset("Klass::_secondary_super_cache", Integer.class, "Klass*");
80-
final int firstFieldOffset = getFieldOffset("InlineKlassFixedBlock::_first_field_offset", Integer.class, "int");
81-
final int internalNullMarkerOffset = getFieldOffset("InlineKlassFixedBlock::_internal_null_marker_offset", Integer.class, "int");
80+
final int firstFieldOffset = getFieldOffset("InlineKlassFixedBlock::_payload_offset", Integer.class, "int");
8281
final int nullMarkerOffset = getFieldOffset("FieldInfo::_null_marker_offset", Integer.class, "u4");
8382
final int inlineKlassFixedBlockAdr = getFieldOffset("InstanceKlass::_adr_inlineklass_fixed_block", Integer.class, "InlineKlassFixedBlock const *");
8483

@@ -129,7 +128,7 @@ String getHostArchitectureName() {
129128
final int jvmFieldFlagFlatShift = getConstant("FieldInfo::FieldFlags::_ff_flat", Integer.class);
130129
final int jvmFieldFlagNullFreeInlineTypeShift = getConstant("FieldInfo::FieldFlags::_ff_null_free_inline_type", Integer.class);
131130
final int jvmFieldFlagNullMarkerShift = getConstant("FieldInfo::FieldFlags::_ff_null_marker", Integer.class);
132-
final int jvmFieldFlagInternalNullMarkerShift = getConstant("FieldInfo::FieldFlags::_ff_internal_null_marker", Integer.class);
131+
//final int jvmFieldFlagInternalNullMarkerShift = getConstant("FieldInfo::FieldFlags::_ff_internal_null_marker", Integer.class);
133132

134133
final int jvmAccIsCloneableFast = getConstant("KlassFlags::_misc_is_cloneable_fast", Integer.class);
135134

0 commit comments

Comments
 (0)