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

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

Issue 2255004: Cardmarking writebarrier. (Closed)
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
« no previous file with comments | « src/arm/ic-arm.cc ('k') | src/arm/macro-assembler-arm.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 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 107
108 108
109 // Check if object is in new space. 109 // Check if object is in new space.
110 // scratch can be object itself, but it will be clobbered. 110 // scratch can be object itself, but it will be clobbered.
111 void InNewSpace(Register object, 111 void InNewSpace(Register object,
112 Register scratch, 112 Register scratch,
113 Condition cc, // eq for new space, ne otherwise 113 Condition cc, // eq for new space, ne otherwise
114 Label* branch); 114 Label* branch);
115 115
116 116
117 // Set the remebered set bit for an offset into an 117 // For the page containing |object| mark the region covering [object+offset]
118 // object. RecordWriteHelper only works if the object is not in new 118 // dirty. The object address must be in the first 8K of an allocated page.
119 // space.
120 void RecordWriteHelper(Register object, Register offset, Register scracth); 119 void RecordWriteHelper(Register object, Register offset, Register scracth);
121 120
122 // Sets the remembered set bit for [address+offset], where address is the 121 // For the page containing |object| mark the region covering [object+offset]
123 // address of the heap object 'object'. The address must be in the first 8K 122 // dirty. The object address must be in the first 8K of an allocated page.
124 // of an allocated page. The 'scratch' register is used in the 123 // The 'scratch' register is used in the implementation and all 3 registers
125 // implementation and all 3 registers are clobbered by the operation, as 124 // are clobbered by the operation, as well as the ip register.
126 // well as the ip register.
127 void RecordWrite(Register object, Register offset, Register scratch); 125 void RecordWrite(Register object, Register offset, Register scratch);
128 126
129 // Push two registers. Pushes leftmost register first (to highest address). 127 // Push two registers. Pushes leftmost register first (to highest address).
130 void Push(Register src1, Register src2, Condition cond = al) { 128 void Push(Register src1, Register src2, Condition cond = al) {
131 ASSERT(!src1.is(src2)); 129 ASSERT(!src1.is(src2));
132 if (src1.code() > src2.code()) { 130 if (src1.code() > src2.code()) {
133 stm(db_w, sp, src1.bit() | src2.bit(), cond); 131 stm(db_w, sp, src1.bit() | src2.bit(), cond);
134 } else { 132 } else {
135 str(src1, MemOperand(sp, 4, NegPreIndex), cond); 133 str(src1, MemOperand(sp, 4, NegPreIndex), cond);
136 str(src2, MemOperand(sp, 4, NegPreIndex), cond); 134 str(src2, MemOperand(sp, 4, NegPreIndex), cond);
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 655 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
658 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 656 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
659 #else 657 #else
660 #define ACCESS_MASM(masm) masm-> 658 #define ACCESS_MASM(masm) masm->
661 #endif 659 #endif
662 660
663 661
664 } } // namespace v8::internal 662 } } // namespace v8::internal
665 663
666 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 664 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « src/arm/ic-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698