void validateInitializer(const InitializerExpression& expression,ValueType expectedType,const char* context) { switch(expression.type) { case InitializerExpression::Type::i32_const: validateType(expectedType,ValueType::i32,context); break; case InitializerExpression::Type::i64_const: validateType(expectedType,ValueType::i64,context); break; case InitializerExpression::Type::f32_const: validateType(expectedType,ValueType::f32,context); break; case InitializerExpression::Type::f64_const: validateType(expectedType,ValueType::f64,context); break; case InitializerExpression::Type::get_global: { const ValueType globalValueType = validateGlobalIndex(expression.globalIndex,false,true,true,"initializer expression global index"); validateType(expectedType,globalValueType,context); break; } default: throw ValidationException("invalid initializer expression"); }; }
void set_global(GetOrSetVariableImm<true> imm) { popAndValidateOperand("set_global",validateGlobalIndex(module,imm.variableIndex,true,false,false,"set_global")); }
void get_global(GetOrSetVariableImm<true> imm) { pushOperand(validateGlobalIndex(module,imm.variableIndex,false,false,false,"get_global")); }