From 5826d6dded1ed55430615eb3b1f7d8a121d8a075 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Fri, 17 May 2019 21:40:38 +0200 Subject: [PATCH] add field vtable --- .../jwebassembly/module/ModuleGenerator.java | 2 ++ .../jwebassembly/wasm/NamedStorageType.java | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java index 416c87a..8754c1e 100644 --- a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java +++ b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java @@ -314,6 +314,8 @@ public class ModuleGenerator { if( superClass != null ) { String superClassName = superClass.getName(); listStructFields( superClassName, list ); + } else { + list.add( new NamedStorageType( ValueType.i32, className, ".vtable" ) ); } for( FieldInfo field : classFile.getFields() ) { diff --git a/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java b/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java index c8e7cd6..794fbd1 100644 --- a/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java +++ b/src/de/inetsoftware/jwebassembly/wasm/NamedStorageType.java @@ -71,7 +71,21 @@ public class NamedStorageType { * the type manager */ private NamedStorageType( String type, String className, String name, TypeManager types ) { - this.type = new ValueTypeParser( type, types ).next(); + this( new ValueTypeParser( type, types ).next(), className, name ); + } + + /** + * Create a new instance + * + * @param type + * the type + * @param className + * the class name + * @param name + * the name + */ + public NamedStorageType( AnyType type, String className, String name ) { + this.type = type; this.className = className; this.name = name; }