Skip to content

Commit fe49df8

Browse files
Merge tag 'jdk-23+36' into ola/24.1_jdk-23+36
Added tag jdk-23+36 for changeset 6f582f4
2 parents de58752 + 6f582f4 commit fe49df8

File tree

11 files changed

+50
-37
lines changed

11 files changed

+50
-37
lines changed

make/conf/version-numbers.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ DEFAULT_VERSION_CLASSFILE_MINOR=0
3939
DEFAULT_VERSION_DOCS_API_SINCE=11
4040
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="22 23"
4141
DEFAULT_JDK_SOURCE_TARGET_VERSION=23
42-
DEFAULT_PROMOTED_VERSION_PRE=ea
42+
DEFAULT_PROMOTED_VERSION_PRE=

src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ package java.nio;
2929

3030
import java.lang.foreign.MemorySegment;
3131
import java.util.Objects;
32-
import jdk.internal.util.ArraysSupport;
3332

3433
/**
3534
#if[rw]
@@ -706,9 +705,6 @@ class Heap$Type$Buffer$RW$
706705
addr, segment)));
707706
}
708707

709-
public int hashCode() {
710-
return ArraysSupport.hashCode(hb, ix(position()), remaining(), 1);
711-
}
712708

713709
#end[byte]
714710

@@ -737,9 +733,6 @@ class Heap$Type$Buffer$RW$
737733
offset, segment);
738734
}
739735

740-
public int hashCode() {
741-
return ArraysSupport.hashCode(hb, ix(position()), remaining(), 1);
742-
}
743736
#end[char]
744737

745738

src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2305,13 +2305,14 @@ compiler.err.this.as.identifier=Ab Release 8 ist "this" nur als Parametername f
23052305

23062306
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=receiver-Parameter nicht für Konstruktor der obersten Klasse anwendbar
23072307

2308-
# TODO 308: make a better error message
2308+
# 0: fragment, 1: symbol, 2: annotated-type
2309+
compiler.err.type.annotation.inadmissible={0} wurde hier nicht erwartet\n(Um einen qualifizierten Typ zu annotieren, schreiben Sie {1}.{2})
2310+
23092311
# 0: annotation
2310-
compiler.err.cant.type.annotate.scoping.1=Scoping-Konstrukt kann nicht mit type-use-Annotation versehen werden: {0}
2312+
compiler.misc.type.annotation.1=Typannotation {0} ist
23112313

2312-
# TODO 308: make a better error message
23132314
# 0: list of annotation
2314-
compiler.err.cant.type.annotate.scoping=Scoping-Konstrukt kann nicht mit type-use-Annotationen versehen werden: {0}
2315+
compiler.misc.type.annotation=Typannotationen {0} sind
23152316

23162317
# 0: type, 1: type
23172318
compiler.err.incorrect.receiver.name=Der Empfängername stimmt nicht mit dem einschließenden Klassentyp überein\nErforderlich: {0}\nErmittelt: {1}

src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2305,13 +2305,14 @@ compiler.err.this.as.identifier=リリース8から''this''は受信タイプの
23052305

23062306
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=受取り側パラメータは最上位レベル・クラスのコンストラクタに適用できません
23072307

2308-
# TODO 308: make a better error message
2308+
# 0: fragment, 1: symbol, 2: annotated-type
2309+
compiler.err.type.annotation.inadmissible=ここでは{0}は予期されていません\n(修飾されたタイプに注釈を付けるには、{1}.{2}と記述します)
2310+
23092311
# 0: annotation
2310-
compiler.err.cant.type.annotate.scoping.1=スコープ・コンストラクトを型使用注釈で注釈付けすることはできません: {0}
2312+
compiler.misc.type.annotation.1=タイプ注釈{0}
23112313

2312-
# TODO 308: make a better error message
23132314
# 0: list of annotation
2314-
compiler.err.cant.type.annotate.scoping=スコープ・コンストラクトを型使用注釈で注釈付けすることはできません: {0}
2315+
compiler.misc.type.annotation=タイプ注釈{0}
23152316

23162317
# 0: type, 1: type
23172318
compiler.err.incorrect.receiver.name=受取り側の名前が、包含するクラス・タイプと一致しません\n必須: {0}\n検出: {1}

src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ compiler.err.abstract.cant.be.instantiated={0}是抽象的; 无法实例化
9393
compiler.err.abstract.meth.cant.have.body=抽象方法不能有主体
9494

9595
# 0: kind name, 1: symbol
96-
compiler.err.already.annotated={0} {1}已进行注释
96+
compiler.err.already.annotated={0} {1} 已进行批注
9797

9898
# 0: kind name, 1: symbol, 2: kind name, 3: symbol
9999
compiler.err.already.defined=已在{2} {3}中定义了{0} {1}
@@ -642,7 +642,7 @@ compiler.err.malformed.fp.lit=浮点文字的格式错误
642642

643643
compiler.err.method.does.not.override.superclass=方法不会覆盖或实现超类型的方法
644644

645-
compiler.err.static.methods.cannot.be.annotated.with.override=不能使用 @Override 注释静态方法
645+
compiler.err.static.methods.cannot.be.annotated.with.override=不能使用 @Override 对静态方法进行批注
646646

647647
compiler.err.missing.meth.body.or.decl.abstract=缺少方法主体, 或声明抽象
648648

@@ -1638,7 +1638,7 @@ compiler.warn.unchecked.varargs.non.reifiable.type=参数化 vararg 类型{0}的
16381638
# 0: symbol
16391639
compiler.warn.varargs.unsafe.use.varargs.param=Varargs 方法可能导致来自不可具体化 varargs 参数 {0} 的堆污染
16401640

1641-
compiler.warn.missing.deprecated.annotation=未使用 @Deprecated 对已过时的项目进行注释
1641+
compiler.warn.missing.deprecated.annotation=未使用 @Deprecated 对已过时的项目进行批注
16421642

16431643
# 0: kind name
16441644
compiler.warn.deprecated.annotation.has.no.effect=@Deprecated 批注对此 {0} 声明没有任何效果
@@ -2305,13 +2305,14 @@ compiler.err.this.as.identifier=从发行版 8 开始,''this'' 只能作为接
23052305

23062306
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=接收方参数不适用于顶层类的构造器
23072307

2308-
# TODO 308: make a better error message
2308+
# 0: fragment, 1: symbol, 2: annotated-type
2309+
compiler.err.type.annotation.inadmissible={0} 不应出现在此处\n(要对限定类型进行批注,请编写 {1}.{2})
2310+
23092311
# 0: annotation
2310-
compiler.err.cant.type.annotate.scoping.1=无法使用 type-use 批注 {0} 来批注确定作用域结构
2312+
compiler.misc.type.annotation.1=类型批注 {0}
23112313

2312-
# TODO 308: make a better error message
23132314
# 0: list of annotation
2314-
compiler.err.cant.type.annotate.scoping=无法使用 type-use 批注 {0} 来批注确定作用域结构
2315+
compiler.misc.type.annotation=类型批注 {0}
23152316

23162317
# 0: type, 1: type
23172318
compiler.err.incorrect.receiver.name=接收方名称与封闭类类型不匹配\n需要: {0}\n找到: {1}

src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ launcher.err.cant.read.file=读取源文件 {0} 时出错:{1}
120120
launcher.err.no.value.for.option=没有为选项 {0} 指定值
121121

122122
# 0: string
123-
launcher.err.invalid.value.for.source=--source 选项的值无效:{0}\n
123+
launcher.err.invalid.value.for.source=--source 选项的值无效:{0}
124124

125125
launcher.err.unnamed.pkg.not.allowed.named.modules=命名模块中不允许未命名程序包
126126

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,9 @@ doclet.record_constructor_doc.param_name=Wert für die Datensatzkomponente {0}
278278

279279
doclet.record_equals_doc.fullbody.head=Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist. Die Objekte sind gleich, wenn das andere Objekt der gleichen Klasse angehört und alle Datensatzkomponenten gleich sind.
280280

281-
doclet.record_equals_doc.fullbody.tail.both=Referenzkomponenten werden verglichen mit {@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)}; primitive Komponenten werden verglichen mit "==".
281+
doclet.record_equals_doc.fullbody.tail.both=Referenzkomponenten werden verglichen mit {@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)}. Primitive Komponenten werden mit der <code>compare</code>-Methode aus den entsprechenden Wrapper-Klassen verglichen.
282282

283-
doclet.record_equals_doc.fullbody.tail.primitive=Alle Komponenten in dieser Datensatzklasse werden verglichen mit "==".
283+
doclet.record_equals_doc.fullbody.tail.primitive=Alle Komponenten dieser Datensatzklasse werden mit der <code>compare</code>-Methode aus den entsprechenden Wrapper-Klassen verglichen.
284284

285285
doclet.record_equals_doc.fullbody.tail.reference=Alle Komponenten in dieser Datensatzklasse werden verglichen mit {@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)}.
286286

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,9 @@ doclet.record_constructor_doc.param_name={0}レコード・コンポーネント
278278

279279
doclet.record_equals_doc.fullbody.head=他のオブジェクトがこれと"等しい"かどうかを示します。他のオブジェクトが同じクラスであり、すべてのレコード・コンポーネントが等しい場合、オブジェクトは等しくなります。
280280

281-
doclet.record_equals_doc.fullbody.tail.both=参照コンポーネントは{@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)}と比較され、プリミティブ・コンポーネントは'=='と比較されます
281+
doclet.record_equals_doc.fullbody.tail.both=参照コンポーネントは{@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)}と比較され、プリミティブ・コンポーネントは対応するラッパー・クラスの<code>compare</code>メソッドで比較されます
282282

283-
doclet.record_equals_doc.fullbody.tail.primitive=このレコード・クラスのすべてのコンポーネントは'=='と比較されます
283+
doclet.record_equals_doc.fullbody.tail.primitive=このレコード・クラスのすべてのコンポーネントは対応するラッパー・クラスの<code>compare</code>メソッドで比較されます
284284

285285
doclet.record_equals_doc.fullbody.tail.reference=このレコード・クラスのすべてのコンポーネントは{@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)}と比較されます。
286286

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,9 @@ doclet.record_constructor_doc.param_name={0} 记录组件的值
278278

279279
doclet.record_equals_doc.fullbody.head=指示某个其他对象是否“等于”此对象。如果两个对象属于同一个类,而且所有记录组件都相等,则这两个对象相等。
280280

281-
doclet.record_equals_doc.fullbody.tail.both=使用 {@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)} 对参考组件进行比较;使用 '==' 对基元组件进行比较
281+
doclet.record_equals_doc.fullbody.tail.both=使用 {@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)} 对参考组件进行比较;使用 <code>compare</code> 方法从对应的包装类对基元组件进行比较。
282282

283-
doclet.record_equals_doc.fullbody.tail.primitive=此记录类中的所有组件都使用 '==' 进行比较
283+
doclet.record_equals_doc.fullbody.tail.primitive=此记录类中的所有组件都使用 <code>compare</code> 方法从对应的包装类进行比较
284284

285285
doclet.record_equals_doc.fullbody.tail.reference=此记录类中的所有组件都使用 {@link java.util.Objects#equals(Object,Object) Objects::equals(Object,Object)} 进行比较。
286286

test/jdk/java/nio/Buffer/EqualsCompareTest.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
2525
import org.testng.annotations.DataProvider;
2626
import org.testng.annotations.Test;
2727

28+
import java.io.IOException;
2829
import java.lang.invoke.MethodHandle;
2930
import java.lang.invoke.MethodHandles;
3031
import java.lang.invoke.MethodType;
@@ -36,13 +37,21 @@
3637
import java.nio.FloatBuffer;
3738
import java.nio.IntBuffer;
3839
import java.nio.LongBuffer;
40+
import java.nio.MappedByteBuffer;
3941
import java.nio.ShortBuffer;
42+
import java.nio.channels.FileChannel;
43+
import java.nio.file.Files;
44+
import java.nio.file.Path;
4045
import java.util.HashMap;
4146
import java.util.Map;
47+
import java.util.Set;
4248
import java.util.function.BiFunction;
4349
import java.util.function.LongFunction;
4450
import java.util.stream.IntStream;
4551

52+
import static java.nio.charset.StandardCharsets.UTF_8;
53+
import static java.nio.file.StandardOpenOption.*;
54+
4655
/*
4756
* @test
4857
* @bug 8193085 8199773
@@ -713,4 +722,17 @@ static int[] ranges(int from, int to) {
713722
.distinct().toArray();
714723
}
715724
}
725+
726+
@Test
727+
void testHashCode() throws IOException {
728+
byte[] bytes = "hello world".getBytes(UTF_8);
729+
Path path = Files.createTempFile("", "");
730+
Files.write(path, bytes);
731+
try (FileChannel fc = FileChannel.open(path, READ, DELETE_ON_CLOSE)) {
732+
MappedByteBuffer one = fc.map(FileChannel.MapMode.READ_ONLY, 0, bytes.length);
733+
ByteBuffer two = ByteBuffer.wrap(bytes);
734+
Assert.assertEquals(one, two);
735+
Assert.assertEquals(one.hashCode(), two.hashCode());
736+
}
737+
}
716738
}

0 commit comments

Comments
 (0)