| Index: src/trap-handler/trap-handler.h
|
| diff --git a/src/trap-handler/trap-handler.h b/src/trap-handler/trap-handler.h
|
| index e6dd9bdca463c456af0b4fa75972e8facbc11cee..6fa71c78ba4727e1a6a0505bb459ae8086be8f90 100644
|
| --- a/src/trap-handler/trap-handler.h
|
| +++ b/src/trap-handler/trap-handler.h
|
| @@ -5,10 +5,24 @@
|
| #ifndef V8_TRAP_HANDLER_H_
|
| #define V8_TRAP_HANDLER_H_
|
|
|
| +#include <stdint.h>
|
| +#include <stdlib.h>
|
| +
|
| +#include "src/base/build_config.h"
|
| +
|
| namespace v8 {
|
| namespace internal {
|
| namespace trap_handler {
|
|
|
| +// TODO(eholk): Support trap handlers on other platforms.
|
| +#if V8_TARGET_ARCH_X64 && V8_OS_LINUX
|
| +#define V8_TRAP_HANDLER_SUPPORTED 1
|
| +const bool kTrapHandlerSupported = true;
|
| +#else
|
| +#define V8_TRAP_HANDLER_SUPPORTED 0
|
| +const bool kTrapHandlerSupported = false;
|
| +#endif
|
| +
|
| struct ProtectedInstructionData {
|
| // The offset of this instruction from the start of its code object.
|
| intptr_t instr_offset;
|
| @@ -19,6 +33,30 @@ struct ProtectedInstructionData {
|
| intptr_t landing_offset;
|
| };
|
|
|
| +/// Adjusts the base code pointer.
|
| +void UpdateCodePointer(int index, void* base);
|
| +
|
| +/// Adds the handler data to the place where the signal handler will find it.
|
| +///
|
| +/// This returns a number that can be used to identify the handler data to
|
| +/// UpdateCodePointer and ReleaseHandlerData, or -1 on failure.
|
| +int RegisterHandlerData(void* base, size_t size,
|
| + size_t num_protected_instructions,
|
| + ProtectedInstructionData* protected_instructions);
|
| +
|
| +/// Removes the data from the master list and frees any memory, if necessary.
|
| +void ReleaseHandlerData(int index);
|
| +
|
| +void SetThreadInWasm();
|
| +void ClearThreadInWasm();
|
| +
|
| +bool IsThreadInWasm();
|
| +
|
| +bool EnableTrapHandler();
|
| +bool RegisterDefaultSignalHandler();
|
| +bool TryHandleFault(void* source_instruction, void* target_data,
|
| + void** return_address);
|
| +
|
| } // namespace trap_handler
|
| } // namespace internal
|
| } // namespace v8
|
|
|