Esempio n. 1
0
    static ejsval
    DIBuilder_prototype_createFunction (ejsval env, ejsval _this, int argc, ejsval *args)
    {
        REQ_LLVM_DISCOPE_ARG(0, discope);
        REQ_UTF8_ARG(1, name);
        REQ_UTF8_ARG(2, linkageName);
        REQ_LLVM_DIFILE_ARG(3, file);
        REQ_INT_ARG(4, line_no);
        REQ_BOOL_ARG(5, isLocalToUnit);
        REQ_BOOL_ARG(6, isDefinition);
        REQ_INT_ARG(7, scopeLine);
        REQ_INT_ARG(8, flags);
        REQ_BOOL_ARG(9, isOptimized);
        REQ_LLVM_FUN_ARG(10, fn);

        DIBuilder* dib = ((DIBuilder*)EJSVAL_TO_OBJECT(_this));

        return DISubprogram_new(dib->llvm_dibuilder->createFunction (discope,
                                                                     name,
                                                                     linkageName,
                                                                     file,
                                                                     line_no,
                                                                     createDIFunctionType(dib->llvm_dibuilder, file, fn->getFunctionType()),
                                                                     isLocalToUnit,
                                                                     isDefinition,
                                                                     scopeLine,
                                                                     flags,
                                                                     isOptimized,
                                                                     fn));
    }
Esempio n. 2
0
    static ejsval
    Constant_getBoolValue (ejsval env, ejsval _this, int argc, ejsval *args)
    {
        REQ_BOOL_ARG (0, b);

        return Value_new (llvm::Constant::getIntegerValue(llvm::Type::getInt8Ty(llvm::getGlobalContext()), llvm::APInt(8, b?1:0)));
    }
Esempio n. 3
0
 ejsval
 LandingPad_prototype_setCleanup(ejsval env, ejsval _this, int argc, ejsval *args)
 {
     LandingPad *landing_pad = ((LandingPad*)EJSVAL_TO_OBJECT(_this));
     REQ_BOOL_ARG(0, flag);
     landing_pad->llvm_landing_pad->setCleanup(flag);
     return _ejs_undefined;
 }
Esempio n. 4
0
    ejsval
    Module_prototype_getGlobalVariable(ejsval env, ejsval _this, int argc, ejsval *args)
    {
        Module *module = ((Module*)EJSVAL_TO_OBJECT(_this));

        REQ_UTF8_ARG(0, name);
        REQ_BOOL_ARG(1, allowInternal);

        ejsval rv = GlobalVariable_new (module->llvm_module->getGlobalVariable(name, allowInternal));

        return rv;
    }
Esempio n. 5
0
    static ejsval
    DIBuilder_prototype_createCompileUnit (ejsval env, ejsval _this, int argc, ejsval *args)
    {
        REQ_UTF8_ARG(0, file);
        REQ_UTF8_ARG(1, dir);
        REQ_UTF8_ARG(2, producer);
        REQ_BOOL_ARG(3, isOptimized);
        REQ_UTF8_ARG(4, flags);
        REQ_INT_ARG(5, runtimeVersion);

        DIBuilder* dib = ((DIBuilder*)EJSVAL_TO_OBJECT(_this));

        return DIDescriptor_new(dib->llvm_dibuilder->createCompileUnit(llvm::dwarf::DW_LANG_C99,
                                                                       file, dir, producer,
                                                                       isOptimized, flags,
                                                                       runtimeVersion));
    }
Esempio n. 6
0
    static EJS_NATIVE_FUNC(GlobalVariable_impl) {
        if (EJSVAL_IS_UNDEFINED(newTarget)) {
            // called as a function
            EJS_NOT_IMPLEMENTED();
        }
        else {
            ejsval O = OrdinaryCreateFromConstructor(newTarget, _ejs_GlobalVariable_prototype, &_ejs_GlobalVariable_specops);
            *_this = O;

            GlobalVariable* gv = (GlobalVariable*)EJSVAL_TO_OBJECT(O);

            REQ_LLVM_MODULE_ARG(0, module);
            REQ_LLVM_TYPE_ARG(1, type);
            REQ_UTF8_ARG(2, name);
            REQ_NULLABLE_LLVM_CONST_ARG(3, init);
            REQ_BOOL_ARG(4, visible);

            gv->llvm_global = new ::llvm::GlobalVariable(*module, type, false, visible ? llvm::GlobalValue::ExternalLinkage : llvm::GlobalValue::InternalLinkage, init, name);
            return *_this;
        }
    }