MIPS64: Load prototype from map in PropertyHandlerCompiler::CheckPrototypes.
Port 100db75808
BUG=v8:3629
LOG=N
Review URL: https://codereview.chromium.org/755693002
Cr-Commit-Position: refs/heads/master@{#25497}
This commit is contained in:
parent
322bb23e82
commit
a4c9cc46dc
@ -411,12 +411,6 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
|||||||
reg = holder_reg; // From now on the object will be in holder_reg.
|
reg = holder_reg; // From now on the object will be in holder_reg.
|
||||||
__ ld(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
|
__ ld(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
|
||||||
} else {
|
} else {
|
||||||
// Two possible reasons for loading the prototype from the map:
|
|
||||||
// (1) Can't store references to new space in code.
|
|
||||||
// (2) Handler is shared for all receivers with the same prototype
|
|
||||||
// map (but not necessarily the same prototype instance).
|
|
||||||
bool load_prototype_from_map =
|
|
||||||
heap()->InNewSpace(*prototype) || depth == 1;
|
|
||||||
Register map_reg = scratch1;
|
Register map_reg = scratch1;
|
||||||
if (depth != 1 || check == CHECK_ALL_MAPS) {
|
if (depth != 1 || check == CHECK_ALL_MAPS) {
|
||||||
// CheckMap implicitly loads the map of |reg| into |map_reg|.
|
// CheckMap implicitly loads the map of |reg| into |map_reg|.
|
||||||
@ -440,11 +434,7 @@ Register PropertyHandlerCompiler::CheckPrototypes(
|
|||||||
|
|
||||||
reg = holder_reg; // From now on the object will be in holder_reg.
|
reg = holder_reg; // From now on the object will be in holder_reg.
|
||||||
|
|
||||||
if (load_prototype_from_map) {
|
__ ld(reg, FieldMemOperand(map_reg, Map::kPrototypeOffset));
|
||||||
__ ld(reg, FieldMemOperand(map_reg, Map::kPrototypeOffset));
|
|
||||||
} else {
|
|
||||||
__ li(reg, Operand(prototype));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go to the next object in the prototype chain.
|
// Go to the next object in the prototype chain.
|
||||||
|
Loading…
Reference in New Issue
Block a user