2015-08-06 2 views
0

Все это относится к движку JavaScript V8. Где определяется класс V8 :: Isolate? в коде (api.cc):Где находится определение V8 :: Isolate?

i::Isolate* isolate = new i::Isolate(false); 

изолят создается из v8 :: внутреннего :: изолировать класс. Вот кастинг в объект v8 :: isolate.

Isolate* Isolate::New(const Isolate::CreateParams& params) { 
    i::Isolate* isolate = new i::Isolate(false); 
    Isolate* v8_isolate = reinterpret_cast<Isolate*>(isolate); 
    ... 
} 

Кто-нибудь знает, где этот класс определяется?

+0

V8 является открытым исходным кодом, почему бы не скачать его и не искать в файлах заголовков? –

+0

Я искал какое-то время, и я просто не понимаю, как он возвращает этот тип, когда он не определен нигде, кроме файла v8.h, который он не входит в файл api.cc. –

+0

Возможно, какой-то другой заголовочный файл содержит правильный файл заголовка? –

ответ

0

Существует два класса Isolate. Класс v8::Isolate, являющийся частью открытого интерфейса, объявлен в include/v8.h. Класс v8::internal::Isolate, который является фактическим изолятом, объявляется в src/isolate.h.

+0

api.cc или api.h на самом деле не #include файл src/isolate.h в любом месте ... как он ссылается? –

+0

Извините, исправления, это не #include файл include/v8.h, а не src/isolate.h. –

+0

'api.h' включает' src/v8.h', который, в свою очередь, включает 'include/v8. h'; его легко заметить. Как правило, если вы не знаете, где и как файл включен в некоторую компиляцию, перезапустите компиляцию с теми же аргументами командной строки, но добавьте '-E' и посмотрите на результат для первого появления файла' # 1 < -name-здесь> ' – chill

Смежные вопросы