From 67f8fd4355ddccf851ee8310ae6a5ef96939898b Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sun, 31 May 2020 11:39:57 +0200 Subject: [PATCH] implement Class.getComponentType(), WIP --- .../jwebassembly/module/ReplacementForClass.java | 8 ++++++++ .../inetsoftware/jwebassembly/runtime/StructsNonGC.java | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/de/inetsoftware/jwebassembly/module/ReplacementForClass.java b/src/de/inetsoftware/jwebassembly/module/ReplacementForClass.java index 02dbf40..c3d4a61 100644 --- a/src/de/inetsoftware/jwebassembly/module/ReplacementForClass.java +++ b/src/de/inetsoftware/jwebassembly/module/ReplacementForClass.java @@ -173,6 +173,14 @@ class ReplacementForClass { return null; } + /** + * Replacement of the native Java methods getComponentType() + */ + ReplacementForClass getComponentType() { + int classIdx = getIntFromMemory( vtable + TypeManager.TYPE_DESCRIPTION_ARRAY_TYPE ); + return classIdx >= 0 ? classConstant( classIdx ) : null; + } + /** * Replacement of the native Java methods * diff --git a/test/de/inetsoftware/jwebassembly/runtime/StructsNonGC.java b/test/de/inetsoftware/jwebassembly/runtime/StructsNonGC.java index ed81119..d59a4be 100644 --- a/test/de/inetsoftware/jwebassembly/runtime/StructsNonGC.java +++ b/test/de/inetsoftware/jwebassembly/runtime/StructsNonGC.java @@ -63,6 +63,7 @@ public class StructsNonGC extends AbstractBaseTest { addParam( list, script, "classClassName" ); addParam( list, script, "classConst" ); addParam( list, script, "intClassName" ); + addParam( list, script, "getComponentType" ); addParam( list, script, "branchWithObjectResult" ); } rule.setTestParameters( list ); @@ -218,6 +219,13 @@ public class StructsNonGC extends AbstractBaseTest { return JSObject.domString( clazz.getName() ); } + @Export + static boolean getComponentType() { + Class clazz = byte.class; + clazz = clazz.getComponentType(); + return clazz == null; + } + @Export static int branchWithObjectResult() { Integer val1 = 42;