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

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

Issue 6597104: Move IncrementalRecordWrite to a stub. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/gc
Patch Set: Created 9 years, 9 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
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 }; 46 };
47 47
48 // Convenience for platform-independent signatures. We do not normally 48 // Convenience for platform-independent signatures. We do not normally
49 // distinguish memory operands from other operands on ia32. 49 // distinguish memory operands from other operands on ia32.
50 typedef Operand MemOperand; 50 typedef Operand MemOperand;
51 51
52 // Forward declaration. 52 // Forward declaration.
53 class JumpTarget; 53 class JumpTarget;
54 class PostCallGenerator; 54 class PostCallGenerator;
55 55
56 enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
57 enum ObjectMode { PRESERVE_OBJECT, DESTROY_OBJECT };
58 enum ValueMode { PRESERVE_VALUE, DESTROY_VALUE };
59 enum ScratchMode { PRESERVE_SCRATCH, DESTROY_SCRATCH };
60
56 // MacroAssembler implements a collection of frequently used macros. 61 // MacroAssembler implements a collection of frequently used macros.
57 class MacroAssembler: public Assembler { 62 class MacroAssembler: public Assembler {
58 public: 63 public:
59 MacroAssembler(void* buffer, int size); 64 MacroAssembler(void* buffer, int size);
60 65
61 // --------------------------------------------------------------------------- 66 // ---------------------------------------------------------------------------
62 // GC Support 67 // GC Support
63 68
69 void IncrementalMarkingRecordWriteHelper(Register object,
70 Register value,
71 Register scratch,
72 ObjectMode object_mode,
73 ValueMode value_mode,
74 ScratchMode scratch_mode);
75
76
64 void IncrementalMarkingRecordWrite(Register object, 77 void IncrementalMarkingRecordWrite(Register object,
65 Register value, 78 Register value,
66 Register scratch); 79 Register scratch,
80 SmiCheck smi_check,
81 ObjectMode object_mode,
82 ValueMode value_mode,
83 ScratchMode scratch_mode);
84
67 85
68 // For page containing |object| mark region covering |addr| dirty. 86 // For page containing |object| mark region covering |addr| dirty.
69 // RecordWriteHelper only works if the object is not in new 87 // RecordWriteHelper only works if the object is not in new
70 // space. 88 // space.
71 void RecordWriteHelper(Register object, 89 void RecordWriteHelper(Register object,
72 Register addr, 90 Register addr,
73 Register scratch, 91 Register scratch,
74 SaveFPRegsMode save_fp); 92 SaveFPRegsMode save_fp);
75 93
76 // Check if object is in new space. 94 // Check if object is in new space.
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 } \ 801 } \
784 masm-> 802 masm->
785 #else 803 #else
786 #define ACCESS_MASM(masm) masm-> 804 #define ACCESS_MASM(masm) masm->
787 #endif 805 #endif
788 806
789 807
790 } } // namespace v8::internal 808 } } // namespace v8::internal
791 809
792 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ 810 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698