| OLD | NEW | 
|    1 // Copyright 2015 the V8 project authors. All rights reserved. |    1 // Copyright 2015 the V8 project authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "src/compiler/representation-change.h" |    5 #include "src/compiler/representation-change.h" | 
|    6  |    6  | 
|    7 #include <sstream> |    7 #include <sstream> | 
|    8  |    8  | 
|    9 #include "src/base/bits.h" |    9 #include "src/base/bits.h" | 
|   10 #include "src/code-factory.h" |   10 #include "src/code-factory.h" | 
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  177     case IrOpcode::kNumberConstant: |  177     case IrOpcode::kNumberConstant: | 
|  178     case IrOpcode::kHeapConstant: |  178     case IrOpcode::kHeapConstant: | 
|  179       return node;  // No change necessary. |  179       return node;  // No change necessary. | 
|  180     case IrOpcode::kInt32Constant: |  180     case IrOpcode::kInt32Constant: | 
|  181       if (output_type->Is(Type::Signed32())) { |  181       if (output_type->Is(Type::Signed32())) { | 
|  182         int32_t value = OpParameter<int32_t>(node); |  182         int32_t value = OpParameter<int32_t>(node); | 
|  183         return jsgraph()->Constant(value); |  183         return jsgraph()->Constant(value); | 
|  184       } else if (output_type->Is(Type::Unsigned32())) { |  184       } else if (output_type->Is(Type::Unsigned32())) { | 
|  185         uint32_t value = static_cast<uint32_t>(OpParameter<int32_t>(node)); |  185         uint32_t value = static_cast<uint32_t>(OpParameter<int32_t>(node)); | 
|  186         return jsgraph()->Constant(static_cast<double>(value)); |  186         return jsgraph()->Constant(static_cast<double>(value)); | 
|  187       } else if (output_rep == MachineRepresentation::kBit) { |  187       } else if (output_type->Is(Type::Boolean())) { | 
|  188         return OpParameter<int32_t>(node) == 0 ? jsgraph()->FalseConstant() |  188         return OpParameter<int32_t>(node) == 0 ? jsgraph()->FalseConstant() | 
|  189                                                : jsgraph()->TrueConstant(); |  189                                                : jsgraph()->TrueConstant(); | 
|  190       } else { |  190       } else { | 
|  191         return TypeError(node, output_rep, output_type, |  191         return TypeError(node, output_rep, output_type, | 
|  192                          MachineRepresentation::kTagged); |  192                          MachineRepresentation::kTagged); | 
|  193       } |  193       } | 
|  194     case IrOpcode::kFloat64Constant: |  194     case IrOpcode::kFloat64Constant: | 
|  195       return jsgraph()->Constant(OpParameter<double>(node)); |  195       return jsgraph()->Constant(OpParameter<double>(node)); | 
|  196     case IrOpcode::kFloat32Constant: |  196     case IrOpcode::kFloat32Constant: | 
|  197       return jsgraph()->Constant(OpParameter<float>(node)); |  197       return jsgraph()->Constant(OpParameter<float>(node)); | 
|  198     default: |  198     default: | 
|  199       break; |  199       break; | 
|  200   } |  200   } | 
|  201   // Select the correct X -> Tagged operator. |  201   // Select the correct X -> Tagged operator. | 
|  202   const Operator* op; |  202   const Operator* op; | 
|  203   if (output_rep == MachineRepresentation::kBit) { |  203   if (output_rep == MachineRepresentation::kBit) { | 
|  204     op = simplified()->ChangeBitToTagged(); |  204     if (output_type->Is(Type::Boolean())) { | 
 |  205       op = simplified()->ChangeBitToTagged(); | 
 |  206     } else { | 
 |  207       return TypeError(node, output_rep, output_type, | 
 |  208                        MachineRepresentation::kTagged); | 
 |  209     } | 
|  205   } else if (IsWord(output_rep)) { |  210   } else if (IsWord(output_rep)) { | 
|  206     if (output_type->Is(Type::Signed31())) { |  211     if (output_type->Is(Type::Signed31())) { | 
|  207       op = simplified()->ChangeInt31ToTaggedSigned(); |  212       op = simplified()->ChangeInt31ToTaggedSigned(); | 
|  208     } else if (output_type->Is(Type::Signed32())) { |  213     } else if (output_type->Is(Type::Signed32())) { | 
|  209       op = simplified()->ChangeInt32ToTagged(); |  214       op = simplified()->ChangeInt32ToTagged(); | 
|  210     } else if (output_type->Is(Type::Unsigned32())) { |  215     } else if (output_type->Is(Type::Unsigned32())) { | 
|  211       op = simplified()->ChangeUint32ToTagged(); |  216       op = simplified()->ChangeUint32ToTagged(); | 
|  212     } else { |  217     } else { | 
|  213       return TypeError(node, output_rep, output_type, |  218       return TypeError(node, output_rep, output_type, | 
|  214                        MachineRepresentation::kTagged); |  219                        MachineRepresentation::kTagged); | 
| (...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  821 } |  826 } | 
|  822  |  827  | 
|  823 Node* RepresentationChanger::InsertChangeTaggedToFloat64(Node* node) { |  828 Node* RepresentationChanger::InsertChangeTaggedToFloat64(Node* node) { | 
|  824   return jsgraph()->graph()->NewNode(simplified()->ChangeTaggedToFloat64(), |  829   return jsgraph()->graph()->NewNode(simplified()->ChangeTaggedToFloat64(), | 
|  825                                      node); |  830                                      node); | 
|  826 } |  831 } | 
|  827  |  832  | 
|  828 }  // namespace compiler |  833 }  // namespace compiler | 
|  829 }  // namespace internal |  834 }  // namespace internal | 
|  830 }  // namespace v8 |  835 }  // namespace v8 | 
| OLD | NEW |