blob: 9336be65595c1e414ff3fb1a82cd183cd44b3e60 [file] [log] [blame]
Emily Bernierd0a1eb72015-03-24 16:35:39 -04001// Copyright 2014 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#ifndef V8_COMPILER_JS_INTRINSIC_BUILDER_H_
6#define V8_COMPILER_JS_INTRINSIC_BUILDER_H_
7
8#include "src/compiler/js-graph.h"
9#include "src/v8.h"
10
11namespace v8 {
12namespace internal {
13namespace compiler {
14
15typedef std::pair<Node*, Node*> ResultAndEffect;
16
17class JSIntrinsicBuilder {
18 public:
19 explicit JSIntrinsicBuilder(JSGraph* jsgraph) : jsgraph_(jsgraph) {}
20
21 ResultAndEffect BuildGraphFor(Runtime::FunctionId id,
22 const NodeVector& arguments);
23
24 private:
25 ResultAndEffect BuildMapCheck(Node* object, Node* effect,
26 InstanceType map_type);
27 ResultAndEffect BuildGraphFor_IsSmi(const NodeVector& arguments);
28 ResultAndEffect BuildGraphFor_IsNonNegativeSmi(const NodeVector& arguments);
29 ResultAndEffect BuildGraphFor_ValueOf(const NodeVector& arguments);
30
31
32 Graph* graph() const { return jsgraph_->graph(); }
33 CommonOperatorBuilder* common() const { return jsgraph_->common(); }
34 JSGraph* jsgraph_;
35};
36}
37}
38} // namespace v8::internal::compiler
39
40#endif // V8_COMPILER_JS_INTRINSIC_BUILDER_H_