MCPcopy Create free account
hub / github.com/HaxeFoundation/hxcpp / CaptureX64

Function CaptureX64

src/hx/gc/GcRegCapture.cpp:45–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43namespace hx {
44
45void CaptureX64(RegisterCaptureBuffer &outBuffer)
46{
47 #if !defined(__GNUC__)
48 CONTEXT context;
49
50 context.ContextFlags = CONTEXT_INTEGER;
51 RtlCaptureContext(&context);
52
53 outBuffer.rbx = (void *)context.Rbx;
54 outBuffer.rbp = (void *)context.Rbp;
55 outBuffer.rdi = (void *)context.Rdi;
56 outBuffer.r12 = (void *)context.R12;
57 outBuffer.r13 = (void *)context.R13;
58 outBuffer.r14 = (void *)context.R14;
59 outBuffer.r15 = (void *)context.R15;
60 memcpy(outBuffer.xmm, &context.Xmm0, sizeof(outBuffer.xmm));
61 #else
62 void *regBx;
63 void *regBp;
64 void *regDi;
65 void *reg12;
66 void *reg13;
67 void *reg14;
68 void *reg15;
69 asm ("movq %%rbx, %0\n\t" : "=r" (regBx) );
70 asm ("movq %%rbp, %0\n\t" : "=r" (regBp) );
71 asm ("movq %%rdi, %0\n\t" : "=r" (regDi) );
72 asm ("movq %%r12, %0\n\t" : "=r" (reg12) );
73 asm ("movq %%r13, %0\n\t" : "=r" (reg13) );
74 asm ("movq %%r14, %0\n\t" : "=r" (reg14) );
75 asm ("movq %%r15, %0\n\t" : "=r" (reg15) );
76 outBuffer.rbx = regBx;
77 outBuffer.rbp = regBp;
78 outBuffer.r12 = reg12;
79 outBuffer.r13 = reg13;
80 outBuffer.r14 = reg14;
81 outBuffer.r15 = reg15;
82 #endif
83}
84
85} // end namespace hx
86

Callers

nothing calls this directly

Calls 1

memcpyFunction · 0.85

Tested by

no test coverage detected