feat(quickjs): add quickjs sample

This commit is contained in:
2020-07-12 13:16:00 +08:00
parent ae0b65aef3
commit bc73717adb
4 changed files with 106 additions and 2 deletions

77
quickjs/Cargo.lock generated Normal file
View File

@@ -0,0 +1,77 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "cc"
version = "1.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518"
[[package]]
name = "copy_dir"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e4281031634644843bd2f5aa9c48cf98fc48d6b083bd90bb11becf10deaf8b0"
dependencies = [
"walkdir",
]
[[package]]
name = "kernel32-sys"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
dependencies = [
"winapi",
"winapi-build",
]
[[package]]
name = "libquickjs-sys"
version = "0.7.0"
dependencies = [
"cc",
"copy_dir",
]
[[package]]
name = "once_cell"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
[[package]]
name = "quick-js"
version = "0.3.5-alpha.0"
dependencies = [
"libquickjs-sys",
"once_cell",
]
[[package]]
name = "quickjs"
version = "0.1.0"
dependencies = [
"quick-js",
]
[[package]]
name = "walkdir"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c66c0b9792f0a765345452775f3adbd28dde9d33f30d13e5dcc5ae17cf6f3780"
dependencies = [
"kernel32-sys",
"winapi",
]
[[package]]
name = "winapi"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
[[package]]
name = "winapi-build"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"

10
quickjs/Cargo.toml Normal file
View File

@@ -0,0 +1,10 @@
[package]
name = "quickjs"
version = "0.1.0"
authors = ["Hatter Jiang <jht5945@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
quick-js = { path= "external/quickjs-rs" }

View File

@@ -1571,9 +1571,12 @@ static inline uint8_t *js_get_stack_pointer(void)
static inline BOOL js_check_stack_overflow(JSRuntime *rt, size_t alloca_size)
{
size_t size;
// stackoverflow patch
// size_t size;
ptrdiff_t size;
size = rt->stack_top - js_get_stack_pointer();
return unlikely((size + alloca_size) > rt->stack_size);
// return unlikely((size + alloca_size) > rt->stack_size);
return unlikely((size + (ptrdiff_t)alloca_size) > (ptrdiff_t)rt->stack_size);
}
#endif

14
quickjs/src/main.rs Normal file
View File

@@ -0,0 +1,14 @@
use quick_js::Context;
fn main() {
let context = Context::new().unwrap();
let value = context.eval("1 + 2").unwrap();
println!("js: 1 + 2 = {:?}", value);
context.add_callback("myCallback", |a: i32, b: i32| a + b * b).unwrap();
let script = r#" var x = myCallback(10, 20); x; "#;
let value = context.eval(script).unwrap();
println!("js: callback = {:?}", value);
}