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");
     };
 }
Exemple #2
0
		void set_global(GetOrSetVariableImm<true> imm)
		{
			popAndValidateOperand("set_global",validateGlobalIndex(module,imm.variableIndex,true,false,false,"set_global"));
		}
Exemple #3
0
		void get_global(GetOrSetVariableImm<true> imm)
		{
			pushOperand(validateGlobalIndex(module,imm.variableIndex,false,false,false,"get_global"));
		}