当前位置: 首页>>代码示例>>C++>>正文


C++ Cfg::Print方法代码示例

本文整理汇总了C++中Cfg::Print方法的典型用法代码示例。如果您正苦于以下问题:C++ Cfg::Print方法的具体用法?C++ Cfg::Print怎么用?C++ Cfg::Print使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Cfg的用法示例。


在下文中一共展示了Cfg::Print方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: timer

static Handle<Code> MakeCode(FunctionLiteral* literal,
                             Handle<Script> script,
                             Handle<Context> context,
                             bool is_eval) {
  ASSERT(literal != NULL);

  // Rewrite the AST by introducing .result assignments where needed.
  if (!Rewriter::Process(literal) || !AnalyzeVariableUsage(literal)) {
    // Signal a stack overflow by returning a null handle.  The stack
    // overflow exception will be thrown by the caller.
    return Handle<Code>::null();
  }

  {
    // Compute top scope and allocate variables. For lazy compilation
    // the top scope only contains the single lazily compiled function,
    // so this doesn't re-allocate variables repeatedly.
    HistogramTimerScope timer(&Counters::variable_allocation);
    Scope* top = literal->scope();
    while (top->outer_scope() != NULL) top = top->outer_scope();
    top->AllocateVariables(context);
  }

#ifdef DEBUG
  if (Bootstrapper::IsActive() ?
      FLAG_print_builtin_scopes :
      FLAG_print_scopes) {
    literal->scope()->Print();
  }
#endif

  // Optimize the AST.
  if (!Rewriter::Optimize(literal)) {
    // Signal a stack overflow by returning a null handle.  The stack
    // overflow exception will be thrown by the caller.
    return Handle<Code>::null();
  }

  if (FLAG_multipass) {
    CfgGlobals scope(literal);
    Cfg* cfg = Cfg::Build();
#ifdef DEBUG
    if (FLAG_print_cfg && cfg != NULL) {
      SmartPointer<char> name = literal->name()->ToCString();
      PrintF("Function \"%s\":\n", *name);
      cfg->Print();
      PrintF("\n");
    }
#endif
    if (cfg != NULL) {
      return cfg->Compile(script);
    }
  }

  // Generate code and return it.
  Handle<Code> result = CodeGenerator::MakeCode(literal, script, is_eval);
  return result;
}
开发者ID:BlitzMaxModules,项目名称:axe.mod,代码行数:58,代码来源:compiler.cpp


注:本文中的Cfg::Print方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。