OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_PPC | 7 #if V8_TARGET_ARCH_PPC |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 1386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1397 // Patch the (relocated) inlined map check. | 1397 // Patch the (relocated) inlined map check. |
1398 | 1398 |
1399 // The offset was stored in r8 | 1399 // The offset was stored in r8 |
1400 // (See LCodeGen::DoDeferredLInstanceOfKnownGlobal). | 1400 // (See LCodeGen::DoDeferredLInstanceOfKnownGlobal). |
1401 const Register offset = r8; | 1401 const Register offset = r8; |
1402 __ mflr(inline_site); | 1402 __ mflr(inline_site); |
1403 __ sub(inline_site, inline_site, offset); | 1403 __ sub(inline_site, inline_site, offset); |
1404 // Get the map location in r8 and patch it. | 1404 // Get the map location in r8 and patch it. |
1405 __ GetRelocatedValue(inline_site, offset, scratch); | 1405 __ GetRelocatedValue(inline_site, offset, scratch); |
1406 __ StoreP(map, FieldMemOperand(offset, Cell::kValueOffset), r0); | 1406 __ StoreP(map, FieldMemOperand(offset, Cell::kValueOffset), r0); |
| 1407 |
| 1408 __ mr(r10, map); |
| 1409 __ RecordWriteField(offset, Cell::kValueOffset, r10, function, |
| 1410 kLRHasNotBeenSaved, kDontSaveFPRegs, |
| 1411 OMIT_REMEMBERED_SET, OMIT_SMI_CHECK); |
1407 } | 1412 } |
1408 | 1413 |
1409 // Register mapping: r6 is object map and r7 is function prototype. | 1414 // Register mapping: r6 is object map and r7 is function prototype. |
1410 // Get prototype of object into r5. | 1415 // Get prototype of object into r5. |
1411 __ LoadP(scratch, FieldMemOperand(map, Map::kPrototypeOffset)); | 1416 __ LoadP(scratch, FieldMemOperand(map, Map::kPrototypeOffset)); |
1412 | 1417 |
1413 // We don't need map any more. Use it as a scratch register. | 1418 // We don't need map any more. Use it as a scratch register. |
1414 scratch3 = map; | 1419 scratch3 = map; |
1415 map = no_reg; | 1420 map = no_reg; |
1416 | 1421 |
(...skipping 4157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5574 kStackUnwindSpace, NULL, | 5579 kStackUnwindSpace, NULL, |
5575 MemOperand(fp, 6 * kPointerSize), NULL); | 5580 MemOperand(fp, 6 * kPointerSize), NULL); |
5576 } | 5581 } |
5577 | 5582 |
5578 | 5583 |
5579 #undef __ | 5584 #undef __ |
5580 } | 5585 } |
5581 } // namespace v8::internal | 5586 } // namespace v8::internal |
5582 | 5587 |
5583 #endif // V8_TARGET_ARCH_PPC | 5588 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |