| Index: src/wasm/wasm-interpreter.h
|
| diff --git a/src/wasm/wasm-interpreter.h b/src/wasm/wasm-interpreter.h
|
| index f4adf378efc1bf30edbc3c40b03ca827efd59ab9..ef74e5b32fb0e874a1c26a52420f7c9f324e5903 100644
|
| --- a/src/wasm/wasm-interpreter.h
|
| +++ b/src/wasm/wasm-interpreter.h
|
| @@ -79,7 +79,12 @@ inline void WasmVal::to() {
|
| class WasmFrame {
|
| public:
|
| const WasmFunction* function() const { return function_; }
|
| - int pc() const { return pc_; }
|
| + int pc() const {
|
| + // TODO(wasm): Remove USE once we actually use them.
|
| + USE(fp_);
|
| + USE(sp_);
|
| + return pc_;
|
| + }
|
|
|
| private:
|
| friend class WasmInterpreter;
|
| @@ -108,31 +113,36 @@ class V8_EXPORT_PRIVATE WasmInterpreter {
|
| enum State { STOPPED, RUNNING, PAUSED, FINISHED, TRAPPED };
|
|
|
| // Representation of a thread in the interpreter.
|
| - class Thread {
|
| + class ThreadImpl;
|
| + class V8_EXPORT_PRIVATE Thread {
|
| + ThreadImpl* impl_;
|
| +
|
| public:
|
| + explicit Thread(ThreadImpl*);
|
| +
|
| // Execution control.
|
| - virtual State state() = 0;
|
| - virtual void PushFrame(const WasmFunction* function, WasmVal* args) = 0;
|
| - virtual State Run() = 0;
|
| - virtual State Step() = 0;
|
| - virtual void Pause() = 0;
|
| - virtual void Reset() = 0;
|
| - virtual ~Thread() {}
|
| + State state();
|
| + void PushFrame(const WasmFunction* function, WasmVal* args);
|
| + State Run();
|
| + State Step();
|
| + void Pause();
|
| + void Reset();
|
|
|
| // Stack inspection and modification.
|
| - virtual pc_t GetBreakpointPc() = 0;
|
| - virtual int GetFrameCount() = 0;
|
| - virtual const WasmFrame* GetFrame(int index) = 0;
|
| - virtual WasmFrame* GetMutableFrame(int index) = 0;
|
| - virtual WasmVal GetReturnValue(int index = 0) = 0;
|
| + pc_t GetBreakpointPc();
|
| + int GetFrameCount();
|
| + const WasmFrame* GetFrame(int index);
|
| + WasmFrame* GetMutableFrame(int index);
|
| + WasmVal GetReturnValue(int index = 0);
|
| // Returns true if the thread executed an instruction which may produce
|
| // nondeterministic results, e.g. float div, float sqrt, and float mul,
|
| // where the sign bit of a NaN is nondeterministic.
|
| - virtual bool PossibleNondeterminism() = 0;
|
| + bool PossibleNondeterminism();
|
|
|
| // Thread-specific breakpoints.
|
| - bool SetBreakpoint(const WasmFunction* function, int pc, bool enabled);
|
| - bool GetBreakpoint(const WasmFunction* function, int pc);
|
| + // TODO(wasm): Implement this once we support multiple threads.
|
| + // bool SetBreakpoint(const WasmFunction* function, int pc, bool enabled);
|
| + // bool GetBreakpoint(const WasmFunction* function, int pc);
|
| };
|
|
|
| WasmInterpreter(const ModuleBytesEnv& env, AccountingAllocator* allocator);
|
|
|