summaryrefslogtreecommitdiffstats
path: root/runtime/stack_map.h
diff options
context:
space:
mode:
authorRoland Levillain <rpl@google.com>2015-03-13 11:45:07 +0000
committerRoland Levillain <rpl@google.com>2015-03-13 12:28:43 +0000
commit29ba1b068fc9f5a8011782c147b1f7732928aac7 (patch)
tree5b61289b1e135cce6f01e8c9cbcaa747a39f196c /runtime/stack_map.h
parentd9a59ca8f038a0f93a4e1504e0f7f8f388848719 (diff)
downloadart-29ba1b068fc9f5a8011782c147b1f7732928aac7.tar.gz
art-29ba1b068fc9f5a8011782c147b1f7732928aac7.tar.bz2
art-29ba1b068fc9f5a8011782c147b1f7732928aac7.zip
Fix the computation of the size of the stack maps region.
In art::StackMapStream::ComputeStackMapSize, compute the size of a CodeInfo's stack maps region using the stack mask size, not the maximum element of the stack mask. Also, rename this method as art::StackMapStream::ComputeStackMapsSize to make it clear it that it covers all the stack maps of the CodeInfo item, not just one stack map. Change-Id: Icad21946dbca6e1ade2b82c9c2c535fdfed110a9
Diffstat (limited to 'runtime/stack_map.h')
-rw-r--r--runtime/stack_map.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/runtime/stack_map.h b/runtime/stack_map.h
index e88820fc79..3856da3189 100644
--- a/runtime/stack_map.h
+++ b/runtime/stack_map.h
@@ -606,10 +606,17 @@ class CodeInfo {
region_.Store<uint32_t>(kNumberOfStackMapsOffset, number_of_stack_maps);
}
+ // Get the size of one stack map of this CodeInfo object, in bytes.
+ // All stack maps of a CodeInfo have the same size.
size_t StackMapSize() const {
return StackMap::ComputeAlignedStackMapSize(GetStackMaskSize());
}
+ // Get the size all the stack maps of this CodeInfo object, in bytes.
+ size_t StackMapsSize() const {
+ return StackMapSize() * GetNumberOfStackMaps();
+ }
+
uint32_t GetStackMapsOffset() const {
return kFixedSize;
}
@@ -663,7 +670,7 @@ class CodeInfo {
MemoryRegion GetStackMaps() const {
return region_.size() == 0
? MemoryRegion()
- : region_.Subregion(kFixedSize, StackMapSize() * GetNumberOfStackMaps());
+ : region_.Subregion(kFixedSize, StackMapsSize());
}
// Compute the size of a Dex register map starting at offset `origin` in