Переглянути джерело

Show jit compilation where possible

Jan-Erik Rediger 7 роки тому
батько
коміт
b50aec9aae
2 змінених файлів з 28 додано та 4 видалено
  1. 15 3
      examples/load_elf.rs
  2. 13 1
      examples/uptime.rs

+ 15 - 3
examples/load_elf.rs

@@ -118,7 +118,19 @@ fn main() {
     println!("Packet #1, program returned: {:?} ({:#x})", res, res);
     assert_eq!(res, 0xffffffff);
 
-    let res = vm.prog_exec(packet2);
-    println!("Packet #2, program returned: {:?} ({:#x})", res, res);
-    assert_eq!(res, 0);
+    #[cfg(not(windows))]
+    {
+        vm.jit_compile();
+
+        let res = unsafe { vm.prog_exec_jit(packet2) };
+        println!("Packet #2, program returned: {:?} ({:#x})", res, res);
+        assert_eq!(res, 0);
+    }
+
+    #[cfg(windows)]
+    {
+        let res = vm.prog_exec(packet2);
+        println!("Packet #2, program returned: {:?} ({:#x})", res, res);
+        assert_eq!(res, 0);
+    }
 }

+ 13 - 1
examples/uptime.rs

@@ -54,7 +54,19 @@ fn main() {
     vm.set_prog(prog2);
     vm.register_helper(helpers::BPF_KTIME_GETNS_IDX, helpers::bpf_time_getns);
 
-    let time = vm.prog_exec();
+    let time;
+
+    #[cfg(not(windows))]
+    {
+        vm.jit_compile();
+
+        time = unsafe { vm.prog_exec_jit() };
+    }
+
+    #[cfg(windows)]
+    {
+        time = vm.prog_exec();
+    }
 
     let days    =  time / 10u64.pow(9)  / 60   / 60  / 24;
     let hours   = (time / 10u64.pow(9)  / 60   / 60) % 24;