)]}'
{
  "commit": "98a0d8378b30d1d9553a24bea4a72ce0036d3a4e",
  "tree": "a21bda1d93839dd951cc915ef6bbeb8d317702f0",
  "parents": [
    "da3f8b7d56af2beb0b6bc8b2c236fcc74ce16477"
  ],
  "author": {
    "name": "Shinya Kawanaka",
    "email": "shinyak@google.com",
    "time": "Wed Feb 15 15:30:51 2017 +0900"
  },
  "committer": {
    "name": "Shinya Kawanaka",
    "email": "shinyak@google.com",
    "time": "Wed Feb 15 06:50:28 2017 +0000"
  },
  "message": "Improve allocation cost for clang-cl\n\nWe need 40 seconds to compile Node.cpp in blink on native Windows\n(Z620). However, it needed more than 4 minutes on wine + clang-cl on\nLinux (Z620). With this improvement, compile of Node.cpp is just 40\nseconds on wine + clang-cl, which is as fast as on native Windows.\n\nWe have 2 improvement points.\n\n(1) Fix wine performance bug.\nIn the existing wine implementation sometimes search freelist from\none smaller class because of wrong memory size calculation. Arena in\nsuch class does not fulfill the required size, so it always fail until\nmoving to next size class. Search unnecessary freelist made compile\nreally slow.\n\nThis improves clang-cl compile speed by 4x (4m -\u003e 1m).\n\n(2) Use fine grained free list class.\nclang-cl allocates 200~500 bytes memory quite a lot, and often allocates\naround 2000 bytes memory. So, for less than 512 bytes memory, we\nintroduce 16B grained freelist. For less than 4K bytes memory, we use\n256B grained freelist.\nAlso remove loop from get_freelist_index() function to make it faster.\nIt\u0027s called a lot.\n\nThis improves clang-cl speed more (1m -\u003e 40s).\n\nBUG\u003db/34110848\n\nChange-Id: I467140dc71185d7179ffb09426b39056644b3309\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a908f197e51d15961d01f32712f75a7aa9eca823",
      "old_mode": 33188,
      "old_path": "dlls/ntdll/heap.c",
      "new_id": "9cd5c5ce8cd1a204a90d1dda30ea9a2592fb7c05",
      "new_mode": 33188,
      "new_path": "dlls/ntdll/heap.c"
    }
  ]
}
