| 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 <assert.h>  // For assert | 5 #include <assert.h>  // For assert | 
| 6 #include <limits.h>  // For LONG_MIN, LONG_MAX. | 6 #include <limits.h>  // For LONG_MIN, LONG_MAX. | 
| 7 | 7 | 
| 8 #include "src/v8.h" | 8 #include "src/v8.h" | 
| 9 | 9 | 
| 10 #if V8_TARGET_ARCH_PPC | 10 #if V8_TARGET_ARCH_PPC | 
| (...skipping 1350 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1361       cmp(result, ip); | 1361       cmp(result, ip); | 
| 1362       Check(eq, kUnexpectedAllocationTop); | 1362       Check(eq, kUnexpectedAllocationTop); | 
| 1363     } | 1363     } | 
| 1364     // Load allocation limit into ip. Result already contains allocation top. | 1364     // Load allocation limit into ip. Result already contains allocation top. | 
| 1365     LoadP(ip, MemOperand(topaddr, limit - top), r0); | 1365     LoadP(ip, MemOperand(topaddr, limit - top), r0); | 
| 1366   } | 1366   } | 
| 1367 | 1367 | 
| 1368   if ((flags & DOUBLE_ALIGNMENT) != 0) { | 1368   if ((flags & DOUBLE_ALIGNMENT) != 0) { | 
| 1369     // Align the next allocation. Storing the filler map without checking top is | 1369     // Align the next allocation. Storing the filler map without checking top is | 
| 1370     // safe in new-space because the limit of the heap is aligned there. | 1370     // safe in new-space because the limit of the heap is aligned there. | 
| 1371     DCHECK((flags & PRETENURE_OLD_SPACE) == 0); |  | 
| 1372 #if V8_TARGET_ARCH_PPC64 | 1371 #if V8_TARGET_ARCH_PPC64 | 
| 1373     STATIC_ASSERT(kPointerAlignment == kDoubleAlignment); | 1372     STATIC_ASSERT(kPointerAlignment == kDoubleAlignment); | 
| 1374 #else | 1373 #else | 
| 1375     STATIC_ASSERT(kPointerAlignment * 2 == kDoubleAlignment); | 1374     STATIC_ASSERT(kPointerAlignment * 2 == kDoubleAlignment); | 
| 1376     andi(scratch2, result, Operand(kDoubleAlignmentMask)); | 1375     andi(scratch2, result, Operand(kDoubleAlignmentMask)); | 
| 1377     Label aligned; | 1376     Label aligned; | 
| 1378     beq(&aligned, cr0); | 1377     beq(&aligned, cr0); | 
| 1379     if ((flags & PRETENURE) != 0) { | 1378     if ((flags & PRETENURE) != 0) { | 
| 1380       cmpl(result, ip); | 1379       cmpl(result, ip); | 
| 1381       bge(gc_required); | 1380       bge(gc_required); | 
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1460       cmp(result, ip); | 1459       cmp(result, ip); | 
| 1461       Check(eq, kUnexpectedAllocationTop); | 1460       Check(eq, kUnexpectedAllocationTop); | 
| 1462     } | 1461     } | 
| 1463     // Load allocation limit into ip. Result already contains allocation top. | 1462     // Load allocation limit into ip. Result already contains allocation top. | 
| 1464     LoadP(ip, MemOperand(topaddr, limit - top)); | 1463     LoadP(ip, MemOperand(topaddr, limit - top)); | 
| 1465   } | 1464   } | 
| 1466 | 1465 | 
| 1467   if ((flags & DOUBLE_ALIGNMENT) != 0) { | 1466   if ((flags & DOUBLE_ALIGNMENT) != 0) { | 
| 1468     // Align the next allocation. Storing the filler map without checking top is | 1467     // Align the next allocation. Storing the filler map without checking top is | 
| 1469     // safe in new-space because the limit of the heap is aligned there. | 1468     // safe in new-space because the limit of the heap is aligned there. | 
| 1470     DCHECK((flags & PRETENURE_OLD_SPACE) == 0); |  | 
| 1471 #if V8_TARGET_ARCH_PPC64 | 1469 #if V8_TARGET_ARCH_PPC64 | 
| 1472     STATIC_ASSERT(kPointerAlignment == kDoubleAlignment); | 1470     STATIC_ASSERT(kPointerAlignment == kDoubleAlignment); | 
| 1473 #else | 1471 #else | 
| 1474     STATIC_ASSERT(kPointerAlignment * 2 == kDoubleAlignment); | 1472     STATIC_ASSERT(kPointerAlignment * 2 == kDoubleAlignment); | 
| 1475     andi(scratch2, result, Operand(kDoubleAlignmentMask)); | 1473     andi(scratch2, result, Operand(kDoubleAlignmentMask)); | 
| 1476     Label aligned; | 1474     Label aligned; | 
| 1477     beq(&aligned, cr0); | 1475     beq(&aligned, cr0); | 
| 1478     if ((flags & PRETENURE) != 0) { | 1476     if ((flags & PRETENURE) != 0) { | 
| 1479       cmpl(result, ip); | 1477       cmpl(result, ip); | 
| 1480       bge(gc_required); | 1478       bge(gc_required); | 
| (...skipping 3045 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4526   } | 4524   } | 
| 4527   if (mag.shift > 0) srawi(result, result, mag.shift); | 4525   if (mag.shift > 0) srawi(result, result, mag.shift); | 
| 4528   ExtractBit(r0, dividend, 31); | 4526   ExtractBit(r0, dividend, 31); | 
| 4529   add(result, result, r0); | 4527   add(result, result, r0); | 
| 4530 } | 4528 } | 
| 4531 | 4529 | 
| 4532 }  // namespace internal | 4530 }  // namespace internal | 
| 4533 }  // namespace v8 | 4531 }  // namespace v8 | 
| 4534 | 4532 | 
| 4535 #endif  // V8_TARGET_ARCH_PPC | 4533 #endif  // V8_TARGET_ARCH_PPC | 
| OLD | NEW | 
|---|