| OLD | NEW | 
|    1 // Copyright 2017 the V8 project authors. All rights reserved. |    1 // Copyright 2017 the V8 project authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #ifndef V8_ASMJS_ASM_PARSER_H_ |    5 #ifndef V8_ASMJS_ASM_PARSER_H_ | 
|    6 #define V8_ASMJS_ASM_PARSER_H_ |    6 #define V8_ASMJS_ASM_PARSER_H_ | 
|    7  |    7  | 
|    8 #include <list> |    8 #include <list> | 
|    9 #include <string> |    9 #include <string> | 
|   10 #include <vector> |   10 #include <vector> | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   52 #define V(_unused0, Name, _unused1, _unused2) kMath##Name, |   52 #define V(_unused0, Name, _unused1, _unused2) kMath##Name, | 
|   53     STDLIB_MATH_FUNCTION_LIST(V) |   53     STDLIB_MATH_FUNCTION_LIST(V) | 
|   54 #undef V |   54 #undef V | 
|   55 #define V(Name) kMath##Name, |   55 #define V(Name) kMath##Name, | 
|   56     STDLIB_MATH_VALUE_LIST(V) |   56     STDLIB_MATH_VALUE_LIST(V) | 
|   57 #undef V |   57 #undef V | 
|   58   }; |   58   }; | 
|   59   // clang-format on |   59   // clang-format on | 
|   60  |   60  | 
|   61   struct FunctionImportInfo { |   61   struct FunctionImportInfo { | 
|   62     std::string name; |   62     char* function_name; | 
 |   63     size_t function_name_size; | 
|   63     SignatureMap cache; |   64     SignatureMap cache; | 
|   64     std::vector<uint32_t> cache_index; |   65     std::vector<uint32_t> cache_index; | 
|   65   }; |   66   }; | 
|   66  |   67  | 
|   67   struct VarInfo { |   68   struct VarInfo { | 
|   68     AsmType* type; |   69     AsmType* type; | 
|   69     WasmFunctionBuilder* function_builder; |   70     WasmFunctionBuilder* function_builder; | 
|   70     FunctionImportInfo* import; |   71     FunctionImportInfo* import; | 
|   71     int32_t mask; |   72     int32_t mask; | 
|   72     uint32_t index; |   73     uint32_t index; | 
|   73     VarKind kind; |   74     VarKind kind; | 
|   74     bool mutable_variable; |   75     bool mutable_variable; | 
|   75     bool function_defined; |   76     bool function_defined; | 
|   76  |   77  | 
|   77     VarInfo(); |   78     VarInfo(); | 
|   78     void DeclareGlobalImport(AsmType* type, uint32_t index); |   79     void DeclareGlobalImport(AsmType* type, uint32_t index); | 
|   79     void DeclareStdlibFunc(VarKind kind, AsmType* type); |   80     void DeclareStdlibFunc(VarKind kind, AsmType* type); | 
|   80   }; |   81   }; | 
|   81  |   82  | 
|   82   struct GlobalImport { |   83   struct GlobalImport { | 
|   83     std::string import_name; |   84     char* import_name; | 
 |   85     size_t import_name_size; | 
|   84     uint32_t import_index; |   86     uint32_t import_index; | 
|   85     uint32_t global_index; |   87     uint32_t global_index; | 
|   86     bool needs_init; |   88     bool needs_init; | 
|   87   }; |   89   }; | 
|   88  |   90  | 
|   89   enum class BlockKind { kRegular, kLoop, kOther }; |   91   enum class BlockKind { kRegular, kLoop, kOther }; | 
|   90  |   92  | 
|   91   struct BlockInfo { |   93   struct BlockInfo { | 
|   92     BlockKind kind; |   94     BlockKind kind; | 
|   93     AsmJsScanner::token_t label; |   95     AsmJsScanner::token_t label; | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  241                                 const std::vector<AsmType*>& params); |  243                                 const std::vector<AsmType*>& params); | 
|  242  |  244  | 
|  243   // 6.1 ValidateModule |  245   // 6.1 ValidateModule | 
|  244   void ValidateModule(); |  246   void ValidateModule(); | 
|  245   void ValidateModuleParameters(); |  247   void ValidateModuleParameters(); | 
|  246   void ValidateModuleVars(); |  248   void ValidateModuleVars(); | 
|  247   void ValidateModuleVar(bool mutable_variable); |  249   void ValidateModuleVar(bool mutable_variable); | 
|  248   bool ValidateModuleVarImport(VarInfo* info, bool mutable_variable); |  250   bool ValidateModuleVarImport(VarInfo* info, bool mutable_variable); | 
|  249   void ValidateModuleVarStdlib(VarInfo* info); |  251   void ValidateModuleVarStdlib(VarInfo* info); | 
|  250   void ValidateModuleVarNewStdlib(VarInfo* info); |  252   void ValidateModuleVarNewStdlib(VarInfo* info); | 
|  251   void ValidateModuleVarFloat(VarInfo* info, bool mutable_variable); |  253   void ValidateModuleVarFromGlobal(VarInfo* info, bool mutable_variable); | 
|  252  |  254  | 
|  253   void ValidateExport();         // 6.2 ValidateExport |  255   void ValidateExport();         // 6.2 ValidateExport | 
|  254   void ValidateFunctionTable();  // 6.3 ValidateFunctionTable |  256   void ValidateFunctionTable();  // 6.3 ValidateFunctionTable | 
|  255   void ValidateFunction();       // 6.4 ValidateFunction |  257   void ValidateFunction();       // 6.4 ValidateFunction | 
|  256   void ValidateFunctionParams(std::vector<AsmType*>* params); |  258   void ValidateFunctionParams(std::vector<AsmType*>* params); | 
|  257   void ValidateFunctionLocals(size_t param_count, |  259   void ValidateFunctionLocals(size_t param_count, | 
|  258                               std::vector<ValueType>* locals); |  260                               std::vector<ValueType>* locals); | 
|  259   void ValidateStatement();              // ValidateStatement |  261   void ValidateStatement();              // ValidateStatement | 
|  260   void Block();                          // 6.5.1 Block |  262   void Block();                          // 6.5.1 Block | 
|  261   void ExpressionStatement();            // 6.5.2 ExpressionStatement |  263   void ExpressionStatement();            // 6.5.2 ExpressionStatement | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  295   void ValidateHeapAccess();             // 6.10 ValidateHeapAccess |  297   void ValidateHeapAccess();             // 6.10 ValidateHeapAccess | 
|  296   void ValidateFloatCoercion();          // 6.11 ValidateFloatCoercion |  298   void ValidateFloatCoercion();          // 6.11 ValidateFloatCoercion | 
|  297  |  299  | 
|  298   void GatherCases(std::vector<int32_t>* cases); |  300   void GatherCases(std::vector<int32_t>* cases); | 
|  299 }; |  301 }; | 
|  300  |  302  | 
|  301 }  // namespace wasm |  303 }  // namespace wasm | 
|  302 }  // namespace internal |  304 }  // namespace internal | 
|  303 }  // namespace v8 |  305 }  // namespace v8 | 
|  304 #endif |  306 #endif | 
| OLD | NEW |