This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push:
new 4cff6633e LANG-1717: support RISC-V in ArchUtils (#1128)
4cff6633e is described below
commit 4cff6633e9301647c8815119f99da8932502dc88
Author: Levi Zim <[email protected]>
AuthorDate: Sun Nov 5 20:35:25 2023 +0800
LANG-1717: support RISC-V in ArchUtils (#1128)
* LANG-1717: support RISC-V in ArchUtils
Add RISC-V support to ArchUtils and its dependency class, Processor.
* Add missing Javadoc since tags
---------
Co-authored-by: Gary Gregory <[email protected]>
---
.../java/org/apache/commons/lang3/ArchUtils.java | 10 +++++++++
.../org/apache/commons/lang3/arch/Processor.java | 18 +++++++++++++++
.../org/apache/commons/lang3/ArchUtilsTest.java | 26 ++++++++++++++++++++++
3 files changed, 54 insertions(+)
diff --git a/src/main/java/org/apache/commons/lang3/ArchUtils.java
b/src/main/java/org/apache/commons/lang3/ArchUtils.java
index 4bc325c5e..25a644c4e 100644
--- a/src/main/java/org/apache/commons/lang3/ArchUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ArchUtils.java
@@ -96,6 +96,8 @@ public class ArchUtils {
init_PPC_32Bit();
init_PPC_64Bit();
init_Aarch_64Bit();
+ init_RISCV_32Bit();
+ init_RISCV_64Bit();
}
private static void init_Aarch_64Bit() {
@@ -118,6 +120,14 @@ public class ArchUtils {
addProcessors(new Processor(Processor.Arch.BIT_64,
Processor.Type.PPC), "ppc64", "power64", "powerpc64", "power_pc64",
"power_rs64");
}
+ private static void init_RISCV_32Bit() {
+ addProcessors(new Processor(Processor.Arch.BIT_32,
Processor.Type.RISCV), "riscv32");
+ }
+
+ private static void init_RISCV_64Bit() {
+ addProcessors(new Processor(Processor.Arch.BIT_64,
Processor.Type.RISCV), "riscv64");
+ }
+
private static void init_X86_32Bit() {
addProcessors(new Processor(Processor.Arch.BIT_32,
Processor.Type.X86), "x86", "i386", "i486", "i586", "i686", "pentium");
}
diff --git a/src/main/java/org/apache/commons/lang3/arch/Processor.java
b/src/main/java/org/apache/commons/lang3/arch/Processor.java
index 555bf96c4..2fc18cb65 100644
--- a/src/main/java/org/apache/commons/lang3/arch/Processor.java
+++ b/src/main/java/org/apache/commons/lang3/arch/Processor.java
@@ -79,6 +79,7 @@ public class Processor {
* <li>x86</li>
* <li>ia64</li>
* <li>PPC</li>
+ * <li>RISCV</li>
* <li>Unknown</li>
* </ul>
*/
@@ -106,6 +107,13 @@ public class Processor {
*/
PPC("PPC"),
+ /**
+ * RISC-V architecture.
+ *
+ * @since 3.14.0
+ */
+ RISCV("RISC-V"),
+
/**
* Unknown architecture.
*/
@@ -225,6 +233,16 @@ public class Processor {
return Type.X86 == type;
}
+ /**
+ * Tests if {@link Processor} is type of RISC-V.
+ *
+ * @return {@code true}. if {@link Processor} is {@link Type#RISCV}, else
{@code false}.
+ * @since 3.14.0
+ */
+ public boolean isRISCV() {
+ return Type.RISCV == type;
+ }
+
@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
diff --git a/src/test/java/org/apache/commons/lang3/ArchUtilsTest.java
b/src/test/java/org/apache/commons/lang3/ArchUtilsTest.java
index fb23cfa08..64519e97f 100644
--- a/src/test/java/org/apache/commons/lang3/ArchUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArchUtilsTest.java
@@ -40,6 +40,8 @@ public class ArchUtilsTest extends AbstractLangTest {
private static final String X86 = "x86";
private static final String X86_64 = "x86_64";
private static final String AARCH_64 = "aarch64";
+ private static final String RISCV_64 = "riscv64";
+ private static final String RISCV_32 = "riscv32";
private void assertEqualsArchNotNull(final Processor.Arch arch, final
Processor processor) {
assertNotNull(arch);
@@ -100,6 +102,14 @@ public class ArchUtilsTest extends AbstractLangTest {
processor = ArchUtils.getProcessor(AARCH_64);
assertEqualsTypeNotNull(Processor.Type.AARCH_64, processor);
assertTrue(processor.isAarch64());
+
+ processor = ArchUtils.getProcessor(RISCV_32);
+ assertEqualsTypeNotNull(Processor.Type.RISCV, processor);
+ assertTrue(processor.isRISCV());
+
+ processor = ArchUtils.getProcessor(RISCV_64);
+ assertEqualsTypeNotNull(Processor.Type.RISCV, processor);
+ assertTrue(processor.isRISCV());
}
@Test
@@ -134,6 +144,10 @@ public class ArchUtilsTest extends AbstractLangTest {
assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
processor.is32Bit();
+ processor = ArchUtils.getProcessor(RISCV_32);
+ assertEqualsArchNotNull(Processor.Arch.BIT_32, processor);
+ assertTrue(processor.is32Bit());
+
processor = ArchUtils.getProcessor(X86_64);
assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
assertFalse(processor.is32Bit());
@@ -145,6 +159,10 @@ public class ArchUtilsTest extends AbstractLangTest {
processor = ArchUtils.getProcessor(IA64);
assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
assertFalse(processor.is32Bit());
+
+ processor = ArchUtils.getProcessor(RISCV_64);
+ assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);
+ assertFalse(processor.is32Bit());
}
@Test
@@ -161,6 +179,10 @@ public class ArchUtilsTest extends AbstractLangTest {
assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
assertTrue(processor.is64Bit());
+ processor = ArchUtils.getProcessor(RISCV_64);
+ assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
+ assertTrue(processor.is64Bit());
+
processor = ArchUtils.getProcessor(X86);
assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
assertFalse(processor.is64Bit());
@@ -173,6 +195,10 @@ public class ArchUtilsTest extends AbstractLangTest {
assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
assertFalse(processor.is64Bit());
+ processor = ArchUtils.getProcessor(RISCV_32);
+ assertNotEqualsArchNotNull(Processor.Arch.BIT_64, processor);
+ assertFalse(processor.is64Bit());
+
processor = ArchUtils.getProcessor(AARCH_64);
assertEqualsArchNotNull(Processor.Arch.BIT_64, processor);
assertNotEqualsArchNotNull(Processor.Arch.BIT_32, processor);