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

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

Issue 10882055: Put live register bits in stackmaps. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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_RAW_OBJECT_H_ 5 #ifndef VM_RAW_OBJECT_H_
6 #define VM_RAW_OBJECT_H_ 6 #define VM_RAW_OBJECT_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/globals.h" 9 #include "vm/globals.h"
10 #include "vm/token.h" 10 #include "vm/token.h"
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 // live object index starting from the base of the frame. 808 // live object index starting from the base of the frame.
809 // 809 //
810 // The Stackmap also consists of a link to the code object corresponding to 810 // The Stackmap also consists of a link to the code object corresponding to
811 // the frame which the stack map is describing. The bit map representation 811 // the frame which the stack map is describing. The bit map representation
812 // is optimized for dense and small bit maps, without any upper bound. 812 // is optimized for dense and small bit maps, without any upper bound.
813 class RawStackmap : public RawObject { 813 class RawStackmap : public RawObject {
814 RAW_HEAP_OBJECT_IMPLEMENTATION(Stackmap); 814 RAW_HEAP_OBJECT_IMPLEMENTATION(Stackmap);
815 815
816 RawCode* code_; // Code object corresponding to the frame described. 816 RawCode* code_; // Code object corresponding to the frame described.
817 817
818 // TODO(kmillikin): We need a small number of bits to encode the register
819 // count. Consider packing them in with the length.
818 intptr_t length_; // Length of payload, in bits. 820 intptr_t length_; // Length of payload, in bits.
821 intptr_t register_count_; // Count of live registers, included in length_.
822
819 uword pc_; // PC corresponding to this stack map representation. 823 uword pc_; // PC corresponding to this stack map representation.
820 824
821 // Variable length data follows here (bitmap of the stack layout). 825 // Variable length data follows here (bitmap of the stack layout).
822 uint8_t data_[0]; 826 uint8_t data_[0];
823 }; 827 };
824 828
825 829
826 class RawLocalVarDescriptors : public RawObject { 830 class RawLocalVarDescriptors : public RawObject {
827 public: 831 public:
828 enum VarInfoKind { 832 enum VarInfoKind {
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after
1580 kExternalUint64ArrayCid == kByteArrayCid + 18 && 1584 kExternalUint64ArrayCid == kByteArrayCid + 18 &&
1581 kExternalFloat32ArrayCid == kByteArrayCid + 19 && 1585 kExternalFloat32ArrayCid == kByteArrayCid + 19 &&
1582 kExternalFloat64ArrayCid == kByteArrayCid + 20 && 1586 kExternalFloat64ArrayCid == kByteArrayCid + 20 &&
1583 kStacktraceCid == kByteArrayCid + 21); 1587 kStacktraceCid == kByteArrayCid + 21);
1584 return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid); 1588 return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid);
1585 } 1589 }
1586 1590
1587 } // namespace dart 1591 } // namespace dart
1588 1592
1589 #endif // VM_RAW_OBJECT_H_ 1593 #endif // VM_RAW_OBJECT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698