| Index: src/compiler/js-intrinsic-builder.cc
 | 
| diff --git a/src/compiler/js-intrinsic-builder.cc b/src/compiler/js-intrinsic-builder.cc
 | 
| deleted file mode 100644
 | 
| index 80b69682ca9252e0652382d2ef2c8a90c61d5691..0000000000000000000000000000000000000000
 | 
| --- a/src/compiler/js-intrinsic-builder.cc
 | 
| +++ /dev/null
 | 
| @@ -1,140 +0,0 @@
 | 
| -// Copyright 2014 the V8 project authors. All rights reserved.
 | 
| -// Use of this source code is governed by a BSD-style license that can be
 | 
| -// found in the LICENSE file.
 | 
| -
 | 
| -#include "src/compiler/access-builder.h"
 | 
| -#include "src/compiler/common-operator.h"
 | 
| -#include "src/compiler/diamond.h"
 | 
| -#include "src/compiler/js-intrinsic-builder.h"
 | 
| -#include "src/compiler/js-operator.h"
 | 
| -#include "src/compiler/simplified-operator.h"
 | 
| -
 | 
| -
 | 
| -namespace v8 {
 | 
| -namespace internal {
 | 
| -namespace compiler {
 | 
| -
 | 
| -ResultAndEffect JSIntrinsicBuilder::BuildGraphFor(Runtime::FunctionId id,
 | 
| -                                                  const NodeVector& arguments) {
 | 
| -  switch (id) {
 | 
| -    case Runtime::kInlineIsSmi:
 | 
| -      return BuildGraphFor_IsSmi(arguments);
 | 
| -    case Runtime::kInlineIsNonNegativeSmi:
 | 
| -      return BuildGraphFor_IsNonNegativeSmi(arguments);
 | 
| -    case Runtime::kInlineIsArray:
 | 
| -      return BuildMapCheck(arguments[0], arguments[2], JS_ARRAY_TYPE);
 | 
| -    case Runtime::kInlineIsRegExp:
 | 
| -      return BuildMapCheck(arguments[0], arguments[2], JS_REGEXP_TYPE);
 | 
| -    case Runtime::kInlineIsFunction:
 | 
| -      return BuildMapCheck(arguments[0], arguments[2], JS_FUNCTION_TYPE);
 | 
| -    case Runtime::kInlineValueOf:
 | 
| -      return BuildGraphFor_ValueOf(arguments);
 | 
| -    default:
 | 
| -      break;
 | 
| -  }
 | 
| -  return ResultAndEffect();
 | 
| -}
 | 
| -
 | 
| -ResultAndEffect JSIntrinsicBuilder::BuildGraphFor_IsSmi(
 | 
| -    const NodeVector& arguments) {
 | 
| -  Node* object = arguments[0];
 | 
| -  SimplifiedOperatorBuilder simplified(jsgraph_->zone());
 | 
| -  Node* condition = graph()->NewNode(simplified.ObjectIsSmi(), object);
 | 
| -
 | 
| -  return ResultAndEffect(condition, arguments[2]);
 | 
| -}
 | 
| -
 | 
| -
 | 
| -ResultAndEffect JSIntrinsicBuilder::BuildGraphFor_IsNonNegativeSmi(
 | 
| -    const NodeVector& arguments) {
 | 
| -  Node* object = arguments[0];
 | 
| -  SimplifiedOperatorBuilder simplified(jsgraph_->zone());
 | 
| -  Node* condition =
 | 
| -      graph()->NewNode(simplified.ObjectIsNonNegativeSmi(), object);
 | 
| -
 | 
| -  return ResultAndEffect(condition, arguments[2]);
 | 
| -}
 | 
| -
 | 
| -
 | 
| -/*
 | 
| - * if (_isSmi(object)) {
 | 
| - *   return false
 | 
| - * } else {
 | 
| - *   return %_GetMapInstanceType(object) == map_type
 | 
| - * }
 | 
| - */
 | 
| -ResultAndEffect JSIntrinsicBuilder::BuildMapCheck(Node* object, Node* effect,
 | 
| -                                                  InstanceType map_type) {
 | 
| -  SimplifiedOperatorBuilder simplified(jsgraph_->zone());
 | 
| -
 | 
| -  Node* is_smi = graph()->NewNode(simplified.ObjectIsSmi(), object);
 | 
| -  Diamond d(graph(), common(), is_smi);
 | 
| -
 | 
| -  Node* map = graph()->NewNode(simplified.LoadField(AccessBuilder::ForMap()),
 | 
| -                               object, effect, d.if_false);
 | 
| -
 | 
| -  Node* instance_type = graph()->NewNode(
 | 
| -      simplified.LoadField(AccessBuilder::ForMapInstanceType()), map, map,
 | 
| -      d.if_false);
 | 
| -
 | 
| -  Node* has_map_type =
 | 
| -      graph()->NewNode(jsgraph_->machine()->Word32Equal(), instance_type,
 | 
| -                       jsgraph_->Int32Constant(map_type));
 | 
| -
 | 
| -  Node* phi = d.Phi(static_cast<MachineType>(kTypeBool | kRepTagged),
 | 
| -                    jsgraph_->FalseConstant(), has_map_type);
 | 
| -
 | 
| -  Node* ephi = d.EffectPhi(effect, instance_type);
 | 
| -
 | 
| -  return ResultAndEffect(phi, ephi);
 | 
| -}
 | 
| -
 | 
| -
 | 
| -/*
 | 
| - * if (%_isSmi(object)) {
 | 
| - *   return object;
 | 
| - * } else if (%_GetMapInstanceType(object) == JS_VALUE_TYPE) {
 | 
| - *   return %_LoadValueField(object);
 | 
| - * } else {
 | 
| - *   return object;
 | 
| - * }
 | 
| - */
 | 
| -ResultAndEffect JSIntrinsicBuilder::BuildGraphFor_ValueOf(
 | 
| -    const NodeVector& arguments) {
 | 
| -  Node* object = arguments[0];
 | 
| -  Node* effect = arguments[2];
 | 
| -  SimplifiedOperatorBuilder simplified(jsgraph_->zone());
 | 
| -
 | 
| -  Node* is_smi = graph()->NewNode(simplified.ObjectIsSmi(), object);
 | 
| -
 | 
| -  Diamond if_is_smi(graph(), common(), is_smi);
 | 
| -
 | 
| -  Node* map = graph()->NewNode(simplified.LoadField(AccessBuilder::ForMap()),
 | 
| -                               object, effect, if_is_smi.if_false);
 | 
| -
 | 
| -  Node* instance_type = graph()->NewNode(
 | 
| -      simplified.LoadField(AccessBuilder::ForMapInstanceType()), map, map,
 | 
| -      if_is_smi.if_false);
 | 
| -
 | 
| -  Node* is_value =
 | 
| -      graph()->NewNode(jsgraph_->machine()->Word32Equal(), instance_type,
 | 
| -                       jsgraph_->Constant(JS_VALUE_TYPE));
 | 
| -
 | 
| -  Diamond if_is_value(graph(), common(), is_value);
 | 
| -  if_is_value.Nest(if_is_smi, false);
 | 
| -
 | 
| -  Node* value =
 | 
| -      graph()->NewNode(simplified.LoadField(AccessBuilder::ForValue()), object,
 | 
| -                       instance_type, if_is_value.if_true);
 | 
| -
 | 
| -  Node* phi_is_value = if_is_value.Phi(kTypeAny, value, object);
 | 
| -
 | 
| -  Node* phi = if_is_smi.Phi(kTypeAny, object, phi_is_value);
 | 
| -
 | 
| -  Node* ephi = if_is_smi.EffectPhi(effect, instance_type);
 | 
| -
 | 
| -  return ResultAndEffect(phi, ephi);
 | 
| -}
 | 
| -}
 | 
| -}
 | 
| -}  // namespace v8::internal::compiler
 | 
| 
 |