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#ifndef V8_COMPILER_NODE_PROPERTIES_INL_H_ 67d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#define V8_COMPILER_NODE_PROPERTIES_INL_H_ 77d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 87d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/v8.h" 97d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/common-operator.h" 11e3f688752e674e34840e9f075793dc1b523c521bmachenbach@chromium.org#include "src/compiler/generic-node-inl.h" 127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/node-properties.h" 137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/opcodes.h" 147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/operator.h" 157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/operator-properties-inl.h" 167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/operator-properties.h" 177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgnamespace v8 { 197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgnamespace internal { 207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgnamespace compiler { 217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// ----------------------------------------------------------------------------- 238640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org// Input layout. 247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Inputs are always arranged in order as follows: 257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// 0 [ values, context, effects, control ] node->InputCount() 267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 275e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.orginline int NodeProperties::FirstValueIndex(Node* node) { return 0; } 287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 295e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.orginline int NodeProperties::FirstContextIndex(Node* node) { 308640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org return PastValueIndex(node); 317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 33a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.orginline int NodeProperties::FirstFrameStateIndex(Node* node) { 347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return PastContextIndex(node); 357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 37a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.orginline int NodeProperties::FirstEffectIndex(Node* node) { 38a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org return PastFrameStateIndex(node); 39a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org} 40a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org 417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline int NodeProperties::FirstControlIndex(Node* node) { 427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return PastEffectIndex(node); 437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline int NodeProperties::PastValueIndex(Node* node) { 478640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org return FirstValueIndex(node) + 488640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetValueInputCount(node->op()); 497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline int NodeProperties::PastContextIndex(Node* node) { 525e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org return FirstContextIndex(node) + 538640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetContextInputCount(node->op()); 547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 557d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 56a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.orginline int NodeProperties::PastFrameStateIndex(Node* node) { 57a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org return FirstFrameStateIndex(node) + 58a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org OperatorProperties::GetFrameStateInputCount(node->op()); 59a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org} 60a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org 617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline int NodeProperties::PastEffectIndex(Node* node) { 628640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org return FirstEffectIndex(node) + 638640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetEffectInputCount(node->op()); 647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline int NodeProperties::PastControlIndex(Node* node) { 678640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org return FirstControlIndex(node) + 688640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetControlInputCount(node->op()); 697d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 707d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 727d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// ----------------------------------------------------------------------------- 737d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Input accessors. 747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 757d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline Node* NodeProperties::GetValueInput(Node* node, int index) { 768640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org DCHECK(0 <= index && 778640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org index < OperatorProperties::GetValueInputCount(node->op())); 787d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return node->InputAt(FirstValueIndex(node) + index); 797d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 807d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 817d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline Node* NodeProperties::GetContextInput(Node* node) { 828640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org DCHECK(OperatorProperties::HasContextInput(node->op())); 835e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org return node->InputAt(FirstContextIndex(node)); 847d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 857d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 86a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.orginline Node* NodeProperties::GetFrameStateInput(Node* node) { 87a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org DCHECK(OperatorProperties::HasFrameStateInput(node->op())); 88a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org return node->InputAt(FirstFrameStateIndex(node)); 89a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org} 90a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org 917d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline Node* NodeProperties::GetEffectInput(Node* node, int index) { 928640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org DCHECK(0 <= index && 938640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org index < OperatorProperties::GetEffectInputCount(node->op())); 947d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return node->InputAt(FirstEffectIndex(node) + index); 957d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 967d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 977d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline Node* NodeProperties::GetControlInput(Node* node, int index) { 988640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org DCHECK(0 <= index && 998640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org index < OperatorProperties::GetControlInputCount(node->op())); 1007d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return node->InputAt(FirstControlIndex(node) + index); 1017d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1027d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 103a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.orginline int NodeProperties::GetFrameStateIndex(Node* node) { 104a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org DCHECK(OperatorProperties::HasFrameStateInput(node->op())); 105a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org return FirstFrameStateIndex(node); 106a8702c210b949f35c64d8e4aa01bb6d525086c85machenbach@chromium.org} 1077d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1087d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// ----------------------------------------------------------------------------- 1097d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Edge kinds. 1107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline bool NodeProperties::IsInputRange(Node::Edge edge, int first, int num) { 1127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // TODO(titzer): edge.index() is linear time; 1137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // edges maybe need to be marked as value/effect/control. 1147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org if (num == 0) return false; 1157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int index = edge.index(); 1167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return first <= index && index < first + num; 1177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline bool NodeProperties::IsValueEdge(Node::Edge edge) { 1207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* node = edge.from(); 1218640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org return IsInputRange(edge, FirstValueIndex(node), 1228640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetValueInputCount(node->op())); 1237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1247d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1257d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline bool NodeProperties::IsContextEdge(Node::Edge edge) { 1267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* node = edge.from(); 1275e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org return IsInputRange(edge, FirstContextIndex(node), 1288640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetContextInputCount(node->op())); 1297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline bool NodeProperties::IsEffectEdge(Node::Edge edge) { 1327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* node = edge.from(); 1338640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org return IsInputRange(edge, FirstEffectIndex(node), 1348640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetEffectInputCount(node->op())); 1357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline bool NodeProperties::IsControlEdge(Node::Edge edge) { 1387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org Node* node = edge.from(); 1397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return IsInputRange(edge, FirstControlIndex(node), 1408640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org OperatorProperties::GetControlInputCount(node->op())); 1417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// ----------------------------------------------------------------------------- 1457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Miscellaneous predicates. 1467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline bool NodeProperties::IsControl(Node* node) { 1487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org return IrOpcode::IsControlOpcode(node->opcode()); 1497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1527d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// ----------------------------------------------------------------------------- 1537d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Miscellaneous mutators. 1547d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1555e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.orginline void NodeProperties::ReplaceControlInput(Node* node, Node* control) { 1565e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org node->ReplaceInput(FirstControlIndex(node), control); 1575e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org} 1585e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org 1597d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline void NodeProperties::ReplaceEffectInput(Node* node, Node* effect, 1607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org int index) { 1618640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org DCHECK(index < OperatorProperties::GetEffectInputCount(node->op())); 1625e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org return node->ReplaceInput(FirstEffectIndex(node) + index, effect); 1637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 165a2c0c1516848536a514b3178d2c040b7df0ceb5bmachenbach@chromium.orginline void NodeProperties::ReplaceFrameStateInput(Node* node, 166a2c0c1516848536a514b3178d2c040b7df0ceb5bmachenbach@chromium.org Node* frame_state) { 167a2c0c1516848536a514b3178d2c040b7df0ceb5bmachenbach@chromium.org DCHECK(OperatorProperties::HasFrameStateInput(node->op())); 168a2c0c1516848536a514b3178d2c040b7df0ceb5bmachenbach@chromium.org node->ReplaceInput(FirstFrameStateIndex(node), frame_state); 169a2c0c1516848536a514b3178d2c040b7df0ceb5bmachenbach@chromium.org} 170a2c0c1516848536a514b3178d2c040b7df0ceb5bmachenbach@chromium.org 1717d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline void NodeProperties::RemoveNonValueInputs(Node* node) { 1728640107360766c74218cf16d51b714b1f2138839machenbach@chromium.org node->TrimInputCount(OperatorProperties::GetValueInputCount(node->op())); 1737d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 1747d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 1757d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 176e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// Replace value uses of {node} with {value} and effect uses of {node} with 177e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org// {effect}. If {effect == NULL}, then use the effect input to {node}. 178e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.orginline void NodeProperties::ReplaceWithValue(Node* node, Node* value, 179e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org Node* effect) { 180e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org DCHECK(!OperatorProperties::HasControlOutput(node->op())); 181e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org if (effect == NULL && OperatorProperties::HasEffectInput(node->op())) { 182e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org effect = NodeProperties::GetEffectInput(node); 183e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org } 184e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org 185e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org // Requires distinguishing between value and effect edges. 186e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org UseIter iter = node->uses().begin(); 187e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org while (iter != node->uses().end()) { 188e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org if (NodeProperties::IsEffectEdge(iter.edge())) { 189e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org DCHECK_NE(NULL, effect); 190e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org iter = iter.UpdateToAndIncrement(effect); 191e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org } else { 192e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org iter = iter.UpdateToAndIncrement(value); 193e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org } 194e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org } 195e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org} 196e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org 197e2a8937454723a720c81acc3f9e4162b18999b43machenbach@chromium.org 1987d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// ----------------------------------------------------------------------------- 1997d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Type Bounds. 2007d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2017d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline Bounds NodeProperties::GetBounds(Node* node) { return node->bounds(); } 2027d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2037d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orginline void NodeProperties::SetBounds(Node* node, Bounds b) { 2047d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org node->set_bounds(b); 2057d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 2067d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2077d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2087d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 2097d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 2107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} // namespace v8::internal::compiler 2117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 2127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#endif // V8_COMPILER_NODE_PROPERTIES_INL_H_ 213