OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 SaveFPRegsMode save_fp, | 83 SaveFPRegsMode save_fp, |
84 RememberedSetFinalAction and_then); | 84 RememberedSetFinalAction and_then); |
85 | 85 |
86 void CheckPageFlag(Register object, | 86 void CheckPageFlag(Register object, |
87 Register scratch, | 87 Register scratch, |
88 int mask, | 88 int mask, |
89 Condition cc, | 89 Condition cc, |
90 Label* condition_met, | 90 Label* condition_met, |
91 Label::Distance condition_met_distance = Label::kFar); | 91 Label::Distance condition_met_distance = Label::kFar); |
92 | 92 |
| 93 void CheckPageFlagForMap( |
| 94 Handle<Map> map, |
| 95 int mask, |
| 96 Condition cc, |
| 97 Label* condition_met, |
| 98 Label::Distance condition_met_distance = Label::kFar); |
| 99 |
93 // Check if object is in new space. Jumps if the object is not in new space. | 100 // Check if object is in new space. Jumps if the object is not in new space. |
94 // The register scratch can be object itself, but scratch will be clobbered. | 101 // The register scratch can be object itself, but scratch will be clobbered. |
95 void JumpIfNotInNewSpace(Register object, | 102 void JumpIfNotInNewSpace(Register object, |
96 Register scratch, | 103 Register scratch, |
97 Label* branch, | 104 Label* branch, |
98 Label::Distance distance = Label::kFar) { | 105 Label::Distance distance = Label::kFar) { |
99 InNewSpace(object, scratch, zero, branch, distance); | 106 InNewSpace(object, scratch, zero, branch, distance); |
100 } | 107 } |
101 | 108 |
102 // Check if object is in new space. Jumps if the object is in new space. | 109 // Check if object is in new space. Jumps if the object is in new space. |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 // operation. RecordWrite filters out smis so it does not update the | 194 // operation. RecordWrite filters out smis so it does not update the |
188 // write barrier if the value is a smi. | 195 // write barrier if the value is a smi. |
189 void RecordWrite( | 196 void RecordWrite( |
190 Register object, | 197 Register object, |
191 Register address, | 198 Register address, |
192 Register value, | 199 Register value, |
193 SaveFPRegsMode save_fp, | 200 SaveFPRegsMode save_fp, |
194 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, | 201 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, |
195 SmiCheck smi_check = INLINE_SMI_CHECK); | 202 SmiCheck smi_check = INLINE_SMI_CHECK); |
196 | 203 |
| 204 // For page containing |object| mark the region covering the object's map |
| 205 // dirty. |object| is the object being stored into, |map| is the Map object |
| 206 // that was stored. |
| 207 void RecordWriteForMap( |
| 208 Register object, |
| 209 Handle<Map> map, |
| 210 Register scratch1, |
| 211 Register scratch2, |
| 212 SaveFPRegsMode save_fp); |
| 213 |
197 #ifdef ENABLE_DEBUGGER_SUPPORT | 214 #ifdef ENABLE_DEBUGGER_SUPPORT |
198 // --------------------------------------------------------------------------- | 215 // --------------------------------------------------------------------------- |
199 // Debugger Support | 216 // Debugger Support |
200 | 217 |
201 void DebugBreak(); | 218 void DebugBreak(); |
202 #endif | 219 #endif |
203 | 220 |
204 // Enter specific kind of exit frame. Expects the number of | 221 // Enter specific kind of exit frame. Expects the number of |
205 // arguments in register eax and sets up the number of arguments in | 222 // arguments in register eax and sets up the number of arguments in |
206 // register edi and the pointer to the first argument in register | 223 // register edi and the pointer to the first argument in register |
(...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 } \ | 987 } \ |
971 masm-> | 988 masm-> |
972 #else | 989 #else |
973 #define ACCESS_MASM(masm) masm-> | 990 #define ACCESS_MASM(masm) masm-> |
974 #endif | 991 #endif |
975 | 992 |
976 | 993 |
977 } } // namespace v8::internal | 994 } } // namespace v8::internal |
978 | 995 |
979 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ | 996 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ |
OLD | NEW |