Skip to content

Commit

Permalink
module_evaluation passes
Browse files Browse the repository at this point in the history
  • Loading branch information
ry committed Dec 23, 2019
1 parent 702b460 commit 721e2f7
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 26 deletions.
9 changes: 4 additions & 5 deletions src/primitives.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ use std::ops::Deref;

use crate::isolate::Isolate;
use crate::support::Opaque;
use crate::HandleScope;
use crate::Local;
use crate::Value;

Expand All @@ -29,21 +28,21 @@ extern "C" {
fn v8__False(isolate: *mut Isolate) -> *mut Boolean;
}

pub fn new_null<'sc>(scope: &mut HandleScope<'sc>) -> Local<'sc, Primitive> {
pub fn new_null<'sc>(scope: &mut impl AsMut<Isolate>) -> Local<'sc, Primitive> {
unsafe { Local::from_raw(v8__Null(scope.as_mut())) }.unwrap()
}

pub fn new_undefined<'sc>(
scope: &mut HandleScope<'sc>,
scope: &mut impl AsMut<Isolate>,
) -> Local<'sc, Primitive> {
unsafe { Local::from_raw(v8__Undefined(scope.as_mut())) }.unwrap()
}

pub fn new_true<'sc>(scope: &mut HandleScope<'sc>) -> Local<'sc, Boolean> {
pub fn new_true<'sc>(scope: &mut impl AsMut<Isolate>) -> Local<'sc, Boolean> {
unsafe { Local::from_raw(v8__True(scope.as_mut())) }.unwrap()
}

pub fn new_false<'sc>(scope: &mut HandleScope<'sc>) -> Local<'sc, Boolean> {
pub fn new_false<'sc>(scope: &mut impl AsMut<Isolate>) -> Local<'sc, Boolean> {
unsafe { Local::from_raw(v8__False(scope.as_mut())) }.unwrap()
}

Expand Down
47 changes: 26 additions & 21 deletions tests/test_api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -736,17 +736,18 @@ fn set_promise_reject_callback() {
}

fn mock_script_origin<'sc>(
scope: &mut HandleScope<'sc>,
isolate: &mut impl AsMut<v8::Isolate>,
resource_name_: &str,
) -> v8::ScriptOrigin<'sc> {
let resource_name = v8_str(scope, "foo.js");
let resource_line_offset = v8::Integer::new(scope, 0);
let resource_column_offset = v8::Integer::new(scope, 0);
let resource_is_shared_cross_origin = v8::new_true(scope);
let script_id = v8::Integer::new(scope, 123);
let source_map_url = v8_str(scope, "source_map_url");
let resource_is_opaque = v8::new_true(scope);
let is_wasm = v8::new_false(scope);
let is_module = v8::new_true(scope);
let resource_name = v8_str(isolate, resource_name_);
let resource_line_offset = v8::Integer::new(isolate, 0);
let resource_column_offset = v8::Integer::new(isolate, 0);
let resource_is_shared_cross_origin = v8::new_true(isolate);
let script_id = v8::Integer::new(isolate, 123);
let source_map_url = v8_str(isolate, "source_map_url");
let resource_is_opaque = v8::new_true(isolate);
let is_wasm = v8::new_false(isolate);
let is_module = v8::new_true(isolate);
v8::ScriptOrigin::new(
resource_name.into(),
resource_line_offset,
Expand Down Expand Up @@ -774,7 +775,7 @@ fn script_compiler_source() {
context.enter();

let source = "1+2";
let script_origin = mock_script_origin(scope);
let script_origin = mock_script_origin(scope, "foo.js");
let source =
v8::script_compiler::Source::new(v8_str(scope, source), &script_origin);

Expand Down Expand Up @@ -810,7 +811,7 @@ fn module_instantiation_failures1() {
"import './foo.js';\n\
export {} from './bar.js';",
);
let origin = mock_script_origin(scope);
let origin = mock_script_origin(scope, "foo.js");
let source = v8::script_compiler::Source::new(source_text, &origin);

let mut module = v8::script_compiler::compile_module(
Expand Down Expand Up @@ -887,7 +888,7 @@ fn module_evaluation() {
"import 'Object.expando = 5';\n\
import 'Object.expando *= 2';",
);
let origin = mock_script_origin(scope);
let origin = mock_script_origin(scope, "foo.js");
let source = v8::script_compiler::Source::new(source_text, &origin);

let mut module = v8::script_compiler::compile_module(
Expand All @@ -901,16 +902,20 @@ fn module_evaluation() {

extern "C" fn resolve_callback(
mut context: v8::Local<v8::Context>,
_specifier: v8::Local<v8::String>,
specifier: v8::Local<v8::String>,
_referrer: v8::Local<v8::Module>,
) -> *mut v8::Module {
/*
ScriptOrigin origin = ModuleOrigin(v8_str("module.js"), CcTest::isolate());
ScriptCompiler::Source source(specifier, origin);
return ScriptCompiler::CompileModule(CcTest::isolate(), &source)
.ToLocalChecked();
*/
std::ptr::null_mut()
let isolate: &mut v8::Isolate = context.as_mut();
let origin = mock_script_origin(isolate, "module.js");
let source = v8::script_compiler::Source::new(specifier, &origin);
let mut module = v8::script_compiler::compile_module(
isolate,
source,
v8::script_compiler::CompileOptions::NoCompileOptions,
v8::script_compiler::NoCacheReason::NoReason,
)
.unwrap();
&mut *module
}
let result = module.instantiate_module(context, resolve_callback);
assert!(result.unwrap());
Expand Down

0 comments on commit 721e2f7

Please sign in to comment.