@@ -1206,31 +1206,12 @@ void ContextifyContext::CompileFunction(
1206
1206
data + cached_data_buf->ByteOffset (), cached_data_buf->ByteLength ());
1207
1207
}
1208
1208
1209
- // Set host_defined_options
1210
- Local<PrimitiveArray> host_defined_options =
1211
- PrimitiveArray::New (isolate, loader::HostDefinedOptions::kLength );
1212
- host_defined_options->Set (
1213
- isolate, loader::HostDefinedOptions::kID , id_symbol);
1214
-
1215
- ScriptOrigin origin (isolate,
1216
- filename,
1217
- line_offset, // line offset
1218
- column_offset, // column offset
1219
- true , // is cross origin
1220
- -1 , // script id
1221
- Local<Value>(), // source map URL
1222
- false , // is opaque (?)
1223
- false , // is WASM
1224
- false , // is ES Module
1225
- host_defined_options);
1226
-
1227
- ScriptCompiler::Source source = ScriptCompiler::Source (code, origin, cached_data);
1228
- ScriptCompiler::CompileOptions options;
1229
- if (source.GetCachedData () == nullptr ) {
1230
- options = ScriptCompiler::kNoCompileOptions ;
1231
- } else {
1232
- options = ScriptCompiler::kConsumeCodeCache ;
1233
- }
1209
+ Local<PrimitiveArray> host_defined_options = GetHostDefinedOptions (
1210
+ isolate, id_symbol);
1211
+ ScriptCompiler::Source source = GetCommonJSSourceInstance (
1212
+ isolate, code, filename, line_offset, column_offset, host_defined_options,
1213
+ cached_data);
1214
+ ScriptCompiler::CompileOptions options = GetCompileOptions (source);
1234
1215
1235
1216
Context::Scope scope (parsing_context);
1236
1217
@@ -1279,6 +1260,49 @@ void ContextifyContext::CompileFunction(
1279
1260
args.GetReturnValue ().Set (result);
1280
1261
}
1281
1262
1263
+ Local<PrimitiveArray> ContextifyContext::GetHostDefinedOptions (
1264
+ Isolate* isolate,
1265
+ Local<Symbol> id_symbol) {
1266
+ Local<PrimitiveArray> host_defined_options =
1267
+ PrimitiveArray::New (isolate, loader::HostDefinedOptions::kLength );
1268
+ host_defined_options->Set (
1269
+ isolate, loader::HostDefinedOptions::kID , id_symbol);
1270
+ return host_defined_options;
1271
+ }
1272
+
1273
+ ScriptCompiler::Source ContextifyContext::GetCommonJSSourceInstance (
1274
+ Isolate* isolate,
1275
+ Local<String> code,
1276
+ Local<String> filename,
1277
+ int line_offset,
1278
+ int column_offset,
1279
+ Local<PrimitiveArray> host_defined_options,
1280
+ ScriptCompiler::CachedData* cached_data) {
1281
+ ScriptOrigin origin (isolate,
1282
+ filename,
1283
+ line_offset, // line offset
1284
+ column_offset, // column offset
1285
+ true , // is cross origin
1286
+ -1 , // script id
1287
+ Local<Value>(), // source map URL
1288
+ false , // is opaque (?)
1289
+ false , // is WASM
1290
+ false , // is ES Module
1291
+ host_defined_options);
1292
+ return ScriptCompiler::Source (code, origin, cached_data);
1293
+ }
1294
+
1295
+ ScriptCompiler::CompileOptions ContextifyContext::GetCompileOptions (
1296
+ const ScriptCompiler::Source& source) {
1297
+ ScriptCompiler::CompileOptions options;
1298
+ if (source.GetCachedData () != nullptr ) {
1299
+ options = ScriptCompiler::kConsumeCodeCache ;
1300
+ } else {
1301
+ options = ScriptCompiler::kNoCompileOptions ;
1302
+ }
1303
+ return options;
1304
+ }
1305
+
1282
1306
Local<Object> ContextifyContext::CompileFunctionAndCacheResult (
1283
1307
Environment* env,
1284
1308
Local<Context> parsing_context,
@@ -1373,34 +1397,11 @@ void ContextifyContext::ContainsModuleSyntax(
1373
1397
String::NewFromUtf8 (isolate, " cjs:" ).ToLocalChecked (), filename))
1374
1398
.As <Symbol>();
1375
1399
1376
- // TODO: Abstract this into a separate function
1377
- // Set host_defined_options
1378
- Local<PrimitiveArray> host_defined_options =
1379
- PrimitiveArray::New (isolate, loader::HostDefinedOptions::kLength );
1380
- host_defined_options->Set (
1381
- isolate, loader::HostDefinedOptions::kID , id_symbol);
1382
-
1383
- ScriptOrigin origin (isolate,
1384
- filename,
1385
- 0 , // line offset
1386
- 0 , // column offset
1387
- true , // is cross origin
1388
- -1 , // script id
1389
- Local<Value>(), // source map URL
1390
- false , // is opaque (?)
1391
- false , // is WASM
1392
- false , // is ES Module
1393
- host_defined_options);
1394
-
1395
- ScriptCompiler::CachedData* cached_data = nullptr ;
1396
- ScriptCompiler::Source source = ScriptCompiler::Source (code, origin, cached_data);
1397
- ScriptCompiler::CompileOptions options;
1398
- if (source.GetCachedData () == nullptr ) {
1399
- options = ScriptCompiler::kNoCompileOptions ;
1400
- } else {
1401
- options = ScriptCompiler::kConsumeCodeCache ;
1402
- }
1403
- // End TODO
1400
+ Local<PrimitiveArray> host_defined_options = GetHostDefinedOptions (
1401
+ isolate, id_symbol);
1402
+ ScriptCompiler::Source source = GetCommonJSSourceInstance (
1403
+ isolate, code, filename, 0 , 0 , host_defined_options, nullptr );
1404
+ ScriptCompiler::CompileOptions options = GetCompileOptions (source);
1404
1405
1405
1406
std::vector<Local<String>> params = {
1406
1407
String::NewFromUtf8 (isolate, " exports" ).ToLocalChecked (),
0 commit comments