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

Unified Diff: runtime/vm/object.cc

Issue 807593002: Merge RawICData::range_feedback_ field into RawICData::state_bits_. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index facb353a658d6d886661463081d5558a84260587..d6cf78eb81f1a3ed9e36c8606ac0b3ee80b72175 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -11434,12 +11434,15 @@ void ICData::SetDeoptReasons(uint32_t reasons) const {
bool ICData::HasDeoptReason(DeoptReasonId reason) const {
+ ASSERT(reason <= kLastRecordedDeoptReason);
return (DeoptReasons() & (1 << reason)) != 0;
}
void ICData::AddDeoptReason(DeoptReasonId reason) const {
- SetDeoptReasons(DeoptReasons() | (1 << reason));
+ if (reason <= kLastRecordedDeoptReason) {
zra 2014/12/15 20:57:38 Why is this not an assert?
Vyacheslav Egorov (Google) 2014/12/15 21:02:21 Caller (deoptimizer) can try to add deopt reason w
zra 2014/12/15 21:04:58 Makes sense. I think it's fine as-is. Thanks!
+ SetDeoptReasons(DeoptReasons() | (1 << reason));
+ }
}
@@ -11472,11 +11475,6 @@ bool ICData::MayCheckForJSWarning() const {
}
-void ICData::set_range_feedback(uint32_t feedback) {
- StoreNonPointer(&raw_ptr()->range_feedback_, feedback);
-}
-
-
void ICData::set_state_bits(uint32_t bits) const {
StoreNonPointer(&raw_ptr()->state_bits_, bits);
}
@@ -11932,7 +11930,6 @@ RawICData* ICData::New(const Function& owner,
result.set_arguments_descriptor(arguments_descriptor);
result.set_deopt_id(deopt_id);
result.set_state_bits(0);
- result.set_range_feedback(0);
result.SetNumArgsTested(num_args_tested);
// Number of array elements in one test entry.
intptr_t len = result.TestEntryLength();
@@ -12013,8 +12010,10 @@ bool ICData::HasRangeFeedback() const {
ICData::RangeFeedback ICData::DecodeRangeFeedbackAt(intptr_t idx) const {
ASSERT((0 <= idx) && (idx < 3));
+ const uint32_t raw_feedback =
+ RangeFeedbackBits::decode(raw_ptr()->state_bits_);
const uint32_t feedback =
- (range_feedback() >> (idx * kBitsPerRangeFeedback)) & kRangeFeedbackMask;
+ (raw_feedback >> (idx * kBitsPerRangeFeedback)) & kRangeFeedbackMask;
if ((feedback & kInt64RangeBit) != 0) {
return kInt64Range;
}
« runtime/vm/object.h ('K') | « runtime/vm/object.h ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698