<commit_before>//===-- JIT.cpp - LLVM Just in Time Compiler ------------------------------===//
//
// This file implements the top-level support for creating a Just-In-Time
// compiler for the current architecture.
//
//===----------------------------------------------------------------------===//

#include "VM.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetMachineImpls.h"
#include "llvm/Module.h"
#include "Support/CommandLine.h"

// FIXME: REMOVE THIS
#include "llvm/PassManager.h"

namespace {
  enum ArchName { nojit, x86, sparc };

  cl::opt<ArchName>
  Arch("march", cl::desc("Architecture to JIT to:"), cl::Prefix,
       cl::values(clEnumVal(x86, "  IA-32 (pentium and above)"),
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
                  clEnumVal(sparc, "  Sparc-V9"),
#endif
                  0),
#if defined(i386) || defined(__i386__) || defined(__x86__)
  cl::init(x86)
#elif defined(sparc) || defined(__sparc__) || defined(__sparcv9)
  cl::init(sparc)
#else
  cl::init(nojit)
#endif
       );
}

/// createJIT - Create an return a new JIT compiler if there is one available
/// for the current target.  Otherwise it returns null.
///
ExecutionEngine *ExecutionEngine::createJIT(Module *M, unsigned Config) {
  
  TargetMachine* (*TargetMachineAllocator)(unsigned) = 0;

  // Allow a command-line switch to override what *should* be the default target
  // machine for this platform. This allows for debugging a Sparc JIT on X86 --
  // our X86 machines are much faster at recompiling LLVM and linking lli.
  switch (Arch) {
  case x86:
    TargetMachineAllocator = allocateX86TargetMachine;
    break;
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
  case sparc:
    TargetMachineAllocator = allocateSparcTargetMachine;
    break;
#endif
  default:
    assert(0 && "-march flag not supported on this host!");
  case nojit:
    return 0;
  }

  // Allocate a target...
  TargetMachine *Target = (*TargetMachineAllocator)(Config);
  assert(Target && "Could not allocate target machine!");
  
  // Create the virtual machine object...
  return new VM(M, Target);
}<commit_msg>Apparently "sparc" is a macro on sparcs.  Ugh.  :)<commit_after>//===-- JIT.cpp - LLVM Just in Time Compiler ------------------------------===//
//
// This file implements the top-level support for creating a Just-In-Time
// compiler for the current architecture.
//
//===----------------------------------------------------------------------===//

#include "VM.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetMachineImpls.h"
#include "llvm/Module.h"
#include "Support/CommandLine.h"

// FIXME: REMOVE THIS
#include "llvm/PassManager.h"

namespace {
  enum ArchName { nojit, x86, Sparc };

  cl::opt<ArchName>
  Arch("march", cl::desc("Architecture to JIT to:"), cl::Prefix,
       cl::values(clEnumVal(x86, "  IA-32 (pentium and above)"),
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
                  clEnumValN(Sparc, "sparc", "  Sparc-V9"),
#endif
                  0),
#if defined(i386) || defined(__i386__) || defined(__x86__)
  cl::init(x86)
#elif defined(sparc) || defined(__sparc__) || defined(__sparcv9)
  cl::init(Sparc)
#else
  cl::init(nojit)
#endif
       );
}

/// createJIT - Create an return a new JIT compiler if there is one available
/// for the current target.  Otherwise it returns null.
///
ExecutionEngine *ExecutionEngine::createJIT(Module *M, unsigned Config) {
  
  TargetMachine* (*TargetMachineAllocator)(unsigned) = 0;

  // Allow a command-line switch to override what *should* be the default target
  // machine for this platform. This allows for debugging a Sparc JIT on X86 --
  // our X86 machines are much faster at recompiling LLVM and linking lli.
  switch (Arch) {
  case x86:
    TargetMachineAllocator = allocateX86TargetMachine;
    break;
#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
  case Sparc:
    TargetMachineAllocator = allocateSparcTargetMachine;
    break;
#endif
  default:
    assert(0 && "-march flag not supported on this host!");
  case nojit:
    return 0;
  }

  // Allocate a target...
  TargetMachine *Target = (*TargetMachineAllocator)(Config);
  assert(Target && "Could not allocate target machine!");
  
  // Create the virtual machine object...
  return new VM(M, Target);
}
{'fraction_non_alphanumeric': 0.17598343685300208, 'fraction_numerical': 0.014722797331492983, 'mean_word_length': 2.959927140255009, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5914197', 'n_tokens_mistral': 1379, 'n_tokens_neox': 1326, 'n_words': 395}