| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1075 } else if (v->IsInstanceOf()) { | 1075 } else if (v->IsInstanceOf()) { |
| 1076 HInstanceOf* instance_of = HInstanceOf::cast(v); | 1076 HInstanceOf* instance_of = HInstanceOf::cast(v); |
| 1077 LInstanceOfAndBranch* result = | 1077 LInstanceOfAndBranch* result = |
| 1078 new LInstanceOfAndBranch( | 1078 new LInstanceOfAndBranch( |
| 1079 UseFixed(instance_of->left(), InstanceofStub::left()), | 1079 UseFixed(instance_of->left(), InstanceofStub::left()), |
| 1080 UseFixed(instance_of->right(), InstanceofStub::right())); | 1080 UseFixed(instance_of->right(), InstanceofStub::right())); |
| 1081 return MarkAsCall(result, instr); | 1081 return MarkAsCall(result, instr); |
| 1082 } else if (v->IsTypeofIs()) { | 1082 } else if (v->IsTypeofIs()) { |
| 1083 HTypeofIs* typeof_is = HTypeofIs::cast(v); | 1083 HTypeofIs* typeof_is = HTypeofIs::cast(v); |
| 1084 return new LTypeofIsAndBranch(UseTempRegister(typeof_is->value())); | 1084 return new LTypeofIsAndBranch(UseTempRegister(typeof_is->value())); |
| 1085 } else if (v->IsIsConstructCall()) { |
| 1086 return new LIsConstructCallAndBranch(TempRegister()); |
| 1085 } else { | 1087 } else { |
| 1086 if (v->IsConstant()) { | 1088 if (v->IsConstant()) { |
| 1087 if (HConstant::cast(v)->handle()->IsTrue()) { | 1089 if (HConstant::cast(v)->handle()->IsTrue()) { |
| 1088 return new LGoto(instr->FirstSuccessor()->block_id()); | 1090 return new LGoto(instr->FirstSuccessor()->block_id()); |
| 1089 } else if (HConstant::cast(v)->handle()->IsFalse()) { | 1091 } else if (HConstant::cast(v)->handle()->IsFalse()) { |
| 1090 return new LGoto(instr->SecondSuccessor()->block_id()); | 1092 return new LGoto(instr->SecondSuccessor()->block_id()); |
| 1091 } | 1093 } |
| 1092 } | 1094 } |
| 1093 Abort("Undefined compare before branch"); | 1095 Abort("Undefined compare before branch"); |
| 1094 return NULL; | 1096 return NULL; |
| (...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1756 Abort("Unimplemented: %s", "DoTypeof"); | 1758 Abort("Unimplemented: %s", "DoTypeof"); |
| 1757 return NULL; | 1759 return NULL; |
| 1758 } | 1760 } |
| 1759 | 1761 |
| 1760 | 1762 |
| 1761 LInstruction* LChunkBuilder::DoTypeofIs(HTypeofIs* instr) { | 1763 LInstruction* LChunkBuilder::DoTypeofIs(HTypeofIs* instr) { |
| 1762 Abort("Unimplemented: %s", "DoTypeofIs"); | 1764 Abort("Unimplemented: %s", "DoTypeofIs"); |
| 1763 return NULL; | 1765 return NULL; |
| 1764 } | 1766 } |
| 1765 | 1767 |
| 1768 |
| 1769 LInstruction* LChunkBuilder::DoIsConstructCall(HIsConstructCall* instr) { |
| 1770 return DefineAsRegister(new LIsConstructCall); |
| 1771 } |
| 1772 |
| 1773 |
| 1766 LInstruction* LChunkBuilder::DoSimulate(HSimulate* instr) { | 1774 LInstruction* LChunkBuilder::DoSimulate(HSimulate* instr) { |
| 1767 HEnvironment* env = current_block_->last_environment(); | 1775 HEnvironment* env = current_block_->last_environment(); |
| 1768 ASSERT(env != NULL); | 1776 ASSERT(env != NULL); |
| 1769 | 1777 |
| 1770 env->set_ast_id(instr->ast_id()); | 1778 env->set_ast_id(instr->ast_id()); |
| 1771 | 1779 |
| 1772 env->Drop(instr->pop_count()); | 1780 env->Drop(instr->pop_count()); |
| 1773 for (int i = 0; i < instr->values()->length(); ++i) { | 1781 for (int i = 0; i < instr->values()->length(); ++i) { |
| 1774 HValue* value = instr->values()->at(i); | 1782 HValue* value = instr->values()->at(i); |
| 1775 if (instr->HasAssignedIndexAt(i)) { | 1783 if (instr->HasAssignedIndexAt(i)) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1815 | 1823 |
| 1816 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { | 1824 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { |
| 1817 HEnvironment* outer = current_block_->last_environment()->outer(); | 1825 HEnvironment* outer = current_block_->last_environment()->outer(); |
| 1818 current_block_->UpdateEnvironment(outer); | 1826 current_block_->UpdateEnvironment(outer); |
| 1819 return NULL; | 1827 return NULL; |
| 1820 } | 1828 } |
| 1821 | 1829 |
| 1822 } } // namespace v8::internal | 1830 } } // namespace v8::internal |
| 1823 | 1831 |
| 1824 #endif // V8_TARGET_ARCH_X64 | 1832 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |