OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 // Required to get M_E etc. in MSVC. | 7 // Required to get M_E etc. in MSVC. |
8 #if defined(_WIN32) | 8 #if defined(_WIN32) |
9 #define _USE_MATH_DEFINES | 9 #define _USE_MATH_DEFINES |
10 #endif | 10 #endif |
(...skipping 26 matching lines...) Expand all Loading... |
37 struct ForeignVariable { | 37 struct ForeignVariable { |
38 Handle<Name> name; | 38 Handle<Name> name; |
39 Variable* var; | 39 Variable* var; |
40 LocalType type; | 40 LocalType type; |
41 }; | 41 }; |
42 | 42 |
43 class AsmWasmBuilderImpl final : public AstVisitor<AsmWasmBuilderImpl> { | 43 class AsmWasmBuilderImpl final : public AstVisitor<AsmWasmBuilderImpl> { |
44 public: | 44 public: |
45 AsmWasmBuilderImpl(Isolate* isolate, Zone* zone, FunctionLiteral* literal, | 45 AsmWasmBuilderImpl(Isolate* isolate, Zone* zone, FunctionLiteral* literal, |
46 AsmTyper* typer) | 46 AsmTyper* typer) |
47 : local_variables_(base::HashMap::PointersMatch, | 47 : local_variables_(ZoneHashMap::kDefaultHashMapCapacity, |
48 ZoneHashMap::kDefaultHashMapCapacity, | |
49 ZoneAllocationPolicy(zone)), | 48 ZoneAllocationPolicy(zone)), |
50 functions_(base::HashMap::PointersMatch, | 49 functions_(ZoneHashMap::kDefaultHashMapCapacity, |
51 ZoneHashMap::kDefaultHashMapCapacity, | |
52 ZoneAllocationPolicy(zone)), | 50 ZoneAllocationPolicy(zone)), |
53 global_variables_(base::HashMap::PointersMatch, | 51 global_variables_(ZoneHashMap::kDefaultHashMapCapacity, |
54 ZoneHashMap::kDefaultHashMapCapacity, | |
55 ZoneAllocationPolicy(zone)), | 52 ZoneAllocationPolicy(zone)), |
56 scope_(kModuleScope), | 53 scope_(kModuleScope), |
57 builder_(new (zone) WasmModuleBuilder(zone)), | 54 builder_(new (zone) WasmModuleBuilder(zone)), |
58 current_function_builder_(nullptr), | 55 current_function_builder_(nullptr), |
59 literal_(literal), | 56 literal_(literal), |
60 isolate_(isolate), | 57 isolate_(isolate), |
61 zone_(zone), | 58 zone_(zone), |
62 typer_(typer), | 59 typer_(typer), |
63 breakable_blocks_(zone), | 60 breakable_blocks_(zone), |
64 foreign_variables_(zone), | 61 foreign_variables_(zone), |
65 init_function_(nullptr), | 62 init_function_(nullptr), |
66 foreign_init_function_(nullptr), | 63 foreign_init_function_(nullptr), |
67 next_table_index_(0), | 64 next_table_index_(0), |
68 function_tables_(base::HashMap::PointersMatch, | 65 function_tables_(ZoneHashMap::kDefaultHashMapCapacity, |
69 ZoneHashMap::kDefaultHashMapCapacity, | |
70 ZoneAllocationPolicy(zone)), | 66 ZoneAllocationPolicy(zone)), |
71 imported_function_table_(this) { | 67 imported_function_table_(this) { |
72 InitializeAstVisitor(isolate); | 68 InitializeAstVisitor(isolate); |
73 } | 69 } |
74 | 70 |
75 void InitializeInitFunction() { | 71 void InitializeInitFunction() { |
76 FunctionSig::Builder b(zone(), 0, 0); | 72 FunctionSig::Builder b(zone(), 0, 0); |
77 init_function_ = builder_->AddFunction(b.Build()); | 73 init_function_ = builder_->AddFunction(b.Build()); |
78 builder_->MarkStartFunction(init_function_); | 74 builder_->MarkStartFunction(init_function_); |
79 } | 75 } |
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 WasmModuleBuilder::SignatureMap signature_to_index_; | 737 WasmModuleBuilder::SignatureMap signature_to_index_; |
742 | 738 |
743 explicit ImportedFunctionIndices(Zone* zone) | 739 explicit ImportedFunctionIndices(Zone* zone) |
744 : has_name_(false), signature_to_index_(zone) {} | 740 : has_name_(false), signature_to_index_(zone) {} |
745 }; | 741 }; |
746 ZoneHashMap table_; | 742 ZoneHashMap table_; |
747 AsmWasmBuilderImpl* builder_; | 743 AsmWasmBuilderImpl* builder_; |
748 | 744 |
749 public: | 745 public: |
750 explicit ImportedFunctionTable(AsmWasmBuilderImpl* builder) | 746 explicit ImportedFunctionTable(AsmWasmBuilderImpl* builder) |
751 : table_(base::HashMap::PointersMatch, | 747 : table_(ZoneHashMap::kDefaultHashMapCapacity, |
752 ZoneHashMap::kDefaultHashMapCapacity, | |
753 ZoneAllocationPolicy(builder->zone())), | 748 ZoneAllocationPolicy(builder->zone())), |
754 builder_(builder) {} | 749 builder_(builder) {} |
755 | 750 |
756 // Set the imported name of a variable. Must happen after all signatures | 751 // Set the imported name of a variable. Must happen after all signatures |
757 // (and thus import indices) are added for a given variable. | 752 // (and thus import indices) are added for a given variable. |
758 void SetImportName(Variable* v, const char* name, int name_length) { | 753 void SetImportName(Variable* v, const char* name, int name_length) { |
759 auto indices = GetEntry(v); | 754 auto indices = GetEntry(v); |
760 if (indices) { | 755 if (indices) { |
761 for (auto entry : indices->signature_to_index_) { | 756 for (auto entry : indices->signature_to_index_) { |
762 uint32_t index = entry.second; | 757 uint32_t index = entry.second; |
(...skipping 1156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1919 impl.builder_->WriteTo(*buffer); | 1914 impl.builder_->WriteTo(*buffer); |
1920 return buffer; | 1915 return buffer; |
1921 } | 1916 } |
1922 | 1917 |
1923 const char* AsmWasmBuilder::foreign_init_name = "__foreign_init__"; | 1918 const char* AsmWasmBuilder::foreign_init_name = "__foreign_init__"; |
1924 const char* AsmWasmBuilder::single_function_name = "__single_function__"; | 1919 const char* AsmWasmBuilder::single_function_name = "__single_function__"; |
1925 | 1920 |
1926 } // namespace wasm | 1921 } // namespace wasm |
1927 } // namespace internal | 1922 } // namespace internal |
1928 } // namespace v8 | 1923 } // namespace v8 |
OLD | NEW |