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

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

Issue 2609363004: [asm.js] [wasm] Store function start position for stack check (Closed)
Patch Set: It's 2017 already :) Created 3 years, 11 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/wasm/module-decoder.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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 ExportAs(Vector<const char> name); 135 void ExportAs(Vector<const char> name);
136 void SetName(Vector<const char> name); 136 void SetName(Vector<const char> name);
137 void AddAsmWasmOffset(int call_position, int to_number_position); 137 void AddAsmWasmOffset(int call_position, int to_number_position);
138 void SetAsmFunctionStartPosition(int position);
138 139
139 void WriteSignature(ZoneBuffer& buffer) const; 140 void WriteSignature(ZoneBuffer& buffer) const;
140 void WriteExports(ZoneBuffer& buffer) const; 141 void WriteExports(ZoneBuffer& buffer) const;
141 void WriteBody(ZoneBuffer& buffer) const; 142 void WriteBody(ZoneBuffer& buffer) const;
142 void WriteAsmWasmOffsetTable(ZoneBuffer& buffer) const; 143 void WriteAsmWasmOffsetTable(ZoneBuffer& buffer) const;
143 144
144 uint32_t func_index() { return func_index_; } 145 uint32_t func_index() { return func_index_; }
145 FunctionSig* signature(); 146 FunctionSig* signature();
146 147
147 private: 148 private:
(...skipping 16 matching lines...) Expand all
164 ZoneVector<uint32_t> i32_temps_; 165 ZoneVector<uint32_t> i32_temps_;
165 ZoneVector<uint32_t> i64_temps_; 166 ZoneVector<uint32_t> i64_temps_;
166 ZoneVector<uint32_t> f32_temps_; 167 ZoneVector<uint32_t> f32_temps_;
167 ZoneVector<uint32_t> f64_temps_; 168 ZoneVector<uint32_t> f64_temps_;
168 ZoneVector<DirectCallIndex> direct_calls_; 169 ZoneVector<DirectCallIndex> direct_calls_;
169 170
170 // Delta-encoded mapping from wasm bytes to asm.js source positions. 171 // Delta-encoded mapping from wasm bytes to asm.js source positions.
171 ZoneBuffer asm_offsets_; 172 ZoneBuffer asm_offsets_;
172 uint32_t last_asm_byte_offset_ = 0; 173 uint32_t last_asm_byte_offset_ = 0;
173 uint32_t last_asm_source_position_ = 0; 174 uint32_t last_asm_source_position_ = 0;
175 uint32_t asm_func_start_source_position_ = 0;
174 }; 176 };
175 177
176 class WasmTemporary { 178 class WasmTemporary {
177 public: 179 public:
178 WasmTemporary(WasmFunctionBuilder* builder, ValueType type) { 180 WasmTemporary(WasmFunctionBuilder* builder, ValueType type) {
179 switch (type) { 181 switch (type) {
180 case kWasmI32: 182 case kWasmI32:
181 temporary_ = &builder->i32_temps_; 183 temporary_ = &builder->i32_temps_;
182 break; 184 break;
183 case kWasmI64: 185 case kWasmI64:
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 281
280 inline FunctionSig* WasmFunctionBuilder::signature() { 282 inline FunctionSig* WasmFunctionBuilder::signature() {
281 return builder_->signatures_[signature_index_]; 283 return builder_->signatures_[signature_index_];
282 } 284 }
283 285
284 } // namespace wasm 286 } // namespace wasm
285 } // namespace internal 287 } // namespace internal
286 } // namespace v8 288 } // namespace v8
287 289
288 #endif // V8_WASM_WASM_MODULE_BUILDER_H_ 290 #endif // V8_WASM_WASM_MODULE_BUILDER_H_
OLDNEW
« no previous file with comments | « src/wasm/module-decoder.cc ('k') | src/wasm/wasm-module-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698