0
0
Fork 0
mirror of https://github.com/denoland/rusty_v8.git synced 2025-02-02 04:37:35 -05:00

Create CallbackScope from Promise and PromiseRejectMessage (#168)

This commit is contained in:
Bert Belder 2020-01-02 22:22:33 +01:00 committed by Ry Dahl
parent 45b766c01f
commit e409030541
2 changed files with 24 additions and 2 deletions

View file

@ -1062,6 +1062,10 @@ v8::Promise* v8__Promise__Then2(v8::Promise* self,
return maybe_local_to_ptr(self->Then(context, on_fulfilled, on_rejected));
}
v8::Isolate* v8__Promise__GetIsolate(v8::Promise* self) {
return self->GetIsolate();
}
v8::PromiseRejectEvent v8__PromiseRejectMessage__GetEvent(
const v8::PromiseRejectMessage& self) {
return self.GetEvent();

View file

@ -4,8 +4,14 @@ use crate::InIsolate;
use crate::Isolate;
use crate::Local;
use crate::Message;
use crate::Promise;
use crate::PromiseRejectMessage;
use std::mem::MaybeUninit;
extern "C" {
fn v8__Promise__GetIsolate(promise: *mut Promise) -> *mut Isolate;
}
pub trait GetIsolate
where
Self: Sized,
@ -13,15 +19,27 @@ where
fn get_isolate(&mut self) -> &mut Isolate;
}
impl GetIsolate for Context {
fn get_isolate(&mut self) -> &mut Isolate {
self.get_isolate()
}
}
impl GetIsolate for Message {
fn get_isolate(&mut self) -> &mut Isolate {
self.get_isolate()
}
}
impl GetIsolate for Context {
impl GetIsolate for Promise {
fn get_isolate(&mut self) -> &mut Isolate {
self.get_isolate()
unsafe { &mut *v8__Promise__GetIsolate(self) }
}
}
impl<'a> GetIsolate for PromiseRejectMessage<'a> {
fn get_isolate(&mut self) -> &mut Isolate {
unsafe { &mut *v8__Promise__GetIsolate(&mut *self.get_promise()) }
}
}