Compare commits

..

No commits in common. "5d123250b36815adb5941cb9b8d5724a18f0139c" and "9c846618d11a06e94f4c76bf4716982853bb1137" have entirely different histories.

3 changed files with 11280 additions and 7 deletions

11274
Cargo.nix Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +1,2 @@
pub mod quickjs; pub mod v8;
// pub mod mlua; // pub mod mlua;

View File

@ -102,9 +102,8 @@ impl V8Runtime {
Ok(event) => event, Ok(event) => event,
Err(err) => break, Err(err) => break,
}; };
let (event, v8runtime) = (event.event, event.runtime);
match event { match event {
EventType::GetScriptConfig(script) => { Event::GetScriptConfig(script) => {
let code = FastString::from(script); let code = FastString::from(script);
let result = runtime.execute_script("", code).unwrap(); let result = runtime.execute_script("", code).unwrap();
@ -116,7 +115,7 @@ impl V8Runtime {
// rtx.send(RuntimeReturn::Value(unsafe { V8Value::new(SerdeValue::from(result)) })) // rtx.send(RuntimeReturn::Value(unsafe { V8Value::new(SerdeValue::from(result)) }))
rtx.send(RuntimeReturn::Config(config)).unwrap(); rtx.send(RuntimeReturn::Config(config)).unwrap();
} }
EventType::ExecuteFunction(f, args) => { Event::ExecuteFunction(f, args) => {
let value = unsafe { f.get_inner() }.get_value(); let value = unsafe { f.get_inner() }.get_value();
let value = handlers[value]; let value = handlers[value];
let mut scope = runtime.handle_scope(); let mut scope = runtime.handle_scope();
@ -134,7 +133,7 @@ impl V8Runtime {
let result = result.map(|r| SerdeValue::from(r)); let result = result.map(|r| SerdeValue::from(r));
rtx.send(RuntimeReturn::OptionalValue( rtx.send(RuntimeReturn::OptionalValue(
result.map(|result| unsafe { V8Value::new(v8runtime.clone(), SerdeValue::from(result)) }), result.map(|result| unsafe { V8Value::new(SerdeValue::from(result)) }),
)) ))
.unwrap(); .unwrap();
} }
@ -252,7 +251,7 @@ impl ProviderCall for V8Function {
self.runtime self.runtime
.lock() .lock()
.unwrap() .unwrap()
.call_event(EventType::ExecuteFunction( .call_event(Event::ExecuteFunction(
self.clone(), self.clone(),
args.into_iter().map(|v| (*v).clone()).collect(), args.into_iter().map(|v| (*v).clone()).collect(),
)); ));
@ -278,7 +277,7 @@ impl Provider for V8Runtime {
type InitData = V8Init; type InitData = V8Init;
fn init_config(&self, d: Self::InitData) -> Result<RunnerConfig<Self>, Self::Error> { fn init_config(&self, d: Self::InitData) -> Result<RunnerConfig<Self>, Self::Error> {
let result = self.call_event(EventType::GetScriptConfig(d.code)); let result = self.call_event(Event::GetScriptConfig(d.code));
let value = result.as_config().unwrap(); let value = result.as_config().unwrap();
Ok(value) Ok(value)
} }