Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • pypy pypy
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 669
    • Issues 669
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 14
    • Merge requests 14
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • PyPy
  • pypypypy
  • Merge requests
  • !729

Merged
Created Jun 16, 2020 by Armin Rigo@arigoOwner

Speed up list.pop/list.insert operations that shift many items

  • Overview 1
  • Commits 5
  • Pipelines 1
  • Changes 13

list.pop/list.insert operations that shift many items were very slow in old large list objects. This is because it was done by manually reading and writing all items, and the card-marking adds overhead to every single write. With this branch, it's done via support for a new operation in the GC, writebarrier_before_move(). This could be renamed if needed for other use cases, but basically, this operation takes an array, looks for the flag that says there is at least one marked card in it, and in that case applies a general write barrier to it. After such an operation, the shift of items can always be done with a simple memmove() call.

Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: branch/wb_before_move