| Index: src/wasm/wasm-module-builder.cc
 | 
| diff --git a/src/wasm/wasm-module-builder.cc b/src/wasm/wasm-module-builder.cc
 | 
| index 941a0736c3272a53488121a3e3309619e4d90646..3efcb090aa62796aafb82473775f4a4aa4e08b74 100644
 | 
| --- a/src/wasm/wasm-module-builder.cc
 | 
| +++ b/src/wasm/wasm-module-builder.cc
 | 
| @@ -54,6 +54,7 @@ WasmFunctionBuilder::WasmFunctionBuilder(WasmModuleBuilder* builder)
 | 
|        func_index_(static_cast<uint32_t>(builder->functions_.size())),
 | 
|        body_(builder->zone()),
 | 
|        name_(builder->zone()),
 | 
| +      exported_name_(builder->zone()),
 | 
|        i32_temps_(builder->zone()),
 | 
|        i64_temps_(builder->zone()),
 | 
|        f32_temps_(builder->zone()),
 | 
| @@ -139,15 +140,17 @@ void WasmFunctionBuilder::EmitDirectCallIndex(uint32_t index) {
 | 
|    EmitCode(code, sizeof(code));
 | 
|  }
 | 
|  
 | 
| -void WasmFunctionBuilder::SetExported() { exported_ = true; }
 | 
| +void WasmFunctionBuilder::Export() { exported_ = true; }
 | 
|  
 | 
| -void WasmFunctionBuilder::SetName(const char* name, int name_length) {
 | 
| -  name_.clear();
 | 
| -  if (name_length > 0) {
 | 
| -    for (int i = 0; i < name_length; ++i) {
 | 
| -      name_.push_back(*(name + i));
 | 
| -    }
 | 
| -  }
 | 
| +void WasmFunctionBuilder::ExportAs(Vector<const char> name) {
 | 
| +  exported_ = true;
 | 
| +  exported_name_.resize(name.length());
 | 
| +  memcpy(exported_name_.data(), name.start(), name.length());
 | 
| +}
 | 
| +
 | 
| +void WasmFunctionBuilder::SetName(Vector<const char> name) {
 | 
| +  name_.resize(name.length());
 | 
| +  memcpy(name_.data(), name.start(), name.length());
 | 
|  }
 | 
|  
 | 
|  void WasmFunctionBuilder::WriteSignature(ZoneBuffer& buffer) const {
 | 
| @@ -156,10 +159,11 @@ void WasmFunctionBuilder::WriteSignature(ZoneBuffer& buffer) const {
 | 
|  
 | 
|  void WasmFunctionBuilder::WriteExport(ZoneBuffer& buffer) const {
 | 
|    if (exported_) {
 | 
| -    buffer.write_size(name_.size());
 | 
| -    if (name_.size() > 0) {
 | 
| -      buffer.write(reinterpret_cast<const byte*>(&name_[0]), name_.size());
 | 
| -    }
 | 
| +    const ZoneVector<char>* exported_name =
 | 
| +        exported_name_.size() == 0 ? &name_ : &exported_name_;
 | 
| +    buffer.write_size(exported_name->size());
 | 
| +    buffer.write(reinterpret_cast<const byte*>(exported_name->data()),
 | 
| +                 exported_name->size());
 | 
|      buffer.write_u8(kExternalFunction);
 | 
|      buffer.write_u32v(func_index_ +
 | 
|                        static_cast<uint32_t>(builder_->imports_.size()));
 | 
| 
 |