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

Side by Side Diff: runtime/vm/assembler_ia32.h

Issue 12398029: Remove the barely used macro assemblers after merging their contents to the base (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_ASSEMBLER_IA32_H_ 5 #ifndef VM_ASSEMBLER_IA32_H_
6 #define VM_ASSEMBLER_IA32_H_ 6 #define VM_ASSEMBLER_IA32_H_
7 7
8 #ifndef VM_ASSEMBLER_H_ 8 #ifndef VM_ASSEMBLER_H_
9 #error Do not include assembler_ia32.h directly; use assembler.h instead. 9 #error Do not include assembler_ia32.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 int prologue_offset() const { return prologue_offset_; } 676 int prologue_offset() const { return prologue_offset_; }
677 const ZoneGrowableArray<int>& GetPointerOffsets() const { 677 const ZoneGrowableArray<int>& GetPointerOffsets() const {
678 return buffer_.pointer_offsets(); 678 return buffer_.pointer_offsets();
679 } 679 }
680 const GrowableObjectArray& object_pool() const { return object_pool_; } 680 const GrowableObjectArray& object_pool() const { return object_pool_; }
681 681
682 void FinalizeInstructions(const MemoryRegion& region) { 682 void FinalizeInstructions(const MemoryRegion& region) {
683 buffer_.FinalizeInstructions(region); 683 buffer_.FinalizeInstructions(region);
684 } 684 }
685 685
686 // Set up a dart frame on entry with a frame pointer and PC information to
srdjan 2013/03/04 23:46:43 ditto (and below)
regis 2013/03/04 23:51:24 Done.
687 // enable easy access to the RawInstruction object of code corresponding
688 // to this frame.
689 // The dart frame layout is as follows:
690 // ....
691 // ret PC
692 // saved EBP <=== EBP
693 // pc (used to derive the RawInstruction Object of the dart code)
694 // locals space <=== ESP
695 // .....
696 // This code sets this up with the sequence:
697 // pushl ebp
698 // movl ebp, esp
699 // call L
700 // L: <code to adjust saved pc if there is any intrinsification code>
701 // .....
702 void EnterDartFrame(intptr_t frame_size);
703
704 // Set up a stub frame so that the stack traversal code can easily identify
705 // a stub frame.
706 // The stub frame layout is as follows:
707 // ....
708 // ret PC
709 // saved EBP
710 // 0 (used to indicate frame is a stub frame)
711 // .....
712 // This code sets this up with the sequence:
713 // pushl ebp
714 // movl ebp, esp
715 // pushl immediate(0)
716 // .....
717 void EnterStubFrame();
718
719 // Instruction pattern from entrypoint is used in dart frame prologs
720 // to set up the frame and save a PC which can be used to figure out the
721 // RawInstruction object corresponding to the code running in the frame.
722 // entrypoint:
723 // pushl ebp (size is 1 byte)
724 // movl ebp, esp (size is 2 bytes)
725 // call L (size is 5 bytes)
726 // L:
727 static const intptr_t kOffsetOfSavedPCfromEntrypoint = 8;
728
729 // Inlined allocation of an instance of class 'cls', code has no runtime
730 // calls. Jump to 'failure' if the instance cannot be allocated here.
731 // Allocated instance is returned in 'instance_reg'.
732 // Only the tags field of the object is initialized.
733 void TryAllocate(const Class& cls,
734 Label* failure,
735 bool near_jump,
736 Register instance_reg);
737
686 // Debugging and bringup support. 738 // Debugging and bringup support.
687 void Stop(const char* message); 739 void Stop(const char* message);
688 void Unimplemented(const char* message); 740 void Unimplemented(const char* message);
689 void Untested(const char* message); 741 void Untested(const char* message);
690 void Unreachable(const char* message); 742 void Unreachable(const char* message);
691 743
692 static void InitializeMemoryWithBreakpoints(uword data, int length); 744 static void InitializeMemoryWithBreakpoints(uword data, int length);
693 745
694 void Comment(const char* format, ...) PRINTF_ATTRIBUTE(2, 3); 746 void Comment(const char* format, ...) PRINTF_ATTRIBUTE(2, 3);
695 const Code::Comments& GetCodeComments() const; 747 const Code::Comments& GetCodeComments() const;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 } 821 }
770 822
771 823
772 inline void Assembler::EmitOperandSizeOverride() { 824 inline void Assembler::EmitOperandSizeOverride() {
773 EmitUint8(0x66); 825 EmitUint8(0x66);
774 } 826 }
775 827
776 } // namespace dart 828 } // namespace dart
777 829
778 #endif // VM_ASSEMBLER_IA32_H_ 830 #endif // VM_ASSEMBLER_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698