Changeset 54747 in webkit for trunk/JavaScriptCore/bytecode
- Timestamp:
- Feb 12, 2010, 7:09:11 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/bytecode/CodeBlock.h
r53400 r54747 111 111 CodeLocationDataLabelPtr hotPathBegin; 112 112 CodeLocationNearCall hotPathOther; 113 PtrAndFlags<CodeBlock, HasSeenShouldRepatch>ownerCodeBlock;113 CodeBlock* ownerCodeBlock; 114 114 CodeBlock* callee; 115 unsigned position; 115 unsigned position : 31; 116 unsigned hasSeenShouldRepatch : 1; 116 117 117 118 void setUnlinked() { callee = 0; } … … 120 121 bool seenOnce() 121 122 { 122 return ownerCodeBlock.isFlagSet(hasSeenShouldRepatch);123 return hasSeenShouldRepatch; 123 124 } 124 125 125 126 void setSeen() 126 127 { 127 ownerCodeBlock.setFlag(hasSeenShouldRepatch);128 hasSeenShouldRepatch = true; 128 129 } 129 130 }; … … 132 133 MethodCallLinkInfo() 133 134 : cachedStructure(0) 135 , cachedPrototypeStructure(0) 134 136 { 135 137 } … … 137 139 bool seenOnce() 138 140 { 139 return cachedPrototypeStructure.isFlagSet(hasSeenShouldRepatch); 141 ASSERT(!cachedStructure); 142 return cachedPrototypeStructure; 140 143 } 141 144 142 145 void setSeen() 143 146 { 144 cachedPrototypeStructure.setFlag(hasSeenShouldRepatch); 147 ASSERT(!cachedStructure && !cachedPrototypeStructure); 148 // We use the values of cachedStructure & cachedPrototypeStructure to indicate the 149 // current state. 150 // - In the initial state, both are null. 151 // - Once this transition has been taken once, cachedStructure is 152 // null and cachedPrototypeStructure is set to a nun-null value. 153 // - Once the call is linked both structures are set to non-null values. 154 cachedPrototypeStructure = (Structure*)1; 145 155 } 146 156 … … 148 158 CodeLocationDataLabelPtr structureLabel; 149 159 Structure* cachedStructure; 150 PtrAndFlags<Structure, HasSeenShouldRepatch>cachedPrototypeStructure;160 Structure* cachedPrototypeStructure; 151 161 }; 152 162
Note:
See TracChangeset
for help on using the changeset viewer.