| Index: src/wasm/wasm-result.h | 
| diff --git a/src/wasm/wasm-result.h b/src/wasm/wasm-result.h | 
| index e741de8e5e187e8a4fef4053f910128f61235e73..af929a500098e781f2a6e321a1a4cfd5167ab121 100644 | 
| --- a/src/wasm/wasm-result.h | 
| +++ b/src/wasm/wasm-result.h | 
| @@ -5,6 +5,8 @@ | 
| #ifndef V8_WASM_RESULT_H_ | 
| #define V8_WASM_RESULT_H_ | 
|  | 
| +#include <memory> | 
| + | 
| #include "src/base/compiler-specific.h" | 
| #include "src/base/smart-pointers.h" | 
|  | 
| @@ -39,8 +41,12 @@ enum ErrorCode { | 
| // The overall result of decoding a function or a module. | 
| template <typename T> | 
| struct Result { | 
| -  Result() : val(), error_code(kSuccess), start(nullptr), error_pc(nullptr) { | 
| -    error_msg.Reset(nullptr); | 
| +  Result() : val(), error_code(kSuccess), start(nullptr), error_pc(nullptr) {} | 
| +  Result(Result&& other) { *this = std::move(other); } | 
| +  Result& operator=(Result&& other) { | 
| +    MoveFrom(other); | 
| +    val = other.val; | 
| +    return *this; | 
| } | 
|  | 
| T val; | 
| @@ -48,19 +54,22 @@ struct Result { | 
| const byte* start; | 
| const byte* error_pc; | 
| const byte* error_pt; | 
| -  base::SmartArrayPointer<char> error_msg; | 
| +  std::unique_ptr<char[]> error_msg; | 
|  | 
| bool ok() const { return error_code == kSuccess; } | 
| bool failed() const { return error_code != kSuccess; } | 
|  | 
| template <typename V> | 
| -  void CopyFrom(Result<V>& that) { | 
| +  void MoveFrom(Result<V>& that) { | 
| error_code = that.error_code; | 
| start = that.start; | 
| error_pc = that.error_pc; | 
| error_pt = that.error_pt; | 
| -    error_msg = that.error_msg; | 
| +    error_msg = std::move(that.error_msg); | 
| } | 
| + | 
| + private: | 
| +  DISALLOW_COPY_AND_ASSIGN(Result); | 
| }; | 
|  | 
| template <typename T> | 
|  |