Reviewers: Weiliang,
Message:
PTAL.
Description:
X87: Skip the mapcheck on the global object since the global proxy and cell
are
already checked
port 6af7ca6be4cd768b3326f0b8c32d4fbc3baa20c8 (r26886)
original commit message:
Skip the mapcheck on the global object since the global proxy and cell are
already
checked (or the global object map for contextual global loads).
BUG=
Please review this at https://codereview.chromium.org/965693002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+6, -5 lines):
M src/ic/x87/handler-compiler-x87.cc
Index: src/ic/x87/handler-compiler-x87.cc
diff --git a/src/ic/x87/handler-compiler-x87.cc
b/src/ic/x87/handler-compiler-x87.cc
index
f64e7d8f0d083aba5d7ceef18e7412c04e731f79..ce902757f145095f3b48f4916ce5253461b7a4c3
100644
--- a/src/ic/x87/handler-compiler-x87.cc
+++ b/src/ic/x87/handler-compiler-x87.cc
@@ -476,16 +476,15 @@ Register PropertyHandlerCompiler::CheckPrototypes(
} else {
Register map_reg = scratch1;
__ mov(map_reg, FieldOperand(reg, HeapObject::kMapOffset));
- if (depth != 1 || check == CHECK_ALL_MAPS) {
+ if (current_map->IsJSGlobalObjectMap()) {
+ GenerateCheckPropertyCell(masm(),
Handle<JSGlobalObject>::cast(current),
+ name, scratch2, miss);
+ } else if (depth != 1 || check == CHECK_ALL_MAPS) {
Handle<WeakCell> cell = Map::WeakCellForMap(current_map);
__ CmpWeakValue(map_reg, cell, scratch2);
__ j(not_equal, miss);
}
- if (current_map->IsJSGlobalObjectMap()) {
- GenerateCheckPropertyCell(masm(),
Handle<JSGlobalObject>::cast(current),
- name, scratch2, miss);
- }
reg = holder_reg; // From now on the object will be in holder_reg.
__ mov(reg, FieldOperand(map_reg, Map::kPrototypeOffset));
}
@@ -495,6 +494,8 @@ Register PropertyHandlerCompiler::CheckPrototypes(
current_map = handle(current->map());
}
+ DCHECK(!current_map->IsJSGlobalProxyMap());
+
// Log the check depth.
LOG(isolate(), IntEvent("check-maps-depth", depth + 1));
--
--
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.