Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(546)

Side by Side Diff: src/hydrogen-instructions.h

Issue 6321012: Version 3.0.9... (Closed) Base URL: http://v8.googlecode.com/svn/trunk/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/hydrogen.cc ('k') | src/hydrogen-instructions.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 int position() const { return position_; } 766 int position() const { return position_; }
767 bool has_position() const { return position_ != RelocInfo::kNoPosition; } 767 bool has_position() const { return position_ != RelocInfo::kNoPosition; }
768 void set_position(int position) { position_ = position; } 768 void set_position(int position) { position_ = position; }
769 769
770 virtual LInstruction* CompileToLithium(LChunkBuilder* builder) = 0; 770 virtual LInstruction* CompileToLithium(LChunkBuilder* builder) = 0;
771 771
772 #ifdef DEBUG 772 #ifdef DEBUG
773 virtual void Verify() const; 773 virtual void Verify() const;
774 #endif 774 #endif
775 775
776 // Returns whether this is some kind of deoptimizing check
777 // instruction.
778 virtual bool IsCheckInstruction() const { return false; }
779
776 DECLARE_INSTRUCTION(Instruction) 780 DECLARE_INSTRUCTION(Instruction)
777 781
778 protected: 782 protected:
779 HInstruction() 783 HInstruction()
780 : next_(NULL), 784 : next_(NULL),
781 previous_(NULL), 785 previous_(NULL),
782 position_(RelocInfo::kNoPosition) { 786 position_(RelocInfo::kNoPosition) {
783 SetFlag(kDependsOnOsrEntries); 787 SetFlag(kDependsOnOsrEntries);
784 } 788 }
785 789
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
1497 1501
1498 class HCheckMap: public HUnaryOperation { 1502 class HCheckMap: public HUnaryOperation {
1499 public: 1503 public:
1500 HCheckMap(HValue* value, Handle<Map> map) 1504 HCheckMap(HValue* value, Handle<Map> map)
1501 : HUnaryOperation(value), map_(map) { 1505 : HUnaryOperation(value), map_(map) {
1502 set_representation(Representation::Tagged()); 1506 set_representation(Representation::Tagged());
1503 SetFlag(kUseGVN); 1507 SetFlag(kUseGVN);
1504 SetFlag(kDependsOnMaps); 1508 SetFlag(kDependsOnMaps);
1505 } 1509 }
1506 1510
1511 virtual bool IsCheckInstruction() const { return true; }
1512
1507 virtual Representation RequiredInputRepresentation(int index) const { 1513 virtual Representation RequiredInputRepresentation(int index) const {
1508 return Representation::Tagged(); 1514 return Representation::Tagged();
1509 } 1515 }
1510 virtual void PrintDataTo(StringStream* stream) const; 1516 virtual void PrintDataTo(StringStream* stream) const;
1511 virtual HType CalculateInferredType() const; 1517 virtual HType CalculateInferredType() const;
1512 1518
1513 #ifdef DEBUG 1519 #ifdef DEBUG
1514 virtual void Verify() const; 1520 virtual void Verify() const;
1515 #endif 1521 #endif
1516 1522
(...skipping 13 matching lines...) Expand all
1530 1536
1531 1537
1532 class HCheckFunction: public HUnaryOperation { 1538 class HCheckFunction: public HUnaryOperation {
1533 public: 1539 public:
1534 HCheckFunction(HValue* value, Handle<JSFunction> function) 1540 HCheckFunction(HValue* value, Handle<JSFunction> function)
1535 : HUnaryOperation(value), target_(function) { 1541 : HUnaryOperation(value), target_(function) {
1536 set_representation(Representation::Tagged()); 1542 set_representation(Representation::Tagged());
1537 SetFlag(kUseGVN); 1543 SetFlag(kUseGVN);
1538 } 1544 }
1539 1545
1546 virtual bool IsCheckInstruction() const { return true; }
1547
1540 virtual Representation RequiredInputRepresentation(int index) const { 1548 virtual Representation RequiredInputRepresentation(int index) const {
1541 return Representation::Tagged(); 1549 return Representation::Tagged();
1542 } 1550 }
1543 virtual void PrintDataTo(StringStream* stream) const; 1551 virtual void PrintDataTo(StringStream* stream) const;
1544 virtual HType CalculateInferredType() const; 1552 virtual HType CalculateInferredType() const;
1545 1553
1546 #ifdef DEBUG 1554 #ifdef DEBUG
1547 virtual void Verify() const; 1555 virtual void Verify() const;
1548 #endif 1556 #endif
1549 1557
(...skipping 16 matching lines...) Expand all
1566 public: 1574 public:
1567 // Check that the instance type is in the range [first, last] where 1575 // Check that the instance type is in the range [first, last] where
1568 // both first and last are included. 1576 // both first and last are included.
1569 HCheckInstanceType(HValue* value, InstanceType first, InstanceType last) 1577 HCheckInstanceType(HValue* value, InstanceType first, InstanceType last)
1570 : HUnaryOperation(value), first_(first), last_(last) { 1578 : HUnaryOperation(value), first_(first), last_(last) {
1571 ASSERT(first <= last); 1579 ASSERT(first <= last);
1572 set_representation(Representation::Tagged()); 1580 set_representation(Representation::Tagged());
1573 SetFlag(kUseGVN); 1581 SetFlag(kUseGVN);
1574 } 1582 }
1575 1583
1584 virtual bool IsCheckInstruction() const { return true; }
1585
1576 virtual Representation RequiredInputRepresentation(int index) const { 1586 virtual Representation RequiredInputRepresentation(int index) const {
1577 return Representation::Tagged(); 1587 return Representation::Tagged();
1578 } 1588 }
1579 1589
1580 #ifdef DEBUG 1590 #ifdef DEBUG
1581 virtual void Verify() const; 1591 virtual void Verify() const;
1582 #endif 1592 #endif
1583 1593
1584 static HCheckInstanceType* NewIsJSObjectOrJSFunction(HValue* value); 1594 static HCheckInstanceType* NewIsJSObjectOrJSFunction(HValue* value);
1585 1595
(...skipping 17 matching lines...) Expand all
1603 }; 1613 };
1604 1614
1605 1615
1606 class HCheckNonSmi: public HUnaryOperation { 1616 class HCheckNonSmi: public HUnaryOperation {
1607 public: 1617 public:
1608 explicit HCheckNonSmi(HValue* value) : HUnaryOperation(value) { 1618 explicit HCheckNonSmi(HValue* value) : HUnaryOperation(value) {
1609 set_representation(Representation::Tagged()); 1619 set_representation(Representation::Tagged());
1610 SetFlag(kUseGVN); 1620 SetFlag(kUseGVN);
1611 } 1621 }
1612 1622
1623 virtual bool IsCheckInstruction() const { return true; }
1624
1613 virtual Representation RequiredInputRepresentation(int index) const { 1625 virtual Representation RequiredInputRepresentation(int index) const {
1614 return Representation::Tagged(); 1626 return Representation::Tagged();
1615 } 1627 }
1616 1628
1617 virtual HType CalculateInferredType() const; 1629 virtual HType CalculateInferredType() const;
1618 1630
1619 #ifdef DEBUG 1631 #ifdef DEBUG
1620 virtual void Verify() const; 1632 virtual void Verify() const;
1621 #endif 1633 #endif
1622 1634
1623 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check_non_smi") 1635 DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check_non_smi")
1624 }; 1636 };
1625 1637
1626 1638
1627 class HCheckPrototypeMaps: public HInstruction { 1639 class HCheckPrototypeMaps: public HInstruction {
1628 public: 1640 public:
1629 HCheckPrototypeMaps(Handle<JSObject> prototype, Handle<JSObject> holder) 1641 HCheckPrototypeMaps(Handle<JSObject> prototype, Handle<JSObject> holder)
1630 : prototype_(prototype), holder_(holder) { 1642 : prototype_(prototype), holder_(holder) {
1631 SetFlag(kUseGVN); 1643 SetFlag(kUseGVN);
1632 SetFlag(kDependsOnMaps); 1644 SetFlag(kDependsOnMaps);
1633 } 1645 }
1634 1646
1647 virtual bool IsCheckInstruction() const { return true; }
1648
1635 #ifdef DEBUG 1649 #ifdef DEBUG
1636 virtual void Verify() const; 1650 virtual void Verify() const;
1637 #endif 1651 #endif
1638 1652
1639 Handle<JSObject> prototype() const { return prototype_; } 1653 Handle<JSObject> prototype() const { return prototype_; }
1640 Handle<JSObject> holder() const { return holder_; } 1654 Handle<JSObject> holder() const { return holder_; }
1641 1655
1642 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check_prototype_maps") 1656 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check_prototype_maps")
1643 1657
1644 virtual intptr_t Hashcode() const { 1658 virtual intptr_t Hashcode() const {
(...skipping 16 matching lines...) Expand all
1661 }; 1675 };
1662 1676
1663 1677
1664 class HCheckSmi: public HUnaryOperation { 1678 class HCheckSmi: public HUnaryOperation {
1665 public: 1679 public:
1666 explicit HCheckSmi(HValue* value) : HUnaryOperation(value) { 1680 explicit HCheckSmi(HValue* value) : HUnaryOperation(value) {
1667 set_representation(Representation::Tagged()); 1681 set_representation(Representation::Tagged());
1668 SetFlag(kUseGVN); 1682 SetFlag(kUseGVN);
1669 } 1683 }
1670 1684
1685 virtual bool IsCheckInstruction() const { return true; }
1686
1671 virtual Representation RequiredInputRepresentation(int index) const { 1687 virtual Representation RequiredInputRepresentation(int index) const {
1672 return Representation::Tagged(); 1688 return Representation::Tagged();
1673 } 1689 }
1674 virtual HType CalculateInferredType() const; 1690 virtual HType CalculateInferredType() const;
1675 1691
1676 #ifdef DEBUG 1692 #ifdef DEBUG
1677 virtual void Verify() const; 1693 virtual void Verify() const;
1678 #endif 1694 #endif
1679 1695
1680 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check_smi") 1696 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check_smi")
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1989 }; 2005 };
1990 2006
1991 2007
1992 class HBoundsCheck: public HBinaryOperation { 2008 class HBoundsCheck: public HBinaryOperation {
1993 public: 2009 public:
1994 HBoundsCheck(HValue* index, HValue* length) 2010 HBoundsCheck(HValue* index, HValue* length)
1995 : HBinaryOperation(index, length) { 2011 : HBinaryOperation(index, length) {
1996 SetFlag(kUseGVN); 2012 SetFlag(kUseGVN);
1997 } 2013 }
1998 2014
2015 virtual bool IsCheckInstruction() const { return true; }
2016
1999 virtual Representation RequiredInputRepresentation(int index) const { 2017 virtual Representation RequiredInputRepresentation(int index) const {
2000 return Representation::Integer32(); 2018 return Representation::Integer32();
2001 } 2019 }
2002 2020
2003 #ifdef DEBUG 2021 #ifdef DEBUG
2004 virtual void Verify() const; 2022 virtual void Verify() const;
2005 #endif 2023 #endif
2006 2024
2007 HValue* index() const { return left(); } 2025 HValue* index() const { return left(); }
2008 HValue* length() const { return right(); } 2026 HValue* length() const { return right(); }
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after
3058 HValue* object() const { return left(); } 3076 HValue* object() const { return left(); }
3059 HValue* key() const { return right(); } 3077 HValue* key() const { return right(); }
3060 }; 3078 };
3061 3079
3062 #undef DECLARE_INSTRUCTION 3080 #undef DECLARE_INSTRUCTION
3063 #undef DECLARE_CONCRETE_INSTRUCTION 3081 #undef DECLARE_CONCRETE_INSTRUCTION
3064 3082
3065 } } // namespace v8::internal 3083 } } // namespace v8::internal
3066 3084
3067 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 3085 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/hydrogen-instructions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698