From 83a99ce803bbf29fdca6ab21d924704839cbbf75 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sat, 17 Nov 2018 17:57:53 +0100 Subject: [PATCH] test for WasmTextCode --- .../api/annotation/WasmTextCode.java | 38 +++++++++++++++++++ .../jwebassembly/runtime/CallFunctions.java | 15 ++++++++ 2 files changed, 53 insertions(+) create mode 100644 test/de/inetsoftware/jwebassembly/api/annotation/WasmTextCode.java diff --git a/test/de/inetsoftware/jwebassembly/api/annotation/WasmTextCode.java b/test/de/inetsoftware/jwebassembly/api/annotation/WasmTextCode.java new file mode 100644 index 0000000..b892c55 --- /dev/null +++ b/test/de/inetsoftware/jwebassembly/api/annotation/WasmTextCode.java @@ -0,0 +1,38 @@ +/* + * Copyright 2018 Volker Berlin (i-net software) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package de.inetsoftware.jwebassembly.api.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Annotation for code that can not be written in Java. + * + * @author Volker Berlin + */ +@Retention( RetentionPolicy.CLASS ) +@Target( ElementType.METHOD ) +public @interface WasmTextCode { + + /** + * The WASM code in text notation. + * + * @return the native WASM code + */ + String value(); +} diff --git a/test/de/inetsoftware/jwebassembly/runtime/CallFunctions.java b/test/de/inetsoftware/jwebassembly/runtime/CallFunctions.java index 94a251d..cbb8df2 100644 --- a/test/de/inetsoftware/jwebassembly/runtime/CallFunctions.java +++ b/test/de/inetsoftware/jwebassembly/runtime/CallFunctions.java @@ -25,6 +25,7 @@ import de.inetsoftware.jwebassembly.ScriptEngine; import de.inetsoftware.jwebassembly.WasmRule; import de.inetsoftware.jwebassembly.api.annotation.Export; import de.inetsoftware.jwebassembly.api.annotation.Import; +import de.inetsoftware.jwebassembly.api.annotation.WasmTextCode; /** * @author Volker Berlin @@ -44,6 +45,7 @@ public class CallFunctions extends AbstractBaseTest { for( ScriptEngine[] val : ScriptEngine.testParams() ) { ScriptEngine script = val[0]; addParam( list, script, "intCall" ); + addParam( list, script, "nativeCall" ); } return list; } @@ -74,5 +76,18 @@ public class CallFunctions extends AbstractBaseTest { static int abc( int a, int b) { return Math.max( a, b ); } + + @Export + static float nativeCall() { + return nativeMax( 4.5F,5.5F); + } + + @WasmTextCode( "get_local 0 " // + + "get_local 1 " // + + "f32.max " // + + "return" ) + private static float nativeMax( float a, float b) { + return Math.max( a, b ); + } } }