FT2000+ 64K内存页系统chromium无法渲染问题

3 篇文章 0 订阅
1 篇文章 0 订阅

FT2000+ 64K内存页系统chromium无法渲染问题

64KB内存页为65536Byte,以2为底取对数为16。

修改PageAllocator.h,将kPageAllocationGranularityShift改为16,kSystemPageSize改为65536。

修改PartitionAlloc.h,将kPartitionPageShift改为18。以2为底取对数为16 + 2。

修改Heap.h,将blinkPageSizeLog2改为21。以2为底取对数为16 + 5。

手动修改

修改PageAllocator.h

#if OS(WIN)
static const size_t kPageAllocationGranularityShift = 16; // 64KB
#else
static const size_t kPageAllocationGranularityShift = 12; // 4KB
#endif
------------------------------------------------------------------------------------------
改为
#if OS(WIN)
static const size_t kPageAllocationGranularityShift = 16; // 64KB
#else
static const size_t kPageAllocationGranularityShift = 16; // 64KB
#endif

static const size_t kSystemPageSize = 4096;
------------------------------------------------------------------------------------------
改为
static const size_t kSystemPageSize = 65536;

修改PartitionAlloc.h

static const size_t kPartitionPageShift = 14; // 16KB
------------------------------------------------------------------------------------------
改为
static const size_t kPartitionPageShift = 18; // 64KB

修改Heap.h

使用find . -wholename "*heap/Heap.h"找到Heap.h

const size_t blinkPageSizeLog2 = 17;
------------------------------------------------------------------------------------------
改为
const size_t blinkPageSizeLog2 = 21;
const size_t maxHeapObjectSizeLog2 = 27;
------------------------------------------------------------------------------------------
改为
const size_t maxHeapObjectSizeLog2 = 31;
const size_t headerDOMMarkBitMask = 1u << 17;
const size_t headerGCInfoIndexShift = 18;
const size_t headerGCInfoIndexMask = (static_cast<size_t>((1 << 465) - 1)) << headerGCInfoIndexShift;
const size_t headerSizeMask = (static_cast<size_t>((1 << 14) - 1)) << 3;
const size_t headerMarkBitMask = 1;
const size_t headerFreedBitMask = 2;
------------------------------------------------------------------------------------------
改为
const size_t headerDOMMarkBitMask = 1u << 21;
const size_t headerGCInfoIndexShift = 22;
const size_t headerGCInfoIndexMask = (static_cast<size_t>((1 << 18) - 1)) << headerGCInfoIndexShift;
const size_t headerSizeMask = (static_cast<size_t>((1 << 18) - 1)) << 3;
const size_t headerMarkBitMask = 1;
const size_t headerFreedBitMask = 2;
const size_t nonLargeObjectPageSizeMax = 1 << 17;
------------------------------------------------------------------------------------------
改为
const size_t nonLargeObjectPageSizeMax = 1 << 21;

使用脚本修改

在源码目录下创建脚本,内容如下,并执行脚本,编译代码即可

#!/bin/bash
pagesize=`getconf PAGESIZE`
echo $pagesize
pagesizelog2=`echo $pagesize | awk '{ print(log($0)/log(2))}'`

PartitionAlloc_h=`find . -name "PartitionAlloc.h"`
echo $PartitionAlloc_h
sed -i "s/^static const size_t kPartitionPageShift .*/static const size_t kPartitionPageShift = `expr $pagesizelog2 + 2`;/" $PartitionAlloc_h

PageAlloctor_h=`find . -name "PageAllocator.h"`
echo $PageAlloctor_h
sed -i "s/^static const size_t kPageAllocationGranularityShift .*/static const size_t kPageAllocationGranularityShift = $pagesizelog2;/" $PageAlloctor_h
sed -i "s/^static const size_t kSystemPageSize .*/static const size_t kSystemPageSize = $pagesize;/" $PageAlloctor_h

Heap_h=`find . -wholename "*heap/Heap.h"`
echo $Heap_h
sed -i "s/^const size_t blinkPageSizeLog2 .*/const size_t blinkPageSizeLog2 = `expr $pagesizelog2 + 5`;/" $Heap_h
sed -i "s/^const size_t maxHeapObjectSizeLog2 .*/const size_t maxHeapObjectSizeLog2 = `expr $pagesizelog2 + 15`;/" $Heap_h

sed -i "s/^const size_t headerDOMMarkBitMask .*/const size_t headerDOMMarkBitMask = 1u << `expr $pagesizelog2 + 5`;/" $Heap_h
sed -i "s/^const size_t headerGCInfoIndexShift .*/const size_t headerGCInfoIndexShift = `expr $pagesizelog2 + 6`;/" $Heap_h

sed -i "s/^const size_t headerGCInfoIndexMask = .*/const size_t headerGCInfoIndexMask = (static_cast<size_t>((1 << `expr $pagesizelog2 + 2`) - 1)) << headerGCInfoIndexShift;/" $Heap_h

sed -i "s/^const size_t headerSizeMask .*/const size_t headerSizeMask = (static_cast<size_t>((1 << `expr $pagesizelog2 + 2`) - 1)) << 3;/" $Heap_h

sed -i "s/^const size_t nonLargeObjectPageSizeMax .*/const size_t nonLargeObjectPageSizeMax = 1 << `expr $pagesizelog2 + 5`;/" $Heap_h
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值