diff options
Diffstat (limited to 'deps/v8/src/mips/ic-mips.cc')
-rw-r--r-- | deps/v8/src/mips/ic-mips.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/deps/v8/src/mips/ic-mips.cc b/deps/v8/src/mips/ic-mips.cc index c3cdb4cd38..b6f019f478 100644 --- a/deps/v8/src/mips/ic-mips.cc +++ b/deps/v8/src/mips/ic-mips.cc @@ -401,7 +401,7 @@ void CallICBase::GenerateMonomorphicCacheProbe(MacroAssembler* masm, NORMAL, argc); Isolate::Current()->stub_cache()->GenerateProbe( - masm, flags, a1, a2, a3, t0, t1); + masm, flags, a1, a2, a3, t0, t1, t2); // If the stub cache probing failed, the receiver might be a value. // For value objects, we use the map of the prototype objects for @@ -437,7 +437,7 @@ void CallICBase::GenerateMonomorphicCacheProbe(MacroAssembler* masm, // Probe the stub cache for the value object. __ bind(&probe); Isolate::Current()->stub_cache()->GenerateProbe( - masm, flags, a1, a2, a3, t0, t1); + masm, flags, a1, a2, a3, t0, t1, t2); __ bind(&miss); } @@ -702,7 +702,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) { // Probe the stub cache. Code::Flags flags = Code::ComputeFlags(Code::LOAD_IC, MONOMORPHIC); Isolate::Current()->stub_cache()->GenerateProbe( - masm, flags, a0, a2, a3, t0, t1); + masm, flags, a0, a2, a3, t0, t1, t2); // Cache miss: Jump to runtime. GenerateMiss(masm); @@ -1513,7 +1513,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm, Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, MONOMORPHIC, strict_mode); Isolate::Current()->stub_cache()->GenerateProbe( - masm, flags, a1, a2, a3, t0, t1); + masm, flags, a1, a2, a3, t0, t1, t2); // Cache miss: Jump to runtime. GenerateMiss(masm); @@ -1571,7 +1571,10 @@ void StoreIC::GenerateArrayLength(MacroAssembler* masm) { // Check that the array has fast properties, otherwise the length // property might have been redefined. - // TODO(mstarzinger): Port this check to MIPS. + __ lw(scratch, FieldMemOperand(receiver, JSArray::kPropertiesOffset)); + __ lw(scratch, FieldMemOperand(scratch, FixedArray::kMapOffset)); + __ LoadRoot(at, Heap::kHashTableMapRootIndex); + __ Branch(&miss, eq, scratch, Operand(at)); // Check that value is a smi. __ JumpIfNotSmi(value, &miss); |