| 1458 | } |
| 1459 | |
| 1460 | void fxRunProgramFileInCompartment(txMachine* the, txString path, txUnsigned flags) |
| 1461 | { |
| 1462 | xsVar(1) = xsNewObject(); |
| 1463 | fxBuildCompartmentGlobals(the); |
| 1464 | xsSet(xsVar(1), xsID("globals"), xsResult); |
| 1465 | |
| 1466 | xsVar(2) = xsNewHostFunction(fxLoadHook, 1); |
| 1467 | xsSet(xsVar(1), xsID("loadHook"), xsVar(2)); |
| 1468 | xsVar(2) = xsNew1(xsGlobal, xsID("Compartment"), xsVar(1)); |
| 1469 | { |
| 1470 | txSlot* module = mxVarv(2)->value.reference; |
| 1471 | txSlot* realm = mxModuleInstanceInternal(module)->value.module.realm; |
| 1472 | txScript* script = fxLoadScript(the, path, flags); |
| 1473 | |
| 1474 | xsVar(1) = xsGet(xsGlobal, xsID("$262")); |
| 1475 | xsVar(1) = xsGet(xsVar(1), xsID("evalScript")); |
| 1476 | mxFunctionInstanceHome(mxVarv(1)->value.reference)->value.home.module = module; |
| 1477 | |
| 1478 | mxModuleInstanceInternal(module)->value.module.id = fxID(the, path); |
| 1479 | fxRunScript(the, script, mxRealmGlobal(realm), C_NULL, mxRealmClosures(realm)->value.reference, C_NULL, module); |
| 1480 | } |
| 1481 | } |
| 1482 | |
| 1483 | |
| 1484 |
no test coverage detected