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

Side by Side Diff: src/ia32/debug-ia32.cc

Issue 1218493005: Debugger: use debug break slots instead of ICs (except for calls). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: addressed comments Created 5 years, 5 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/full-codegen.cc ('k') | src/ia32/full-codegen-ia32.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_IA32 7 #if V8_TARGET_ARCH_IA32
8 8
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/debug.h" 10 #include "src/debug.h"
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 // Register state for CallICStub 172 // Register state for CallICStub
173 // ----------- S t a t e ------------- 173 // ----------- S t a t e -------------
174 // -- edx : type feedback slot (smi) 174 // -- edx : type feedback slot (smi)
175 // -- edi : function 175 // -- edi : function
176 // ----------------------------------- 176 // -----------------------------------
177 Generate_DebugBreakCallHelper(masm, edx.bit() | edi.bit(), 177 Generate_DebugBreakCallHelper(masm, edx.bit() | edi.bit(),
178 0, false); 178 0, false);
179 } 179 }
180 180
181 181
182 void DebugCodegen::GenerateLoadICDebugBreak(MacroAssembler* masm) {
183 // Register state for IC load call (from ic-ia32.cc).
184 Register receiver = LoadDescriptor::ReceiverRegister();
185 Register name = LoadDescriptor::NameRegister();
186 Register slot = LoadDescriptor::SlotRegister();
187 RegList regs = receiver.bit() | name.bit() | slot.bit();
188 Generate_DebugBreakCallHelper(masm, regs, 0, false);
189 }
190
191
192 void DebugCodegen::GenerateStoreICDebugBreak(MacroAssembler* masm) {
193 // Register state for IC store call (from ic-ia32.cc).
194 Register receiver = StoreDescriptor::ReceiverRegister();
195 Register name = StoreDescriptor::NameRegister();
196 Register value = StoreDescriptor::ValueRegister();
197 RegList regs = receiver.bit() | name.bit() | value.bit();
198 if (FLAG_vector_stores) {
199 regs |= VectorStoreICDescriptor::SlotRegister().bit();
200 }
201 Generate_DebugBreakCallHelper(masm, regs, 0, false);
202 }
203
204
205 void DebugCodegen::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
206 // Register state for keyed IC load call (from ic-ia32.cc).
207 GenerateLoadICDebugBreak(masm);
208 }
209
210
211 void DebugCodegen::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
212 // Register state for keyed IC store call (from ic-ia32.cc).
213 GenerateStoreICDebugBreak(masm);
214 }
215
216
217 void DebugCodegen::GenerateCompareNilICDebugBreak(MacroAssembler* masm) {
218 // Register state for CompareNil IC
219 // ----------- S t a t e -------------
220 // -- eax : value
221 // -----------------------------------
222 Generate_DebugBreakCallHelper(masm, eax.bit(), 0, false);
223 }
224
225
226 void DebugCodegen::GenerateReturnDebugBreak(MacroAssembler* masm) { 182 void DebugCodegen::GenerateReturnDebugBreak(MacroAssembler* masm) {
227 // Register state just before return from JS function (from codegen-ia32.cc). 183 // Register state just before return from JS function (from codegen-ia32.cc).
228 // ----------- S t a t e ------------- 184 // ----------- S t a t e -------------
229 // -- eax: return value 185 // -- eax: return value
230 // ----------------------------------- 186 // -----------------------------------
231 Generate_DebugBreakCallHelper(masm, eax.bit(), 0, true); 187 Generate_DebugBreakCallHelper(masm, eax.bit(), 0, true);
232 } 188 }
233 189
234 190
235 void DebugCodegen::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) { 191 void DebugCodegen::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 Label check_codesize; 232 Label check_codesize;
277 __ bind(&check_codesize); 233 __ bind(&check_codesize);
278 __ RecordDebugBreakSlot(); 234 __ RecordDebugBreakSlot();
279 __ Nop(Assembler::kDebugBreakSlotLength); 235 __ Nop(Assembler::kDebugBreakSlotLength);
280 DCHECK_EQ(Assembler::kDebugBreakSlotLength, 236 DCHECK_EQ(Assembler::kDebugBreakSlotLength,
281 masm->SizeOfCodeGeneratedSince(&check_codesize)); 237 masm->SizeOfCodeGeneratedSince(&check_codesize));
282 } 238 }
283 239
284 240
285 void DebugCodegen::GenerateSlotDebugBreak(MacroAssembler* masm) { 241 void DebugCodegen::GenerateSlotDebugBreak(MacroAssembler* masm) {
286 // In the places where a debug break slot is inserted no registers can contain
287 // object pointers.
288 Generate_DebugBreakCallHelper(masm, 0, 0, true); 242 Generate_DebugBreakCallHelper(masm, 0, 0, true);
289 } 243 }
290 244
291 245
292 void DebugCodegen::GeneratePlainReturnLiveEdit(MacroAssembler* masm) { 246 void DebugCodegen::GeneratePlainReturnLiveEdit(MacroAssembler* masm) {
293 masm->ret(0); 247 masm->ret(0);
294 } 248 }
295 249
296 250
297 void DebugCodegen::GenerateFrameDropperLiveEdit(MacroAssembler* masm) { 251 void DebugCodegen::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
(...skipping 22 matching lines...) Expand all
320 274
321 275
322 const bool LiveEdit::kFrameDropperSupported = true; 276 const bool LiveEdit::kFrameDropperSupported = true;
323 277
324 #undef __ 278 #undef __
325 279
326 } // namespace internal 280 } // namespace internal
327 } // namespace v8 281 } // namespace v8
328 282
329 #endif // V8_TARGET_ARCH_IA32 283 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/full-codegen.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698