Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Side by Side Diff: src/wasm/wasm-module-builder.h

Issue 2406133003: [wasm] Decouple function name and exported name in WasmFunctionBuilder (Closed)
Patch Set: Change interface to Vector<const char>; avoids size_t/int confusion Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/asmjs/asm-wasm-builder.cc ('k') | src/wasm/wasm-module-builder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef V8_WASM_WASM_MODULE_BUILDER_H_ 5 #ifndef V8_WASM_WASM_MODULE_BUILDER_H_
6 #define V8_WASM_WASM_MODULE_BUILDER_H_ 6 #define V8_WASM_WASM_MODULE_BUILDER_H_
7 7
8 #include "src/signature.h" 8 #include "src/signature.h"
9 #include "src/zone/zone-containers.h" 9 #include "src/zone/zone-containers.h"
10 10
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 void EmitCode(const byte* code, uint32_t code_size); 125 void EmitCode(const byte* code, uint32_t code_size);
126 void Emit(WasmOpcode opcode); 126 void Emit(WasmOpcode opcode);
127 void EmitGetLocal(uint32_t index); 127 void EmitGetLocal(uint32_t index);
128 void EmitSetLocal(uint32_t index); 128 void EmitSetLocal(uint32_t index);
129 void EmitTeeLocal(uint32_t index); 129 void EmitTeeLocal(uint32_t index);
130 void EmitI32Const(int32_t val); 130 void EmitI32Const(int32_t val);
131 void EmitWithU8(WasmOpcode opcode, const byte immediate); 131 void EmitWithU8(WasmOpcode opcode, const byte immediate);
132 void EmitWithU8U8(WasmOpcode opcode, const byte imm1, const byte imm2); 132 void EmitWithU8U8(WasmOpcode opcode, const byte imm1, const byte imm2);
133 void EmitWithVarInt(WasmOpcode opcode, uint32_t immediate); 133 void EmitWithVarInt(WasmOpcode opcode, uint32_t immediate);
134 void EmitDirectCallIndex(uint32_t index); 134 void EmitDirectCallIndex(uint32_t index);
135 void SetExported(); 135 void Export();
136 void SetName(const char* name, int name_length); 136 void ExportAs(Vector<const char> name);
137 void SetName(Vector<const char> name);
137 138
138 void WriteSignature(ZoneBuffer& buffer) const; 139 void WriteSignature(ZoneBuffer& buffer) const;
139 void WriteExport(ZoneBuffer& buffer) const; 140 void WriteExport(ZoneBuffer& buffer) const;
140 void WriteBody(ZoneBuffer& buffer) const; 141 void WriteBody(ZoneBuffer& buffer) const;
141 142
142 bool exported() { return exported_; } 143 bool exported() { return exported_; }
143 uint32_t func_index() { return func_index_; } 144 uint32_t func_index() { return func_index_; }
144 FunctionSig* signature(); 145 FunctionSig* signature();
145 146
146 private: 147 private:
147 explicit WasmFunctionBuilder(WasmModuleBuilder* builder); 148 explicit WasmFunctionBuilder(WasmModuleBuilder* builder);
148 friend class WasmModuleBuilder; 149 friend class WasmModuleBuilder;
149 friend class WasmTemporary; 150 friend class WasmTemporary;
150 151
151 struct DirectCallIndex { 152 struct DirectCallIndex {
152 size_t offset; 153 size_t offset;
153 uint32_t direct_index; 154 uint32_t direct_index;
154 }; 155 };
155 156
156 WasmModuleBuilder* builder_; 157 WasmModuleBuilder* builder_;
157 LocalDeclEncoder locals_; 158 LocalDeclEncoder locals_;
158 uint32_t signature_index_; 159 uint32_t signature_index_;
159 bool exported_; 160 bool exported_;
160 uint32_t func_index_; 161 uint32_t func_index_;
161 ZoneVector<uint8_t> body_; 162 ZoneVector<uint8_t> body_;
162 ZoneVector<char> name_; 163 ZoneVector<char> name_;
164 ZoneVector<char> exported_name_;
163 ZoneVector<uint32_t> i32_temps_; 165 ZoneVector<uint32_t> i32_temps_;
164 ZoneVector<uint32_t> i64_temps_; 166 ZoneVector<uint32_t> i64_temps_;
165 ZoneVector<uint32_t> f32_temps_; 167 ZoneVector<uint32_t> f32_temps_;
166 ZoneVector<uint32_t> f64_temps_; 168 ZoneVector<uint32_t> f64_temps_;
167 ZoneVector<DirectCallIndex> direct_calls_; 169 ZoneVector<DirectCallIndex> direct_calls_;
168 }; 170 };
169 171
170 class WasmTemporary { 172 class WasmTemporary {
171 public: 173 public:
172 WasmTemporary(WasmFunctionBuilder* builder, LocalType type) { 174 WasmTemporary(WasmFunctionBuilder* builder, LocalType type) {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 271
270 inline FunctionSig* WasmFunctionBuilder::signature() { 272 inline FunctionSig* WasmFunctionBuilder::signature() {
271 return builder_->signatures_[signature_index_]; 273 return builder_->signatures_[signature_index_];
272 } 274 }
273 275
274 } // namespace wasm 276 } // namespace wasm
275 } // namespace internal 277 } // namespace internal
276 } // namespace v8 278 } // namespace v8
277 279
278 #endif // V8_WASM_WASM_MODULE_BUILDER_H_ 280 #endif // V8_WASM_WASM_MODULE_BUILDER_H_
OLDNEW
« no previous file with comments | « src/asmjs/asm-wasm-builder.cc ('k') | src/wasm/wasm-module-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698