Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Unified Diff: src/wasm/ast-decoder.h

Issue 1830663002: [wasm] Binary 11: AST changes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/wasm/asm-wasm-builder.cc ('k') | src/wasm/ast-decoder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/wasm/ast-decoder.h
diff --git a/src/wasm/ast-decoder.h b/src/wasm/ast-decoder.h
index cbbabe2fdc7d761ce18a3a2378d3a23893dc36a4..18899f2077796986376e56615ef3abd6970caf2c 100644
--- a/src/wasm/ast-decoder.h
+++ b/src/wasm/ast-decoder.h
@@ -89,66 +89,81 @@ struct GlobalIndexOperand {
}
};
-struct Block;
+struct Control;
struct BreakDepthOperand {
+ uint32_t arity;
uint32_t depth;
- Block* target;
+ Control* target;
int length;
inline BreakDepthOperand(Decoder* decoder, const byte* pc) {
- depth = decoder->checked_read_u32v(pc, 1, &length, "break depth");
+ int len1 = 0;
+ int len2 = 0;
+ arity = decoder->checked_read_u32v(pc, 1, &len1, "argument count");
+ depth = decoder->checked_read_u32v(pc, 1 + len1, &len2, "break depth");
+ length = len1 + len2;
target = nullptr;
}
};
-struct BlockCountOperand {
- uint32_t count;
- int length;
- inline BlockCountOperand(Decoder* decoder, const byte* pc) {
- count = decoder->checked_read_u32v(pc, 1, &length, "block count");
- }
-};
-
-struct SignatureIndexOperand {
+struct CallIndirectOperand {
+ uint32_t arity;
uint32_t index;
FunctionSig* sig;
int length;
- inline SignatureIndexOperand(Decoder* decoder, const byte* pc) {
- index = decoder->checked_read_u32v(pc, 1, &length, "signature index");
+ inline CallIndirectOperand(Decoder* decoder, const byte* pc) {
+ int len1 = 0;
+ int len2 = 0;
+ arity = decoder->checked_read_u32v(pc, 1, &len1, "argument count");
+ index = decoder->checked_read_u32v(pc, 1 + len1, &len2, "signature index");
+ length = len1 + len2;
sig = nullptr;
}
};
-struct FunctionIndexOperand {
+struct CallFunctionOperand {
+ uint32_t arity;
uint32_t index;
FunctionSig* sig;
int length;
- inline FunctionIndexOperand(Decoder* decoder, const byte* pc) {
- index = decoder->checked_read_u32v(pc, 1, &length, "function index");
+ inline CallFunctionOperand(Decoder* decoder, const byte* pc) {
+ int len1 = 0;
+ int len2 = 0;
+ arity = decoder->checked_read_u32v(pc, 1, &len1, "argument count");
+ index = decoder->checked_read_u32v(pc, 1 + len1, &len2, "function index");
+ length = len1 + len2;
sig = nullptr;
}
};
-struct ImportIndexOperand {
+struct CallImportOperand {
+ uint32_t arity;
uint32_t index;
FunctionSig* sig;
int length;
- inline ImportIndexOperand(Decoder* decoder, const byte* pc) {
- index = decoder->checked_read_u32v(pc, 1, &length, "import index");
+ inline CallImportOperand(Decoder* decoder, const byte* pc) {
+ int len1 = 0;
+ int len2 = 0;
+ arity = decoder->checked_read_u32v(pc, 1, &len1, "argument count");
+ index = decoder->checked_read_u32v(pc, 1 + len1, &len2, "import index");
+ length = len1 + len2;
sig = nullptr;
}
};
struct BranchTableOperand {
+ uint32_t arity;
uint32_t table_count;
const byte* table;
int length;
inline BranchTableOperand(Decoder* decoder, const byte* pc) {
- int varint_length;
+ int len1 = 0;
+ int len2 = 0;
+ arity = decoder->checked_read_u32v(pc, 1, &len1, "argument count");
table_count =
- decoder->checked_read_u32v(pc, 1, &varint_length, "expected #entries");
- length = varint_length + (table_count + 1) * sizeof(uint32_t);
+ decoder->checked_read_u32v(pc, 1 + len1, &len2, "table count");
+ length = len1 + len2 + (table_count + 1) * sizeof(uint32_t);
- uint32_t table_start = 1 + varint_length;
+ uint32_t table_start = 1 + len1 + len2;
if (decoder->check(pc, table_start, (table_count + 1) * sizeof(uint32_t),
"expected <table entries>")) {
table = pc + table_start;
@@ -177,6 +192,15 @@ struct MemoryAccessOperand {
}
};
+struct ReturnArityOperand {
+ uint32_t arity;
+ int length;
+
+ inline ReturnArityOperand(Decoder* decoder, const byte* pc) {
+ arity = decoder->checked_read_u32v(pc, 1, &length, "return count");
+ }
+};
+
typedef compiler::WasmGraphBuilder TFBuilder;
struct ModuleEnv; // forward declaration of module interface.
« no previous file with comments | « src/wasm/asm-wasm-builder.cc ('k') | src/wasm/ast-decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698