Avoid subverting bool return value
This commit is contained in:
parent
4506584c48
commit
826ac80e62
|
@ -7,7 +7,8 @@
|
||||||
#include <solana_sdk.h>
|
#include <solana_sdk.h>
|
||||||
|
|
||||||
extern bool entrypoint(const uint8_t *input) {
|
extern bool entrypoint(const uint8_t *input) {
|
||||||
uint64_t x = *(uint64_t *)input;
|
uint64_t x = *(uint64_t *) input;
|
||||||
|
uint64_t *result = (uint64_t *) input + 1;
|
||||||
uint64_t count = 0;
|
uint64_t count = 0;
|
||||||
|
|
||||||
for (int i = 1; i <= x; i++) {
|
for (int i = 1; i <= x; i++) {
|
||||||
|
@ -23,5 +24,6 @@ extern bool entrypoint(const uint8_t *input) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return count;
|
*result = count;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,13 @@ extern crate solana_bpf_loader;
|
||||||
extern crate solana_rbpf;
|
extern crate solana_rbpf;
|
||||||
extern crate test;
|
extern crate test;
|
||||||
|
|
||||||
use byteorder::{LittleEndian, WriteBytesExt};
|
use byteorder::{ByteOrder, LittleEndian, WriteBytesExt};
|
||||||
use solana_rbpf::EbpfVmRaw;
|
use solana_rbpf::EbpfVmRaw;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Error;
|
use std::io::Error;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
use std::mem;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
|
@ -73,6 +74,7 @@ fn bench_program_alu(bencher: &mut Bencher) {
|
||||||
inner_iter
|
inner_iter
|
||||||
.write_u64::<LittleEndian>(ARMSTRONG_LIMIT)
|
.write_u64::<LittleEndian>(ARMSTRONG_LIMIT)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
inner_iter.write_u64::<LittleEndian>(0).unwrap();
|
||||||
|
|
||||||
let mut file = File::open(create_bpf_path("bench_alu")).expect("file open failed");
|
let mut file = File::open(create_bpf_path("bench_alu")).expect("file open failed");
|
||||||
let mut elf = Vec::new();
|
let mut elf = Vec::new();
|
||||||
|
@ -81,9 +83,15 @@ fn bench_program_alu(bencher: &mut Bencher) {
|
||||||
|
|
||||||
println!("Interpreted:");
|
println!("Interpreted:");
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
ARMSTRONG_EXPECTED,
|
1, /*true*/
|
||||||
vm.execute_program(&mut inner_iter).unwrap()
|
vm.execute_program(&mut inner_iter).unwrap()
|
||||||
);
|
);
|
||||||
|
assert_eq!(ARMSTRONG_LIMIT, LittleEndian::read_u64(&inner_iter));
|
||||||
|
assert_eq!(
|
||||||
|
ARMSTRONG_EXPECTED,
|
||||||
|
LittleEndian::read_u64(&inner_iter[mem::size_of::<u64>()..])
|
||||||
|
);
|
||||||
|
|
||||||
bencher.iter(|| {
|
bencher.iter(|| {
|
||||||
vm.execute_program(&mut inner_iter).unwrap();
|
vm.execute_program(&mut inner_iter).unwrap();
|
||||||
});
|
});
|
||||||
|
@ -100,10 +108,16 @@ fn bench_program_alu(bencher: &mut Bencher) {
|
||||||
vm.jit_compile().unwrap();
|
vm.jit_compile().unwrap();
|
||||||
unsafe {
|
unsafe {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
ARMSTRONG_EXPECTED,
|
1, /*true*/
|
||||||
vm.execute_program_jit(&mut inner_iter).unwrap()
|
vm.execute_program_jit(&mut inner_iter).unwrap()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
assert_eq!(ARMSTRONG_LIMIT, LittleEndian::read_u64(&inner_iter));
|
||||||
|
assert_eq!(
|
||||||
|
ARMSTRONG_EXPECTED,
|
||||||
|
LittleEndian::read_u64(&inner_iter[mem::size_of::<u64>()..])
|
||||||
|
);
|
||||||
|
|
||||||
bencher.iter(|| unsafe {
|
bencher.iter(|| unsafe {
|
||||||
vm.execute_program_jit(&mut inner_iter).unwrap();
|
vm.execute_program_jit(&mut inner_iter).unwrap();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue