Fix VTune build (#3219)

* Fix vtune build

* Add vtune build to automation

* don't allocate a different module id for each function
This commit is contained in:
Benjamin Bouvier
2021-08-20 17:17:54 +02:00
committed by GitHub
parent 74c18a6af4
commit 18fe7d124e
3 changed files with 14 additions and 11 deletions

View File

@@ -132,6 +132,7 @@ jobs:
- run: cargo check -p wasmtime --no-default-features --features wat
- run: cargo check -p wasmtime --no-default-features --features lightbeam
- run: cargo check -p wasmtime --no-default-features --features jitdump
- run: cargo check -p wasmtime --no-default-features --features vtune
- run: cargo check -p wasmtime --no-default-features --features cache
- run: cargo check -p wasmtime --no-default-features --features async
- run: cargo check -p wasmtime --no-default-features --features uffd

View File

@@ -336,13 +336,13 @@ impl State {
let rh = RecordHeader {
id: RecordId::JitCodeLoad as u32,
record_size: size_limit as u32 + name_len as u32 + len as u32,
timestamp: timestamp,
timestamp,
};
let clr = CodeLoadRecord {
header: rh,
pid: pid,
tid: tid,
pid,
tid,
virtual_address: addr as u64,
address: addr as u64,
size: len as u64,
@@ -435,8 +435,8 @@ impl State {
let mut clr = CodeLoadRecord {
header: record_header,
pid: pid,
tid: tid,
pid,
tid,
virtual_address: 0,
address: 0,
size: 0,

View File

@@ -10,13 +10,11 @@
use crate::ProfilingAgent;
use anyhow::Result;
use core::ptr;
use cranelift_entity::PrimaryMap;
use cranelift_wasm_types::DefinedFuncIndex;
use ittapi_rs::*;
use std::collections::HashMap;
use std::ffi::CString;
use std::sync::Mutex;
use wasmtime_environ::Module;
use std::sync::{atomic, Mutex};
use wasmtime_environ::{DefinedFuncIndex, Module, PrimaryMap};
use wasmtime_runtime::VMFunctionBody;
/// Interface for driving the ittapi for VTune support
@@ -76,7 +74,7 @@ impl State {
len: usize,
) -> () {
let mut jmethod = _iJIT_Method_Load {
method_id: method_id,
method_id,
method_name: CString::new(method_name)
.expect("CString::new failed")
.into_raw(),
@@ -132,13 +130,17 @@ impl State {
functions: &PrimaryMap<DefinedFuncIndex, *mut [VMFunctionBody]>,
_dbg_image: Option<&[u8]>,
) -> () {
// Global counter for module ids.
static MODULE_ID: atomic::AtomicUsize = atomic::AtomicUsize::new(0);
let global_module_id = MODULE_ID.fetch_add(1, atomic::Ordering::SeqCst);
for (idx, func) in functions.iter() {
let (addr, len) = unsafe { ((**func).as_ptr() as *const u8, (**func).len()) };
let default_filename = "wasm_file";
let default_module_name = String::from("wasm_module");
let module_name = module.name.as_ref().unwrap_or(&default_module_name);
let method_name = super::debug_name(module, idx);
let method_id = self.get_method_id(module.id, idx);
let method_id = self.get_method_id(global_module_id, idx);
println!(
"Event Load: ({}) {:?}::{:?} Addr:{:?}\n",
method_id, module_name, method_name, addr