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

Side by Side Diff: src/x64/macro-assembler-x64.h

Issue 2071020: Reverting r4685, r4686, r4687 (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 years, 7 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/x64/ic-x64.cc ('k') | src/x64/macro-assembler-x64.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 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 void LoadRoot(Register destination, Heap::RootListIndex index); 72 void LoadRoot(Register destination, Heap::RootListIndex index);
73 void CompareRoot(Register with, Heap::RootListIndex index); 73 void CompareRoot(Register with, Heap::RootListIndex index);
74 void CompareRoot(Operand with, Heap::RootListIndex index); 74 void CompareRoot(Operand with, Heap::RootListIndex index);
75 void PushRoot(Heap::RootListIndex index); 75 void PushRoot(Heap::RootListIndex index);
76 void StoreRoot(Register source, Heap::RootListIndex index); 76 void StoreRoot(Register source, Heap::RootListIndex index);
77 77
78 // --------------------------------------------------------------------------- 78 // ---------------------------------------------------------------------------
79 // GC Support 79 // GC Support
80 80
81 // For page containing |object| mark region covering |addr| dirty. 81 // Set the remebered set bit for an address which points into an
82 // RecordWriteHelper only works if the object is not in new 82 // object. RecordWriteHelper only works if the object is not in new
83 // space. 83 // space.
84 void RecordWriteHelper(Register object, 84 void RecordWriteHelper(Register object,
85 Register addr, 85 Register addr,
86 Register scratch); 86 Register scratch);
87 87
88 // Check if object is in new space. The condition cc can be equal or 88 // Check if object is in new space. The condition cc can be equal or
89 // not_equal. If it is equal a jump will be done if the object is on new 89 // not_equal. If it is equal a jump will be done if the object is on new
90 // space. The register scratch can be object itself, but it will be clobbered. 90 // space. The register scratch can be object itself, but it will be clobbered.
91 void InNewSpace(Register object, 91 void InNewSpace(Register object,
92 Register scratch, 92 Register scratch,
93 Condition cc, 93 Condition cc,
94 Label* branch); 94 Label* branch);
95 95
96 // For page containing |object| mark region covering [object+offset] dirty. 96 // Set the remembered set bit for [object+offset].
97 // object is the object being stored into, value is the object being stored. 97 // object is the object being stored into, value is the object being stored.
98 // If offset is zero, then the scratch register contains the array index into 98 // If offset is zero, then the scratch register contains the array index into
99 // the elements array represented as a Smi. 99 // the elements array represented as a Smi.
100 // All registers are clobbered by the operation. 100 // All registers are clobbered by the operation.
101 void RecordWrite(Register object, 101 void RecordWrite(Register object,
102 int offset, 102 int offset,
103 Register value, 103 Register value,
104 Register scratch); 104 Register scratch);
105 105
106 // For page containing |object| mark region covering [object+offset] dirty. 106 // Set the remembered set bit for [object+offset].
107 // The value is known to not be a smi. 107 // The value is known to not be a smi.
108 // object is the object being stored into, value is the object being stored. 108 // object is the object being stored into, value is the object being stored.
109 // If offset is zero, then the scratch register contains the array index into 109 // If offset is zero, then the scratch register contains the array index into
110 // the elements array represented as a Smi. 110 // the elements array represented as a Smi.
111 // All registers are clobbered by the operation. 111 // All registers are clobbered by the operation.
112 void RecordWriteNonSmi(Register object, 112 void RecordWriteNonSmi(Register object,
113 int offset, 113 int offset,
114 Register value, 114 Register value,
115 Register scratch); 115 Register scratch);
116 116
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 213
214 // Convert smi to 64-bit integer (sign extended if necessary). 214 // Convert smi to 64-bit integer (sign extended if necessary).
215 void SmiToInteger64(Register dst, Register src); 215 void SmiToInteger64(Register dst, Register src);
216 216
217 // Multiply a positive smi's integer value by a power of two. 217 // Multiply a positive smi's integer value by a power of two.
218 // Provides result as 64-bit integer value. 218 // Provides result as 64-bit integer value.
219 void PositiveSmiTimesPowerOfTwoToInteger64(Register dst, 219 void PositiveSmiTimesPowerOfTwoToInteger64(Register dst,
220 Register src, 220 Register src,
221 int power); 221 int power);
222 222
223 // Divide a positive smi's integer value by a power of two.
224 // Provides result as 32-bit integer value.
225 void PositiveSmiDivPowerOfTwoToInteger32(Register dst,
226 Register src,
227 int power);
228
229
230 // Simple comparison of smis. 223 // Simple comparison of smis.
231 void SmiCompare(Register dst, Register src); 224 void SmiCompare(Register dst, Register src);
232 void SmiCompare(Register dst, Smi* src); 225 void SmiCompare(Register dst, Smi* src);
233 void SmiCompare(Register dst, const Operand& src); 226 void SmiCompare(Register dst, const Operand& src);
234 void SmiCompare(const Operand& dst, Register src); 227 void SmiCompare(const Operand& dst, Register src);
235 void SmiCompare(const Operand& dst, Smi* src); 228 void SmiCompare(const Operand& dst, Smi* src);
236 // Sets sign and zero flags depending on value of smi in register. 229 // Sets sign and zero flags depending on value of smi in register.
237 void SmiTest(Register src); 230 void SmiTest(Register src);
238 231
239 // Functions performing a check on a known or potential smi. Returns 232 // Functions performing a check on a known or potential smi. Returns
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 // the label. 299 // the label.
307 void SmiTryAddConstant(Register dst, 300 void SmiTryAddConstant(Register dst,
308 Register src, 301 Register src,
309 Smi* constant, 302 Smi* constant,
310 Label* on_not_smi_result); 303 Label* on_not_smi_result);
311 304
312 // Add an integer constant to a tagged smi, giving a tagged smi as result. 305 // Add an integer constant to a tagged smi, giving a tagged smi as result.
313 // No overflow testing on the result is done. 306 // No overflow testing on the result is done.
314 void SmiAddConstant(Register dst, Register src, Smi* constant); 307 void SmiAddConstant(Register dst, Register src, Smi* constant);
315 308
316 // Add an integer constant to a tagged smi, giving a tagged smi as result.
317 // No overflow testing on the result is done.
318 void SmiAddConstant(const Operand& dst, Smi* constant);
319
320 // Add an integer constant to a tagged smi, giving a tagged smi as result, 309 // Add an integer constant to a tagged smi, giving a tagged smi as result,
321 // or jumping to a label if the result cannot be represented by a smi. 310 // or jumping to a label if the result cannot be represented by a smi.
322 void SmiAddConstant(Register dst, 311 void SmiAddConstant(Register dst,
323 Register src, 312 Register src,
324 Smi* constant, 313 Smi* constant,
325 Label* on_not_smi_result); 314 Label* on_not_smi_result);
326 315
327 // Subtract an integer constant from a tagged smi, giving a tagged smi as 316 // Subtract an integer constant from a tagged smi, giving a tagged smi as
328 // result. No testing on the result is done. Sets the N and Z flags 317 // result. No testing on the result is done. Sets the N and Z flags
329 // based on the value of the resulting integer. 318 // based on the value of the resulting integer.
(...skipping 23 matching lines...) Expand all
353 // Subtracts smi values and return the result as a smi. 342 // Subtracts smi values and return the result as a smi.
354 // If dst is src1, then src1 will be destroyed, even if 343 // If dst is src1, then src1 will be destroyed, even if
355 // the operation is unsuccessful. 344 // the operation is unsuccessful.
356 void SmiSub(Register dst, 345 void SmiSub(Register dst,
357 Register src1, 346 Register src1,
358 Register src2, 347 Register src2,
359 Label* on_not_smi_result); 348 Label* on_not_smi_result);
360 349
361 void SmiSub(Register dst, 350 void SmiSub(Register dst,
362 Register src1, 351 Register src1,
363 const Operand& src2, 352 Operand const& src2,
364 Label* on_not_smi_result); 353 Label* on_not_smi_result);
365 354
366 // Multiplies smi values and return the result as a smi, 355 // Multiplies smi values and return the result as a smi,
367 // if possible. 356 // if possible.
368 // If dst is src1, then src1 will be destroyed, even if 357 // If dst is src1, then src1 will be destroyed, even if
369 // the operation is unsuccessful. 358 // the operation is unsuccessful.
370 void SmiMul(Register dst, 359 void SmiMul(Register dst,
371 Register src1, 360 Register src1,
372 Register src2, 361 Register src2,
373 Label* on_not_smi_result); 362 Label* on_not_smi_result);
(...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 } \ 872 } \
884 masm-> 873 masm->
885 #else 874 #else
886 #define ACCESS_MASM(masm) masm-> 875 #define ACCESS_MASM(masm) masm->
887 #endif 876 #endif
888 877
889 878
890 } } // namespace v8::internal 879 } } // namespace v8::internal
891 880
892 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 881 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW
« no previous file with comments | « src/x64/ic-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698