summaryrefslogtreecommitdiff
path: root/src/binary-reader.cc
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2019-11-07 18:42:51 -0800
committerGitHub <noreply@github.com>2019-11-07 18:42:51 -0800
commit2e2991e5a0e6a75d57c9ed6ff7ee0ae88adf253f (patch)
tree724bddd7110147c66163e6f230d4456e1e1e870f /src/binary-reader.cc
parent2561eaca9cdba262eaa1e74ce877ffc7be543323 (diff)
downloadwabt-2e2991e5a0e6a75d57c9ed6ff7ee0ae88adf253f.tar.gz
wabt-2e2991e5a0e6a75d57c9ed6ff7ee0ae88adf253f.tar.bz2
wabt-2e2991e5a0e6a75d57c9ed6ff7ee0ae88adf253f.zip
Initial implementation of reftype proposal in the interpreter. (#1206)
- Implement ref.func everywhere. - Implement table.get and table.set in the interpreter.
Diffstat (limited to 'src/binary-reader.cc')
-rw-r--r--src/binary-reader.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/binary-reader.cc b/src/binary-reader.cc
index 52e49000..cbc254a8 100644
--- a/src/binary-reader.cc
+++ b/src/binary-reader.cc
@@ -390,6 +390,9 @@ bool BinaryReader::IsConcreteType(Type type) {
case Type::Anyref:
return options_.features.reference_types_enabled();
+ case Type::Funcref:
+ return options_.features.reference_types_enabled();
+
default:
return false;
}
@@ -1482,6 +1485,14 @@ Result BinaryReader::ReadFunctionBody(Offset end_offset) {
break;
}
+ case Opcode::RefFunc: {
+ Index func;
+ CHECK_RESULT(ReadIndex(&func, "func index"));
+ CALLBACK(OnRefFuncExpr, func);
+ CALLBACK(OnOpcodeUint32, func);
+ break;
+ }
+
case Opcode::RefNull: {
CALLBACK(OnRefNullExpr);
CALLBACK0(OnOpcodeBare);