[LLVMdev] MC-JIT

Olivier Meurant meurant.olivier at gmail.com
Wed Jul 21 01:32:49 PDT 2010


New patch. Thanks for all of your comments !

> Comments inline.  If you have commit access, I'd fire away.  If not, I can.

I don't have commit access, if you find it ok, please commit it. :)

Olivier.


On Wed, Jul 21, 2010 at 6:56 AM, Reid Kleckner <reid.kleckner at gmail.com> wrote:
> On Tue, Jul 20, 2010 at 3:41 PM, Olivier Meurant
> <meurant.olivier at gmail.com> wrote:
>> New patch taking Eli's comments into account.
>
> Comments inline.  If you have commit access, I'd fire away.  If not, I can.
>
> diff --git include/llvm/MC/MCAssembler.h include/llvm/MC/MCAssembler.h
> index 07ca070..afff96e 100644
> --- include/llvm/MC/MCAssembler.h
> +++ include/llvm/MC/MCAssembler.h
> @@ -669,7 +669,9 @@ public:
> -  void Finish();
> +  /// \arg Writer is used for custom object writer (as the MCJIT does),
> +  /// if not specified it is automatically created from backend
>
> Nit: End complete sentences end with a period.
>
> +  void Finish(MCObjectWriter *Writer = 0);
> diff --git include/llvm/Target/TargetMachine.h
> include/llvm/Target/TargetMachine.h
> index 227499b..a115877 100644
> --- include/llvm/Target/TargetMachine.h
> +++ include/llvm/Target/TargetMachine.h
> @@ -244,6 +244,15 @@ public:
>                                           bool = true) {
>     return true;
>   }
>
> There wasn't a newline here, but there should be for consistency.  The comment
> below should look like the rest of the Doxygen comments:
> /// methodName - Use complete sentences starting with caps and ending with
> /// periods.
>
> +  /// get machine code emitted.  This method should returns true if fails.
> +  /// It fills the MCContext Ctx pointer used to build MCStreamer.
> +  ///
> +  virtual bool addPassesToEmitMC(PassManagerBase &PM,
> +                                 MCContext *&Ctx,
> +                                 CodeGenOpt::Level OptLevel,
> +                                 bool DisableVerify = true) {
> +    return true;
> +  }
>
> Ditto.
>
> +  /// get machine code emitted.  This method should returns true if fails.
> +  /// It fills the MCContext Ctx pointer used to build MCStreamer.
> +  ///
> +  virtual bool addPassesToEmitMC(PassManagerBase &PM,
> +                                 MCContext *&Ctx,
> +                                 CodeGenOpt::Level OptLevel,
> +                                 bool DisableVerify = true);
>
> Ditto.
>
> +/// get machine code emitted.  This method should returns true if fails.
> +/// It fills the MCContext Ctx pointer used to build MCStreamer.
> +///
> +bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM,
> +                               MCContext *&Ctx,
> +                               CodeGenOpt::Level OptLevel,
> +                               bool DisableVerify) {
>
> Args above should be aligned with column after opening paren.
>
> +  // Add common CodeGen passes.
> +  if (addCommonCodeGenPasses(PM, OptLevel, DisableVerify, Ctx))
> +    return true;
> +  // Make sure the code model is set.
> +  setCodeModelForJIT();
> +
> +  return false; // success!
> +}
> +
>
> -void MCAssembler::Finish() {
> +void MCAssembler::Finish(MCObjectWriter *Writer_) {
>
> Why two variables Writer_ and Writer?  I don't know of any rules against
> modifying parameters.
>
> ...
>
> -  llvm::OwningPtr<MCObjectWriter> Writer(getBackend().createObjectWriter(OS));
> -  if (!Writer)
> -    report_fatal_error("unable to create object writer!");
> +
> +  llvm::OwningPtr<MCObjectWriter> OwnWriter(0);
> +  MCObjectWriter *Writer = Writer_;
> +  if (Writer == 0) {
> +    //no custom Writer_ : create the default one life-managed by OwningPtr
> +    OwnWriter.reset(getBackend().createObjectWriter(OS));
> +    Writer = OwnWriter.get();
> +    if (!Writer)
> +      report_fatal_error("unable to create object writer!");
> +  }
>
> Bit of trailing whitespace on the line above...
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mc_jit_01.patch
Type: text/x-patch
Size: 4791 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100721/fc9210df/attachment.bin>


More information about the llvm-dev mailing list