#include "../bindings/ZigGlobalObject.h" #include "JavaScriptCore/CustomGetterSetter.h" #include "JavaScriptCore/JSGlobalObject.h" namespace Zig { JSC_DEFINE_HOST_FUNCTION(jsFunctionProcessModuleCommonJS, (JSGlobalObject * globalObject, CallFrame *callFrame)) { VM &vm = globalObject->vm(); return JSValue::encode( reinterpret_cast(globalObject)->processObject()); } JSC_DEFINE_CUSTOM_GETTER(jsFunctionProcessModuleCommonJSGetter, (JSGlobalObject * globalObject, EncodedJSValue thisValue, PropertyName propertyName)) { VM &vm = globalObject->vm(); return JSValue::encode(reinterpret_cast(globalObject) ->processObject() ->get(globalObject, propertyName)); } JSC_DEFINE_CUSTOM_SETTER(jsFunctionProcessModuleCommonJSSetter, (JSGlobalObject * globalObject, EncodedJSValue thisValue, EncodedJSValue encodedValue, PropertyName propertyName)) { VM &vm = globalObject->vm(); return reinterpret_cast(globalObject) ->processObject() ->putDirect(vm, propertyName, JSValue::decode(encodedValue), 0); } inline void generateProcessSourceCode(JSC::JSGlobalObject *lexicalGlobalObject, JSC::Identifier moduleKey, Vector &exportNames, JSC::MarkedArgumentBuffer &exportValues) { JSC::VM &vm = lexicalGlobalObject->vm(); GlobalObject *globalObject = reinterpret_cast(lexicalGlobalObject); JSC::JSObject *process = globalObject->processObject(); PropertyNameArray properties(vm, PropertyNameMode::Strings, PrivateSymbolMode::Exclude); process->getPropertyNames(globalObject, properties, DontEnumPropertiesMode::Exclude); exportNames.append(JSC::Identifier::fromString(vm, "default"_s)); JSFunction *processModuleCommonJS = JSFunction::create( vm, globalObject, 0, "process"_s, jsFunctionProcessModuleCommonJS, ImplementationVisibility::Public); processModuleCommonJS->putDirect( vm, PropertyName( Identifier::fromUid(vm.symbolRegistry().symbolForKey("CommonJS"_s))), jsBoolean(true), 0); exportValues.append(processModuleCommonJS); for (auto &entry : properties) { exportNames.append(entry); exportValues.append(process->get(globalObject, entry)); processModuleCommonJS->putDirectCustomAccessor( vm, entry, JSC::CustomGetterSetter::create(vm, jsFunctionProcessModuleCommonJSGetter, jsFunctionProcessModuleCommonJSSetter), 0); } } } // namespace Zig height='13' alt='Gravatar' /> Alex Martens 1-1/+3 2023-11-19Rename `__reset_vector` to `__exceptions`Gravatar James Munns 1-4/+9 2023-11-04c-m-rt: mark Vector as repr(C)Gravatar Adam Greig 3-0/+3 2023-11-04cortex-m: update to volatile-register 0.2.2, fixes #485Gravatar Adam Greig 1-1/+1 2023-10-29semihosting: silence clippy::result_unit_err in hioGravatar Alex Martens 1-0/+3 2023-10-29semihosting: add Safety docstring to syscallGravatar Alex Martens 1-0/+11 2023-10-29Fix new clippy lintsGravatar Alex Martens 3-22/+14 2023-10-29CI: actions-rs/toolchain -> dtolnay/rust-toolchainGravatar Alex Martens 6-39/+11 2023-10-16Move cortex-m crate into cortex-m directoryGravatar Adam Greig 55-307/+113 2023-10-13actions/checkout: 3 -> 4Gravatar Alex Martens 6-11/+11 2023-08-16Add to docsGravatar Dion Dokter 1-9/+23