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

Side by Side Diff: src/assembler.h

Issue 12427: Merge regexp2000 back into bleeding_edge (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 12 years 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
OLDNEW
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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 44
45 // ----------------------------------------------------------------------------- 45 // -----------------------------------------------------------------------------
46 // Labels represent pc locations; they are typically jump or call targets. 46 // Labels represent pc locations; they are typically jump or call targets.
47 // After declaration, a label can be freely used to denote known or (yet) 47 // After declaration, a label can be freely used to denote known or (yet)
48 // unknown pc location. Assembler::bind() is used to bind a label to the 48 // unknown pc location. Assembler::bind() is used to bind a label to the
49 // current pc. A label can be bound only once. 49 // current pc. A label can be bound only once.
50 50
51 class Label : public ZoneObject { // LabelShadows are dynamically allocated. 51 class Label : public ZoneObject { // LabelShadows are dynamically allocated.
52 public: 52 public:
53 INLINE(Label()) { Unuse(); } 53 INLINE(Label())
54 { Unuse(); }
Mads Ager (chromium) 2008/11/25 21:09:41 This looks like an accidental edit?
Erik Corry 2008/11/26 12:18:36 Indeed it does. Fixed.
54 INLINE(~Label()) { ASSERT(!is_linked()); } 55 INLINE(~Label()) { ASSERT(!is_linked()); }
55 56
56 INLINE(void Unuse()) { pos_ = 0; } 57 INLINE(void Unuse()) { pos_ = 0; }
57 58
58 INLINE(bool is_bound() const) { return pos_ < 0; } 59 INLINE(bool is_bound() const) { return pos_ < 0; }
59 INLINE(bool is_unused() const) { return pos_ == 0; } 60 INLINE(bool is_unused() const) { return pos_ == 0; }
60 INLINE(bool is_linked() const) { return pos_ > 0; } 61 INLINE(bool is_linked() const) { return pos_ > 0; }
61 62
62 // Returns the position of bound or linked labels. Cannot be used 63 // Returns the position of bound or linked labels. Cannot be used
63 // for unused labels. 64 // for unused labels.
(...skipping 11 matching lines...) Expand all
75 void bind_to(int pos) { 76 void bind_to(int pos) {
76 pos_ = -pos - 1; 77 pos_ = -pos - 1;
77 ASSERT(is_bound()); 78 ASSERT(is_bound());
78 } 79 }
79 void link_to(int pos) { 80 void link_to(int pos) {
80 pos_ = pos + 1; 81 pos_ = pos + 1;
81 ASSERT(is_linked()); 82 ASSERT(is_linked());
82 } 83 }
83 84
84 friend class Assembler; 85 friend class Assembler;
86 friend class RegexpAssembler;
85 friend class Displacement; 87 friend class Displacement;
86 friend class LabelShadow; 88 friend class LabelShadow;
89 friend class IrregexpAssembler;
87 }; 90 };
88 91
89 92
90 // A LabelShadow represents a label that is temporarily shadowed by another 93 // A LabelShadow represents a label that is temporarily shadowed by another
91 // label (represented by the original label during shadowing). They are used 94 // label (represented by the original label during shadowing). They are used
92 // to catch jumps to labels in certain contexts, e.g. try blocks. After 95 // to catch jumps to labels in certain contexts, e.g. try blocks. After
93 // shadowing ends, the formerly shadowed label is again represented by the 96 // shadowing ends, the formerly shadowed label is again represented by the
94 // original label and the LabelShadow can be used as a label in its own 97 // original label and the LabelShadow can be used as a label in its own
95 // right, representing the formerly shadowing label. 98 // right, representing the formerly shadowing label.
96 class LabelShadow : public Label { 99 class LabelShadow : public Label {
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 static inline bool is_uint4(int x) { return is_uintn(x, 4); } 471 static inline bool is_uint4(int x) { return is_uintn(x, 4); }
469 static inline bool is_uint5(int x) { return is_uintn(x, 5); } 472 static inline bool is_uint5(int x) { return is_uintn(x, 5); }
470 static inline bool is_uint8(int x) { return is_uintn(x, 8); } 473 static inline bool is_uint8(int x) { return is_uintn(x, 8); }
471 static inline bool is_uint12(int x) { return is_uintn(x, 12); } 474 static inline bool is_uint12(int x) { return is_uintn(x, 12); }
472 static inline bool is_uint16(int x) { return is_uintn(x, 16); } 475 static inline bool is_uint16(int x) { return is_uintn(x, 16); }
473 static inline bool is_uint24(int x) { return is_uintn(x, 24); } 476 static inline bool is_uint24(int x) { return is_uintn(x, 24); }
474 477
475 } } // namespace v8::internal 478 } } // namespace v8::internal
476 479
477 #endif // V8_ASSEMBLER_H_ 480 #endif // V8_ASSEMBLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698