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

Unified Diff: src/hydrogen-instructions.cc

Issue 12300018: Made Isolate a mandatory parameter for everything Handle-related. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Even less Isolate::Current Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: src/hydrogen-instructions.cc
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
index 2d4b82bf16ba1efe84bbc0915111921069ad9384..29018f62817f4b64d4c204138b6c515d28c24b23 100644
--- a/src/hydrogen-instructions.cc
+++ b/src/hydrogen-instructions.cc
@@ -75,6 +75,12 @@ int HValue::LoopWeight() const {
}
+Isolate* HValue::isolate() const {
+ ASSERT(block() != NULL);
+ return block()->graph()->isolate();
+}
+
+
void HValue::AssumeRepresentation(Representation r) {
if (CheckFlag(kFlexibleRepresentation)) {
ChangeRepresentation(r);
@@ -341,10 +347,10 @@ const char* HType::ToString() {
}
-HType HType::TypeFromValue(Handle<Object> value) {
+HType HType::TypeFromValue(Isolate* isolate, Handle<Object> value) {
// Handle dereferencing is safe here: an object's type as checked below
// never changes.
- AllowHandleDereference allow_handle_deref;
+ AllowHandleDereference allow_handle_deref(isolate);
HType result = HType::Tagged();
if (value->IsSmi()) {
@@ -1277,7 +1283,7 @@ HValue* HCheckInstanceType::Canonicalize() {
if (check_ == IS_SYMBOL && value()->IsConstant()) {
// Dereferencing is safe here: a symbol cannot become a non-symbol.
- AllowHandleDereference allow_handle_deref;
+ AllowHandleDereference allow_handle_deref(isolate());
if (HConstant::cast(value())->handle()->IsSymbol()) return NULL;
}
return this;
@@ -1764,7 +1770,7 @@ HConstant::HConstant(Handle<Object> handle, Representation r)
has_int32_value_(false),
has_double_value_(false) {
// Dereferencing here is safe: the value of a number object does not change.
- AllowHandleDereference allow_handle_deref;
+ AllowHandleDereference allow_handle_deref(Isolate::Current());
SetFlag(kUseGVN);
if (handle_->IsNumber()) {
double n = handle_->Number();
@@ -1845,7 +1851,7 @@ bool HConstant::ToBoolean() {
}
// Dereferencing is safe: singletons do not change and strings are
// immutable.
- AllowHandleDereference allow_handle_deref;
+ AllowHandleDereference allow_handle_deref(isolate());
if (handle_->IsTrue()) return true;
if (handle_->IsFalse()) return false;
if (handle_->IsUndefined()) return false;
@@ -2533,7 +2539,7 @@ HType HConstant::CalculateInferredType() {
return Smi::IsValid(int32_value_) ? HType::Smi() : HType::HeapNumber();
}
if (has_double_value_) return HType::HeapNumber();
- return HType::TypeFromValue(handle_);
+ return HType::TypeFromValue(isolate(), handle_);
}

Powered by Google App Engine
This is Rietveld 408576698