17d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 27d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 37d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// found in the LICENSE file. 47d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 57d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/v8.h" 67d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "test/cctest/cctest.h" 77d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 87d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler.h" 97d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/pipeline.h" 107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/handles.h" 117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/parser.h" 127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/rewriter.h" 137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/scopes.h" 147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgusing namespace v8::internal; 167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgusing namespace v8::internal::compiler; 177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgTEST(PipelineAdd) { 197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org InitializedHandleScope handles; 207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org const char* source = "(function(a,b) { return a + b; })"; 217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Handle<JSFunction> function = v8::Utils::OpenHandle( 227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org *v8::Handle<v8::Function>::Cast(CompileRun(source))); 237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CompilationInfoWithZone info(function); 247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK(Parser::Parse(&info)); 267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK(Rewriter::Rewrite(&info)); 277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK(Scope::Analyze(&info)); 287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK_NE(NULL, info.scope()); 297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Pipeline pipeline(&info); 317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#if V8_TURBOFAN_TARGET 327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Handle<Code> code = pipeline.GenerateCode(); 337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK(Pipeline::SupportedTarget()); 347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org CHECK(!code.is_null()); 357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#else 367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org USE(pipeline); 377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#endif 387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 39