1// Copyright 2013 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "src/v8.h"
6#include "test/cctest/cctest.h"
7
8#include "src/compiler.h"
9#include "src/compiler/pipeline.h"
10#include "src/handles.h"
11#include "src/parser.h"
12#include "src/rewriter.h"
13#include "src/scopes.h"
14
15using namespace v8::internal;
16using namespace v8::internal::compiler;
17
18TEST(PipelineAdd) {
19  InitializedHandleScope handles;
20  const char* source = "(function(a,b) { return a + b; })";
21  Handle<JSFunction> function = v8::Utils::OpenHandle(
22      *v8::Handle<v8::Function>::Cast(CompileRun(source)));
23  CompilationInfoWithZone info(function);
24
25  CHECK(Parser::Parse(&info));
26  CHECK(Rewriter::Rewrite(&info));
27  CHECK(Scope::Analyze(&info));
28  CHECK_NE(NULL, info.scope());
29
30  Pipeline pipeline(&info);
31#if V8_TURBOFAN_TARGET
32  Handle<Code> code = pipeline.GenerateCode();
33  CHECK(Pipeline::SupportedTarget());
34  CHECK(!code.is_null());
35#else
36  USE(pipeline);
37#endif
38}
39