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

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

Issue 2114015: 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
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 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 643 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
646 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 644 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
647 #else 645 #else
648 #define ACCESS_MASM(masm) masm-> 646 #define ACCESS_MASM(masm) masm->
649 #endif 647 #endif
650 648
651 649
652 } } // namespace v8::internal 650 } } // namespace v8::internal
653 651
654 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 652 #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') | src/heap.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698