@@ -43,19 +43,19 @@ struct WasmException;
4343
4444#define RET_ON_PROTOTYPE_OPCODE (feat ) \
4545 DCHECK (!this ->module_ || this ->module_->origin == kWasmOrigin ); \
46- if (!this ->enabled_.feat) { \
46+ if (!this ->enabled_.has_## feat()) { \
4747 this ->error (" Invalid opcode (enable with --experimental-wasm-" #feat " )" ); \
4848 } else { \
49- this ->detected_ ->feat = true ; \
49+ this ->detected_ ->Add ( kFeature_ ## feat); \
5050 }
5151
5252#define CHECK_PROTOTYPE_OPCODE (feat ) \
5353 DCHECK (!this ->module_ || this ->module_->origin == kWasmOrigin ); \
54- if (!this ->enabled_.feat) { \
54+ if (!this ->enabled_.has_## feat()) { \
5555 this ->error (" Invalid opcode (enable with --experimental-wasm-" #feat " )" ); \
5656 break ; \
5757 } else { \
58- this ->detected_ ->feat = true ; \
58+ this ->detected_ ->Add ( kFeature_ ## feat); \
5959 }
6060
6161#define OPCODE_ERROR (opcode, message ) \
@@ -281,7 +281,7 @@ struct BlockTypeImmediate {
281281 uint8_t val = decoder->read_u8 <validate>(pc + 1 , " block type" );
282282 if (!function_body_decoder::decode_local_type (val, &type)) {
283283 // Handle multi-value blocks.
284- if (!VALIDATE (enabled.mv )) {
284+ if (!VALIDATE (enabled.has_mv () )) {
285285 decoder->error (pc + 1 , " invalid block type" );
286286 return ;
287287 }
@@ -381,7 +381,8 @@ struct CallIndirectImmediate {
381381 uint32_t len = 0 ;
382382 sig_index = decoder->read_u32v <validate>(pc + 1 , &len, " signature index" );
383383 TableIndexImmediate<validate> table (decoder, pc + len);
384- if (!VALIDATE ((table.index == 0 && table.length == 1 ) || enabled.anyref )) {
384+ if (!VALIDATE ((table.index == 0 && table.length == 1 ) ||
385+ enabled.has_anyref ())) {
385386 decoder->errorf (pc + 1 + len, " expected table index 0, found %u" ,
386387 table.index );
387388 }
@@ -840,7 +841,7 @@ class WasmDecoder : public Decoder {
840841 type = kWasmF64 ;
841842 break ;
842843 case kLocalAnyRef :
843- if (enabled.anyref ) {
844+ if (enabled.has_anyref () ) {
844845 type = kWasmAnyRef ;
845846 break ;
846847 }
@@ -849,7 +850,7 @@ class WasmDecoder : public Decoder {
849850 " --experimental-wasm-anyref" );
850851 return false ;
851852 case kLocalFuncRef :
852- if (enabled.anyref ) {
853+ if (enabled.has_anyref () ) {
853854 type = kWasmFuncRef ;
854855 break ;
855856 }
@@ -858,7 +859,7 @@ class WasmDecoder : public Decoder {
858859 " --experimental-wasm-anyref" );
859860 return false ;
860861 case kLocalExnRef :
861- if (enabled.eh ) {
862+ if (enabled.has_eh () ) {
862863 type = kWasmExnRef ;
863864 break ;
864865 }
@@ -867,7 +868,7 @@ class WasmDecoder : public Decoder {
867868 " --experimental-wasm-eh" );
868869 return false ;
869870 case kLocalS128 :
870- if (enabled.simd ) {
871+ if (enabled.has_simd () ) {
871872 type = kWasmS128 ;
872873 break ;
873874 }
@@ -1231,15 +1232,15 @@ class WasmDecoder : public Decoder {
12311232 }
12321233 case kExprCallIndirect :
12331234 case kExprReturnCallIndirect : {
1234- CallIndirectImmediate<validate> imm (kAllWasmFeatures , decoder, pc);
1235+ CallIndirectImmediate<validate> imm (WasmFeatures::All () , decoder, pc);
12351236 return 1 + imm.length ;
12361237 }
12371238
12381239 case kExprTry :
12391240 case kExprIf : // fall through
12401241 case kExprLoop :
12411242 case kExprBlock : {
1242- BlockTypeImmediate<validate> imm (kAllWasmFeatures , decoder, pc);
1243+ BlockTypeImmediate<validate> imm (WasmFeatures::All () , decoder, pc);
12431244 return 1 + imm.length ;
12441245 }
12451246
@@ -2569,7 +2570,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
25692570 }
25702571
25712572 for (int i = 0 ; i < br_arity; ++i) {
2572- if (this ->enabled_ .anyref ) {
2573+ if (this ->enabled_ .has_anyref () ) {
25732574 // The expected type is the biggest common sub type of all targets.
25742575 (*result_types)[i] =
25752576 ValueTypes::CommonSubType ((*result_types)[i], (*merge)[i].type );
0 commit comments