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.
|
||||
__ ld(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
|
||||
} 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;
|
||||
if (depth != 1 || check == CHECK_ALL_MAPS) {
|
||||
// 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.
|
||||
|
||||
if (load_prototype_from_map) {
|
||||
__ ld(reg, FieldMemOperand(map_reg, Map::kPrototypeOffset));
|
||||
} else {
|
||||
__ li(reg, Operand(prototype));
|
||||
}
|
||||
__ ld(reg, FieldMemOperand(map_reg, Map::kPrototypeOffset));
|
||||
}
|
||||
|
||||
// Go to the next object in the prototype chain.
|
||||
|
Loading…
Reference in New Issue
Block a user