Reviewers: mvstanton,
Message:
PTAL
Description:
Clean up LookupIterator::Configuration naming
BUG=
Please review this at https://codereview.chromium.org/503663003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+45, -43 lines):
M src/bootstrapper.cc
M src/factory.cc
M src/hydrogen.cc
M src/ic/ic.cc
M src/isolate.cc
M src/lookup.h
M src/lookup.cc
M src/lookup-inl.h
M src/objects.cc
M src/runtime.cc
Index: src/bootstrapper.cc
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index
fc0af002ab8be2d8f1f4e63787bcb19d0913aed6..1b3f52564f7b700acf50923a197fc624cd1af6dd
100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -780,7 +780,7 @@ Handle<JSGlobalProxy> Genesis::CreateNewGlobals(
name, code, prototype, JS_GLOBAL_OBJECT_TYPE,
JSGlobalObject::kSize);
#ifdef DEBUG
LookupIterator it(prototype, factory()->constructor_string(),
- LookupIterator::CHECK_PROPERTY);
+ LookupIterator::CHECK_OWN_PROPERTY);
Handle<Object> value = JSReceiver::GetProperty(&it).ToHandleChecked();
DCHECK(it.IsFound());
DCHECK_EQ(*isolate()->object_function(), *value);
@@ -2449,7 +2449,7 @@ void
Genesis::TransferNamedProperties(Handle<JSObject> from,
}
case CALLBACKS: {
Handle<Name> key(descs->GetKey(i));
- LookupIterator it(to, key, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(to, key, LookupIterator::CHECK_OWN_PROPERTY);
// If the property is already there we skip it
if (it.IsFound() && it.HasProperty()) continue;
HandleScope inner(isolate());
@@ -2480,7 +2480,7 @@ void
Genesis::TransferNamedProperties(Handle<JSObject> from,
DCHECK(raw_key->IsName());
// If the property is already there we skip it.
Handle<Name> key(Name::cast(raw_key));
- LookupIterator it(to, key, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(to, key, LookupIterator::CHECK_OWN_PROPERTY);
if (it.IsFound() && it.HasProperty()) continue;
// Set the property.
Handle<Object> value = Handle<Object>(properties->ValueAt(i),
Index: src/factory.cc
diff --git a/src/factory.cc b/src/factory.cc
index
5ecdfcfd2f4aec25c94ab22927b53363715b3b59..9ead7e08107d689666ec38b96bc459a417b8ecb9
100644
--- a/src/factory.cc
+++ b/src/factory.cc
@@ -2174,7 +2174,7 @@ Handle<JSFunction> Factory::CreateApiFunction(
if (prototype->IsTheHole()) {
#ifdef DEBUG
LookupIterator it(handle(JSObject::cast(result->prototype())),
- constructor_string(),
LookupIterator::CHECK_PROPERTY);
+ constructor_string(),
LookupIterator::CHECK_OWN_PROPERTY);
MaybeHandle<Object> maybe_prop = Object::GetProperty(&it);
DCHECK(it.IsFound());
DCHECK(maybe_prop.ToHandleChecked().is_identical_to(result));
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index
1ad5d95bf61ca4328f03cd10ab6cceb54bd060a6..396d11a06e621786ebbfd662d3648b2fe09f8af1
100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -5342,7 +5342,7 @@ void
HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
Handle<GlobalObject> global(current_info()->global_object());
LookupIterator it(global, variable->name(),
- LookupIterator::CHECK_PROPERTY);
+ LookupIterator::CHECK_OWN_PROPERTY);
GlobalPropertyAccess type = LookupGlobalProperty(variable, &it,
LOAD);
if (type == kUseCell &&
@@ -5797,7 +5797,8 @@ HInstruction*
HOptimizedGraphBuilder::BuildLoadNamedField(
HConstant::cast(checked_object->ActualValue())->handle(isolate()));
if (object->IsJSObject()) {
- LookupIterator it(object, info->name(),
LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(object, info->name(),
+ LookupIterator::CHECK_OWN_PROPERTY);
Handle<Object> value = JSObject::GetDataProperty(&it);
CHECK(it.IsFound());
return New<HConstant>(value);
@@ -6463,7 +6464,7 @@ void
HOptimizedGraphBuilder::HandleGlobalVariableAssignment(
HValue* value,
BailoutId ast_id) {
Handle<GlobalObject> global(current_info()->global_object());
- LookupIterator it(global, var->name(), LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(global, var->name(),
LookupIterator::CHECK_OWN_PROPERTY);
GlobalPropertyAccess type = LookupGlobalProperty(var, &it, STORE);
if (type == kUseCell) {
Handle<PropertyCell> cell = it.GetPropertyCell();
@@ -9055,7 +9056,8 @@ void HOptimizedGraphBuilder::VisitCall(Call* expr) {
// access check is not enabled we assume that the function will not
change
// and generate optimized code for calling the function.
Handle<GlobalObject> global(current_info()->global_object());
- LookupIterator it(global, var->name(),
LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(global, var->name(),
+ LookupIterator::CHECK_OWN_PROPERTY);
GlobalPropertyAccess type = LookupGlobalProperty(var, &it, LOAD);
if (type == kUseCell &&
!current_info()->global_object()->IsAccessCheckNeeded()) {
@@ -10699,7 +10701,7 @@ void
HOptimizedGraphBuilder::VisitCompareOperation(CompareOperation* expr) {
!current_info()->global_object()->IsAccessCheckNeeded()) {
Handle<String> name = proxy->name();
Handle<GlobalObject> global(current_info()->global_object());
- LookupIterator it(global, name, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(global, name, LookupIterator::CHECK_OWN_PROPERTY);
Handle<Object> value = JSObject::GetDataProperty(&it);
if (it.IsFound() && value->IsJSFunction()) {
Handle<JSFunction> candidate = Handle<JSFunction>::cast(value);
Index: src/ic/ic.cc
diff --git a/src/ic/ic.cc b/src/ic/ic.cc
index
2bd40de8ca09f7867e32bc61461e8ab1daa28b1b..95579ff550edb1967cbb64605135bde685c4bab2
100644
--- a/src/ic/ic.cc
+++ b/src/ic/ic.cc
@@ -281,7 +281,7 @@ bool
IC::TryRemoveInvalidPrototypeDependentStub(Handle<Object> receiver,
if (receiver->IsGlobalObject()) {
Handle<GlobalObject> global = Handle<GlobalObject>::cast(receiver);
- LookupIterator it(global, name, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(global, name, LookupIterator::CHECK_OWN_PROPERTY);
if (!it.IsFound() || !it.HasProperty()) return false;
Handle<PropertyCell> cell = it.GetPropertyCell();
return cell->type()->IsConstant();
Index: src/isolate.cc
diff --git a/src/isolate.cc b/src/isolate.cc
index
fc8d34db911cbee2cf19c8be158aef2263d53aaf..ef6935754a814a647d898199a048deb9fa702ff5
100644
--- a/src/isolate.cc
+++ b/src/isolate.cc
@@ -1057,7 +1057,7 @@ void Isolate::DoThrow(Object* exception,
MessageLocation* location) {
// probably not a valid Error object. In that case, we fall
through
// and capture the stack trace at this throw site.
LookupIterator lookup(exception_handle, key,
- LookupIterator::CHECK_PROPERTY);
+ LookupIterator::CHECK_OWN_PROPERTY);
Handle<Object> stack_trace_property;
if (Object::GetProperty(&lookup).ToHandle(&stack_trace_property)
&&
stack_trace_property->IsJSArray()) {
Index: src/lookup-inl.h
diff --git a/src/lookup-inl.h b/src/lookup-inl.h
index
a32295bff8229096e84cb8f3bbf197b6a8a79ee7..ae4b66df01d74c662bd58dc1a9c18427bd6dafc8
100644
--- a/src/lookup-inl.h
+++ b/src/lookup-inl.h
@@ -19,7 +19,7 @@ JSReceiver* LookupIterator::NextHolder(Map* map) {
DCHECK(!next->map()->IsGlobalObjectMap() ||
next->map()->is_hidden_prototype());
- if (!check_derived() &&
+ if (!check_prototype_chain() &&
!(check_hidden() && next->map()->is_hidden_prototype()) &&
// Always lookup behind the JSGlobalProxy into the JSGlobalObject,
even
// when not checking other hidden prototypes.
Index: src/lookup.cc
diff --git a/src/lookup.cc b/src/lookup.cc
index
58e3032e502d2e2fbfed4d7ac855dff500b86e28..97fd53522a91fbb5bf082d0e3100d31ac0f6f70c
100644
--- a/src/lookup.cc
+++ b/src/lookup.cc
@@ -252,7 +252,7 @@ void LookupIterator::TransitionToAccessorProperty(
bool LookupIterator::HolderIsReceiverOrHiddenPrototype() const {
DCHECK(has_property_ || state_ == INTERCEPTOR || state_ == JSPROXY);
// Optimization that only works if configuration_ is not mutable.
- if (!check_derived()) return true;
+ if (!check_prototype_chain()) return true;
DisallowHeapAllocation no_gc;
Handle<Object> receiver = GetReceiver();
if (!receiver->IsJSReceiver()) return false;
Index: src/lookup.h
diff --git a/src/lookup.h b/src/lookup.h
index
1e5ab0772dc0e6b48560a0487506daec1fd1bd20..8d2b21979f25d198ab941263f077c161cdb1d8a1
100644
--- a/src/lookup.h
+++ b/src/lookup.h
@@ -16,19 +16,21 @@ class LookupIterator V8_FINAL BASE_EMBEDDED {
public:
enum Configuration {
// Configuration bits.
- CHECK_HIDDEN_PROPERTY = 1 << 0,
- CHECK_DERIVED_PROPERTY = 1 << 1,
- CHECK_INTERCEPTOR = 1 << 2,
- CHECK_ACCESS_CHECK = 1 << 3,
+ kAccessCheck = 1 << 0,
+ kHidden = 1 << 1,
+ kInterceptor = 1 << 2,
+ kPrototypeChain = 1 << 3,
// Convience combinations of bits.
- CHECK_PROPERTY = 0,
- CHECK_OWN = CHECK_ACCESS_CHECK | CHECK_INTERCEPTOR,
- CHECK_HIDDEN_SKIP_INTERCEPTOR = CHECK_HIDDEN_PROPERTY |
CHECK_ACCESS_CHECK,
- CHECK_DERIVED_SKIP_INTERCEPTOR =
- CHECK_HIDDEN_SKIP_INTERCEPTOR | CHECK_DERIVED_PROPERTY,
- CHECK_DERIVED = CHECK_DERIVED_SKIP_INTERCEPTOR | CHECK_INTERCEPTOR,
- CHECK_HIDDEN = CHECK_HIDDEN_SKIP_INTERCEPTOR | CHECK_INTERCEPTOR
+ CHECK_OWN_PROPERTY = 0,
+ CHECK_OWN_SKIP_INTERCEPTOR = kAccessCheck,
+ CHECK_OWN = kAccessCheck | kInterceptor,
+ CHECK_HIDDEN_PROPERTY = kHidden,
+ CHECK_HIDDEN_SKIP_INTERCEPTOR = kAccessCheck | kHidden,
+ CHECK_HIDDEN = kAccessCheck | kHidden | kInterceptor,
+ CHECK_DERIVED_PROPERTY = kHidden | kPrototypeChain,
+ CHECK_DERIVED_SKIP_INTERCEPTOR = kAccessCheck | kHidden |
kPrototypeChain,
+ CHECK_DERIVED = kAccessCheck | kHidden | kPrototypeChain | kInterceptor
};
enum State {
@@ -191,17 +193,15 @@ class LookupIterator V8_FINAL BASE_EMBEDDED {
bool is_guaranteed_to_have_holder() const {
return !maybe_receiver_.is_null();
}
- bool check_interceptor() const {
- return !IsBootstrapping() && (configuration_ & CHECK_INTERCEPTOR) != 0;
- }
- bool check_derived() const {
- return (configuration_ & CHECK_DERIVED_PROPERTY) != 0;
+ bool check_access_check() const {
+ return (configuration_ & kAccessCheck) != 0;
}
- bool check_hidden() const {
- return (configuration_ & CHECK_HIDDEN_PROPERTY) != 0;
+ bool check_hidden() const { return (configuration_ & kHidden) != 0; }
+ bool check_interceptor() const {
+ return !IsBootstrapping() && (configuration_ & kInterceptor) != 0;
}
- bool check_access_check() const {
- return (configuration_ & CHECK_ACCESS_CHECK) != 0;
+ bool check_prototype_chain() const {
+ return (configuration_ & kPrototypeChain) != 0;
}
int descriptor_number() const {
DCHECK(has_property_);
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
ad31f91f1f893c27d500e2b7379ca2b0aa1f7536..84653ed8fbf6071971f81d82518b95189f4054eb
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -3787,7 +3787,7 @@ void JSObject::WriteToField(int descriptor, Object*
value) {
void JSObject::AddProperty(Handle<JSObject> object, Handle<Name> name,
Handle<Object> value,
PropertyAttributes attributes) {
- LookupIterator it(object, name, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(object, name, LookupIterator::CHECK_OWN_PROPERTY);
#ifdef DEBUG
uint32_t index;
DCHECK(!object->IsJSProxy());
@@ -4692,7 +4692,7 @@ void JSObject::DeleteHiddenProperty(Handle<JSObject>
object, Handle<Name> key) {
bool JSObject::HasHiddenProperties(Handle<JSObject> object) {
Handle<Name> hidden = object->GetIsolate()->factory()->hidden_string();
- LookupIterator it(object, hidden, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(object, hidden, LookupIterator::CHECK_OWN_PROPERTY);
Maybe<PropertyAttributes> maybe = GetPropertyAttributes(&it);
// Cannot get an exception since the hidden_string isn't accessible to
JS.
DCHECK(maybe.has_value);
@@ -4727,7 +4727,7 @@ Object* JSObject::GetHiddenPropertiesHashTable() {
} else {
Isolate* isolate = GetIsolate();
LookupIterator it(handle(this), isolate->factory()->hidden_string(),
- LookupIterator::CHECK_PROPERTY);
+ LookupIterator::CHECK_OWN_PROPERTY);
if (it.IsFound() && it.HasProperty()) {
DCHECK_EQ(LookupIterator::DATA, it.property_kind());
return *it.GetDataValue();
@@ -6174,7 +6174,7 @@ MaybeHandle<Object>
JSObject::DefineAccessor(Handle<JSObject> object,
setter->IsNull());
// At least one of the accessors needs to be a new value.
DCHECK(!getter->IsNull() || !setter->IsNull());
- LookupIterator it(object, name, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(object, name, LookupIterator::CHECK_OWN_PROPERTY);
if (!getter->IsNull()) {
it.TransitionToAccessorProperty(ACCESSOR_GETTER, getter, attributes);
}
@@ -12859,7 +12859,7 @@ bool
JSArray::WouldChangeReadOnlyLength(Handle<JSArray> array,
CHECK(array->length()->ToArrayIndex(&length));
if (length <= index) {
LookupIterator it(array,
array->GetIsolate()->factory()->length_string(),
- LookupIterator::CHECK_PROPERTY);
+ LookupIterator::CHECK_OWN_PROPERTY);
CHECK(it.IsFound());
CHECK(it.HasProperty());
return it.IsReadOnly();
@@ -13246,7 +13246,7 @@ MaybeHandle<JSObject>
JSObject::GetKeysForIndexedInterceptor(
Maybe<bool> JSObject::HasRealNamedProperty(Handle<JSObject> object,
Handle<Name> key) {
- LookupIterator it(object, key, LookupIterator::CHECK_ACCESS_CHECK);
+ LookupIterator it(object, key,
LookupIterator::CHECK_OWN_SKIP_INTERCEPTOR);
Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it);
if (!maybe_result.has_value) return Maybe<bool>();
return maybe(it.IsFound());
@@ -13284,7 +13284,7 @@ Maybe<bool>
JSObject::HasRealElementProperty(Handle<JSObject> object,
Maybe<bool> JSObject::HasRealNamedCallbackProperty(Handle<JSObject> object,
Handle<Name> key) {
- LookupIterator it(object, key, LookupIterator::CHECK_ACCESS_CHECK);
+ LookupIterator it(object, key,
LookupIterator::CHECK_OWN_SKIP_INTERCEPTOR);
Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it);
if (!maybe_result.has_value) return Maybe<bool>();
return maybe(it.IsFound() && it.property_kind() ==
LookupIterator::ACCESSOR);
Index: src/runtime.cc
diff --git a/src/runtime.cc b/src/runtime.cc
index
5db5e4d4f7170a03ca9e9dee39fab075ea0b2a44..09a01f43a10429a657b31c2c9818040181e844c0
100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -5046,7 +5046,7 @@ RUNTIME_FUNCTION(Runtime_DefineDataPropertyUnchecked)
{
return isolate->heap()->undefined_value();
}
- LookupIterator it(js_object, name, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(js_object, name, LookupIterator::CHECK_OWN_PROPERTY);
// Take special care when attributes are different and there is already
// a property.
@@ -5294,7 +5294,7 @@ RUNTIME_FUNCTION(Runtime_AddNamedProperty) {
#ifdef DEBUG
uint32_t index = 0;
DCHECK(!key->ToArrayIndex(&index));
- LookupIterator it(object, key, LookupIterator::CHECK_PROPERTY);
+ LookupIterator it(object, key, LookupIterator::CHECK_OWN_PROPERTY);
Maybe<PropertyAttributes> maybe = JSReceiver::GetPropertyAttributes(&it);
DCHECK(maybe.has_value);
RUNTIME_ASSERT(!it.IsFound());
@@ -5326,7 +5326,7 @@ RUNTIME_FUNCTION(Runtime_AddPropertyForTemplate) {
bool duplicate;
if (key->IsName()) {
LookupIterator it(object, Handle<Name>::cast(key),
- LookupIterator::CHECK_PROPERTY);
+ LookupIterator::CHECK_OWN_PROPERTY);
Maybe<PropertyAttributes> maybe =
JSReceiver::GetPropertyAttributes(&it);
DCHECK(maybe.has_value);
duplicate = it.IsFound();
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.