$63 GRAYBYTE WORDPRESS FILE MANAGER $26

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/cpanel/ea-nodejs22/include/node/

HOME
Current File : /opt/cpanel/ea-nodejs22/include/node//v8-unwinder.h
// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef INCLUDE_V8_UNWINDER_H_
#define INCLUDE_V8_UNWINDER_H_

#include <memory>

#include "v8-embedder-state-scope.h"  // NOLINT(build/include_directory)
#include "v8config.h"                 // NOLINT(build/include_directory)

namespace v8 {
// Holds the callee saved registers needed for the stack unwinder. It is the
// empty struct if no registers are required. Implemented in
// include/v8-unwinder-state.h.
struct CalleeSavedRegisters;

// A RegisterState represents the current state of registers used
// by the sampling profiler API.
struct V8_EXPORT RegisterState {
  RegisterState();
  ~RegisterState();
  RegisterState(const RegisterState& other);
  RegisterState& operator=(const RegisterState& other);

  void* pc;  // Instruction pointer.
  void* sp;  // Stack pointer.
  void* fp;  // Frame pointer.
  void* lr;  // Link register (or nullptr on platforms without a link register).
  // Callee saved registers (or null if no callee saved registers were stored)
  std::unique_ptr<CalleeSavedRegisters> callee_saved;
};

// A StateTag represents a possible state of the VM.
enum StateTag : uint16_t {
  JS,
  GC,
  PARSER,
  BYTECODE_COMPILER,
  COMPILER,
  OTHER,
  EXTERNAL,
  ATOMICS_WAIT,
  IDLE
};

// The output structure filled up by GetStackSample API function.
struct SampleInfo {
  size_t frames_count;              // Number of frames collected.
  void* external_callback_entry;    // External callback address if VM is
                                    // executing an external callback.
  void* context;                    // Incumbent native context address.
  void* embedder_context;           // Native context address for embedder state
  StateTag vm_state;                // Current VM state.
  EmbedderStateTag embedder_state;  // Current Embedder state
};

struct MemoryRange {
  const void* start = nullptr;
  size_t length_in_bytes = 0;
};

struct JSEntryStub {
  MemoryRange code;
};

struct JSEntryStubs {
  JSEntryStub js_entry_stub;
  JSEntryStub js_construct_entry_stub;
  JSEntryStub js_run_microtasks_entry_stub;
};

/**
 * Various helpers for skipping over V8 frames in a given stack.
 *
 * The unwinder API is only supported on the x64, ARM64 and ARM32 architectures.
 */
class V8_EXPORT Unwinder {
 public:
  /**
   * Attempt to unwind the stack to the most recent C++ frame. This function is
   * signal-safe and does not access any V8 state and thus doesn't require an
   * Isolate.
   *
   * The unwinder needs to know the location of the JS Entry Stub (a piece of
   * code that is run when C++ code calls into generated JS code). This is used
   * for edge cases where the current frame is being constructed or torn down
   * when the stack sample occurs.
   *
   * The unwinder also needs the virtual memory range of all possible V8 code
   * objects. There are two ranges required - the heap code range and the range
   * for code embedded in the binary.
   *
   * Available on x64, ARM64 and ARM32.
   *
   * \param code_pages A list of all of the ranges in which V8 has allocated
   * executable code. The caller should obtain this list by calling
   * Isolate::CopyCodePages() during the same interrupt/thread suspension that
   * captures the stack.
   * \param register_state The current registers. This is an in-out param that
   * will be overwritten with the register values after unwinding, on success.
   * \param stack_base The resulting stack pointer and frame pointer values are
   * bounds-checked against the stack_base and the original stack pointer value
   * to ensure that they are valid locations in the given stack. If these values
   * or any intermediate frame pointer values used during unwinding are ever out
   * of these bounds, unwinding will fail.
   *
   * \return True on success.
   */
  static bool TryUnwindV8Frames(const JSEntryStubs& entry_stubs,
                                size_t code_pages_length,
                                const MemoryRange* code_pages,
                                RegisterState* register_state,
                                const void* stack_base);

  /**
   * Whether the PC is within the V8 code range represented by code_pages.
   *
   * If this returns false, then calling UnwindV8Frames() with the same PC
   * and unwind_state will always fail. If it returns true, then unwinding may
   * (but not necessarily) be successful.
   *
   * Available on x64, ARM64 and ARM32
   */
  static bool PCIsInV8(size_t code_pages_length, const MemoryRange* code_pages,
                       void* pc);
};

}  // namespace v8

#endif  // INCLUDE_V8_UNWINDER_H_

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
1 Jan 1970 8.00 AM
root / root
0
cppgc
--
16 Mar 2026 5.04 PM
root / root
0755
libplatform
--
16 Mar 2026 5.04 PM
root / root
0755
openssl
--
16 Mar 2026 5.04 PM
root / root
0755
uv
--
16 Mar 2026 5.04 PM
root / root
0755
common.gypi
26.594 KB
17 Jan 2026 1.16 AM
root / root
0644
config.gypi
32.077 KB
17 Jan 2026 1.16 AM
root / root
0644
js_native_api.h
31.64 KB
17 Jan 2026 1.16 AM
root / root
0644
js_native_api_types.h
6.868 KB
17 Jan 2026 1.16 AM
root / root
0644
node.h
67.989 KB
17 Jan 2026 1.16 AM
root / root
0644
node_api.h
10.344 KB
17 Jan 2026 1.16 AM
root / root
0644
node_api_types.h
1.565 KB
17 Jan 2026 1.16 AM
root / root
0644
node_buffer.h
3.598 KB
17 Jan 2026 1.16 AM
root / root
0644
node_object_wrap.h
3.776 KB
17 Jan 2026 1.16 AM
root / root
0644
node_version.h
4.144 KB
17 Jan 2026 1.16 AM
root / root
0644
uv.h
71.104 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-array-buffer.h
17.887 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-callbacks.h
16.595 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-container.h
5.819 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-context.h
17.758 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-cppgc.h
7.462 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-data.h
1.585 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-date.h
1.189 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-debug.h
5.04 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-embedder-heap.h
2.71 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-embedder-state-scope.h
1.458 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-exception.h
7.411 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-extension.h
1.826 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-external.h
0.902 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-forward.h
1.648 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-function-callback.h
19.188 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-function.h
4.424 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-handle-base.h
4.301 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-initialization.h
10.232 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-internal.h
57.221 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-isolate.h
63.385 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-json.h
1.324 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-local-handle.h
23.596 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-locker.h
3.863 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-maybe.h
4.467 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-memory-span.h
6.271 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-message.h
7.244 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-microtask-queue.h
4.95 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-microtask.h
0.841 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-object.h
29.552 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-persistent-handle.h
17.812 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-platform.h
47.902 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-primitive-object.h
2.53 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-primitive.h
27.693 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-profiler.h
41.114 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-promise.h
5.17 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-proxy.h
1.226 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-regexp.h
3.097 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-script.h
30.593 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-snapshot.h
10.146 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-source-location.h
2.536 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-statistics.h
7.448 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-template.h
50.36 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-traced-handle.h
12.402 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-typed-array.h
11.3 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-unwinder.h
4.64 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-value-serializer.h
10.562 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-value.h
16.706 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-version.h
0.755 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-wasm.h
6.004 KB
17 Jan 2026 1.16 AM
root / root
0644
v8-weak-callback-info.h
2.413 KB
17 Jan 2026 1.16 AM
root / root
0644
v8.h
3.687 KB
17 Jan 2026 1.16 AM
root / root
0644
v8config.h
32.853 KB
17 Jan 2026 1.16 AM
root / root
0644
zconf.h
16.597 KB
17 Jan 2026 1.16 AM
root / root
0644
zlib.h
95.17 KB
17 Jan 2026 1.16 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF