Skip to content

Commit ccf1b86

Browse files
author
duke
committedNov 13, 2023
Automatic merge of jdk:master into master
2 parents 3c60be4 + b41b00a commit ccf1b86

File tree

4 files changed

+25
-34
lines changed

4 files changed

+25
-34
lines changed
 

‎src/java.base/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java

+16-25
Original file line numberDiff line numberDiff line change
@@ -558,29 +558,23 @@ public static AbstractMemorySegmentImpl ofBuffer(Buffer bb) {
558558
} else {
559559
bufferScope = MemorySessionImpl.createHeap(bufferRef(bb));
560560
}
561+
long off = bbAddress + ((long)pos << scaleFactor);
562+
long len = (long)size << scaleFactor;
561563
if (base != null) {
562564
return switch (base) {
563-
case byte[] __ ->
564-
new HeapMemorySegmentImpl.OfByte(bbAddress + (pos << scaleFactor), base, size << scaleFactor, readOnly, bufferScope);
565-
case short[] __ ->
566-
new HeapMemorySegmentImpl.OfShort(bbAddress + (pos << scaleFactor), base, size << scaleFactor, readOnly, bufferScope);
567-
case char[] __ ->
568-
new HeapMemorySegmentImpl.OfChar(bbAddress + (pos << scaleFactor), base, size << scaleFactor, readOnly, bufferScope);
569-
case int[] __ ->
570-
new HeapMemorySegmentImpl.OfInt(bbAddress + (pos << scaleFactor), base, size << scaleFactor, readOnly, bufferScope);
571-
case float[] __ ->
572-
new HeapMemorySegmentImpl.OfFloat(bbAddress + (pos << scaleFactor), base, size << scaleFactor, readOnly, bufferScope);
573-
case long[] __ ->
574-
new HeapMemorySegmentImpl.OfLong(bbAddress + (pos << scaleFactor), base, size << scaleFactor, readOnly, bufferScope);
575-
case double[] __ ->
576-
new HeapMemorySegmentImpl.OfDouble(bbAddress + (pos << scaleFactor), base, size << scaleFactor, readOnly, bufferScope);
577-
default -> throw new AssertionError("Cannot get here");
565+
case byte[] _ -> new HeapMemorySegmentImpl.OfByte(off, base, len, readOnly, bufferScope);
566+
case short[] _ -> new HeapMemorySegmentImpl.OfShort(off, base, len, readOnly, bufferScope);
567+
case char[] _ -> new HeapMemorySegmentImpl.OfChar(off, base, len, readOnly, bufferScope);
568+
case int[] _ -> new HeapMemorySegmentImpl.OfInt(off, base, len, readOnly, bufferScope);
569+
case float[] _ -> new HeapMemorySegmentImpl.OfFloat(off, base, len, readOnly, bufferScope);
570+
case long[] _ -> new HeapMemorySegmentImpl.OfLong(off, base, len, readOnly, bufferScope);
571+
case double[] _ -> new HeapMemorySegmentImpl.OfDouble(off, base, len, readOnly, bufferScope);
572+
default -> throw new AssertionError("Cannot get here");
578573
};
579574
} else if (unmapper == null) {
580-
return new NativeMemorySegmentImpl(bbAddress + (pos << scaleFactor), size << scaleFactor, readOnly, bufferScope);
575+
return new NativeMemorySegmentImpl(off, len, readOnly, bufferScope);
581576
} else {
582-
// we can ignore scale factor here, a mapped buffer is always a byte buffer, so scaleFactor == 0.
583-
return new MappedMemorySegmentImpl(bbAddress + pos, unmapper, size, readOnly, bufferScope);
577+
return new MappedMemorySegmentImpl(off, unmapper, len, readOnly, bufferScope);
584578
}
585579
}
586580

@@ -721,13 +715,10 @@ public static long mismatch(MemorySegment srcSegment, long srcFromOffset, long s
721715

722716
private static int getScaleFactor(Buffer buffer) {
723717
return switch (buffer) {
724-
case ByteBuffer __ -> 0;
725-
case CharBuffer __ -> 1;
726-
case ShortBuffer __ -> 1;
727-
case IntBuffer __ -> 2;
728-
case FloatBuffer __ -> 2;
729-
case LongBuffer __ -> 3;
730-
case DoubleBuffer __ -> 3;
718+
case ByteBuffer _ -> 0;
719+
case CharBuffer _, ShortBuffer _ -> 1;
720+
case IntBuffer _, FloatBuffer _ -> 2;
721+
case LongBuffer _, DoubleBuffer _ -> 3;
731722
};
732723
}
733724

‎src/java.base/share/classes/jdk/internal/foreign/Utils.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -296,13 +296,13 @@ public record BaseAndScale(int base, long scale) {
296296

297297
public static BaseAndScale of(Object array) {
298298
return switch (array) {
299-
case byte[] __ -> BaseAndScale.BYTE;
300-
case char[] __ -> BaseAndScale.CHAR;
301-
case short[] __ -> BaseAndScale.SHORT;
302-
case int[] __ -> BaseAndScale.INT;
303-
case float[] __ -> BaseAndScale.FLOAT;
304-
case long[] __ -> BaseAndScale.LONG;
305-
case double[] __ -> BaseAndScale.DOUBLE;
299+
case byte[] _ -> BaseAndScale.BYTE;
300+
case char[] _ -> BaseAndScale.CHAR;
301+
case short[] _ -> BaseAndScale.SHORT;
302+
case int[] _ -> BaseAndScale.INT;
303+
case float[] _ -> BaseAndScale.FLOAT;
304+
case long[] _ -> BaseAndScale.LONG;
305+
case double[] _ -> BaseAndScale.DOUBLE;
306306
default -> throw new IllegalArgumentException("Not a supported array class: " + array.getClass().getSimpleName());
307307
};
308308
}

‎src/java.base/share/classes/jdk/internal/foreign/abi/fallback/FallbackLinker.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ private static void writeValue(Object arg, MemoryLayout layout, MemorySegment ar
254254
acquireCallback.accept(addrArg);
255255
argSeg.set(al, 0, addrArg);
256256
}
257-
case GroupLayout __ ->
257+
case GroupLayout _ ->
258258
MemorySegment.copy((MemorySegment) arg, 0, argSeg, 0, argSeg.byteSize()); // by-value struct
259259
case null, default -> {
260260
assert layout == null;

‎src/java.base/share/classes/jdk/internal/foreign/abi/x64/sysv/TypeClass.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ private static void groupByEightBytes(MemoryLayout layout,
220220
}
221221
}
222222
}
223-
case PaddingLayout __ -> {
223+
case PaddingLayout _ -> {
224224
}
225225
case SequenceLayout seq -> {
226226
MemoryLayout elem = seq.elementLayout();

0 commit comments

Comments
 (0)
Failed to load comments.