Skip to content

C++ code on Jolt, full profiller support #1670

Description

@xxuejie

Hi,

I've been toying with running C++ code on Jolt. The full story is documented here.

tl;dr:

  • I have a C++ ray tracer example running on Jolt VM. The guest program was built using clang / lld alone. I used a patched musl and libcxx so they are compatible with Jolt's ABI. I think this can serve as a different example in addition to Jolt's macro based approach.
  • I noticed a slight discrepancy: the doc mentions termination address, MemoryLayout also has it, but writing to this address is actually a no-op, execution actually terminates with an infinite loop. My question is: is this just a coincidence? Will Jolt keep using the termination address, or be terminated just via j .?
  • I understand that jolt has guest level profiling by explicitly marking a code section. I still believe a full program instrumentation path could be useful. So I built a simple module that converts Jolt's trace to a profiler usage format with multiple backends: flamegraphs, pprof and samply. I assume it might be useful for more. If you believe so I can start preparing it for upstream.

Let me know if you have any thoughts on the above points or the detailed post in general. Many thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions