OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
835 // Label L; // unbound label | 835 // Label L; // unbound label |
836 // j(cc, &L); // forward branch to unbound label | 836 // j(cc, &L); // forward branch to unbound label |
837 // bind(&L); // bind label to the current pc | 837 // bind(&L); // bind label to the current pc |
838 // j(cc, &L); // backward branch to bound label | 838 // j(cc, &L); // backward branch to bound label |
839 // bind(&L); // illegal: a label may be bound only once | 839 // bind(&L); // illegal: a label may be bound only once |
840 // | 840 // |
841 // Note: The same Label can be used for forward and backward branches | 841 // Note: The same Label can be used for forward and backward branches |
842 // but it may be bound only once. | 842 // but it may be bound only once. |
843 | 843 |
844 void bind(Label* L); // binds an unbound label L to the current code position | 844 void bind(Label* L); // binds an unbound label L to the current code position |
845 // DEPRECATED. Use bind(Label*) with jmp(Label*, Label::kNear) instead. | |
846 void bind(NearLabel* L); | |
847 | 845 |
848 // Calls | 846 // Calls |
849 void call(Label* L); | 847 void call(Label* L); |
850 void call(byte* entry, RelocInfo::Mode rmode); | 848 void call(byte* entry, RelocInfo::Mode rmode); |
851 int CallSize(const Operand& adr); | 849 int CallSize(const Operand& adr); |
852 void call(const Operand& adr); | 850 void call(const Operand& adr); |
853 int CallSize(Handle<Code> code, RelocInfo::Mode mode); | 851 int CallSize(Handle<Code> code, RelocInfo::Mode mode); |
854 void call(Handle<Code> code, | 852 void call(Handle<Code> code, |
855 RelocInfo::Mode rmode, | 853 RelocInfo::Mode rmode, |
856 unsigned ast_id = kNoASTId); | 854 unsigned ast_id = kNoASTId); |
857 | 855 |
858 // Jumps | 856 // Jumps |
859 // unconditional jump to L | 857 // unconditional jump to L |
860 void jmp(Label* L, Label::Distance distance = Label::kFar); | 858 void jmp(Label* L, Label::Distance distance = Label::kFar); |
861 void jmp(byte* entry, RelocInfo::Mode rmode); | 859 void jmp(byte* entry, RelocInfo::Mode rmode); |
862 void jmp(const Operand& adr); | 860 void jmp(const Operand& adr); |
863 void jmp(Handle<Code> code, RelocInfo::Mode rmode); | 861 void jmp(Handle<Code> code, RelocInfo::Mode rmode); |
864 | 862 |
865 // Short jump | |
866 // DEPRECATED. Use jmp(Label*, Label::kNear) instead. | |
867 void jmp(NearLabel* L); | |
868 | |
869 // Conditional jumps | 863 // Conditional jumps |
870 void j(Condition cc, | 864 void j(Condition cc, |
871 Label* L, | 865 Label* L, |
872 Hint hint, | 866 Hint hint, |
873 Label::Distance distance = Label::kFar); | 867 Label::Distance distance = Label::kFar); |
874 void j(Condition cc, Label* L, Label::Distance distance = Label::kFar) { | 868 void j(Condition cc, Label* L, Label::Distance distance = Label::kFar) { |
875 j(cc, L, no_hint, distance); | 869 j(cc, L, no_hint, distance); |
876 } | 870 } |
877 void j(Condition cc, byte* entry, RelocInfo::Mode rmode, Hint hint = no_hint); | 871 void j(Condition cc, byte* entry, RelocInfo::Mode rmode, Hint hint = no_hint); |
878 void j(Condition cc, Handle<Code> code, Hint hint = no_hint); | 872 void j(Condition cc, Handle<Code> code, Hint hint = no_hint); |
879 | 873 |
880 // Conditional short jump | |
881 // DEPRECATED. Use j(Condition, Label*, Label::kNear) instead. | |
882 void j(Condition cc, NearLabel* L, Hint hint = no_hint); | |
883 | |
884 // Floating-point operations | 874 // Floating-point operations |
885 void fld(int i); | 875 void fld(int i); |
886 void fstp(int i); | 876 void fstp(int i); |
887 | 877 |
888 void fld1(); | 878 void fld1(); |
889 void fldz(); | 879 void fldz(); |
890 void fldpi(); | 880 void fldpi(); |
891 void fldln2(); | 881 void fldln2(); |
892 | 882 |
893 void fld_s(const Operand& adr); | 883 void fld_s(const Operand& adr); |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1168 private: | 1158 private: |
1169 Assembler* assembler_; | 1159 Assembler* assembler_; |
1170 #ifdef DEBUG | 1160 #ifdef DEBUG |
1171 int space_before_; | 1161 int space_before_; |
1172 #endif | 1162 #endif |
1173 }; | 1163 }; |
1174 | 1164 |
1175 } } // namespace v8::internal | 1165 } } // namespace v8::internal |
1176 | 1166 |
1177 #endif // V8_IA32_ASSEMBLER_IA32_H_ | 1167 #endif // V8_IA32_ASSEMBLER_IA32_H_ |
OLD | NEW |