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