)]}'
{
  "commit": "1d3ada378b76178ba5108255d3b555ff0c2dfaf3",
  "tree": "af7c1f9cc4ff41ffad39bf83b10a3daa3b116ac7",
  "parents": [
    "5cdf821838242bc9fa5c7400465546904a475f01"
  ],
  "author": {
    "name": "Felix-Gong",
    "email": "gongxiaofei24@iscas.ac.cn",
    "time": "Tue Jul 07 14:13:24 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jul 07 14:13:24 2026 +0800"
  },
  "message": "bthread: implement lock-free AtomicInteger128 for RISC-V (#3355)\n\n* bthread: implement lock-free AtomicInteger128 for RISC-V\n\nReplace mutex-based fallback with seqlock implementation for RISC-V\nplatform. This brings RISC-V in line with x86 (SSE) and ARM (NEON)\nlock-free implementations.\n\nSeqlock algorithm:\n- Reader: read sequence, read data, verify sequence, retry if stale\n- Writer: increment sequence, write data, increment sequence\n- All memory accesses use fence instructions for ordering\n\nPerformance improvement:\n- bthread_start_urgent latency: 1.5-2% reduction\n- adding_func throughput: 25% improvement (541ns vs 722ns)\n\nSigned-off-by: Xiaofei Gong \u003cgongxiaofei24@iscas.ac.cn\u003e\nSigned-off-by: YuanSheng \u003cyuansheng@isrc.iscas.ac.cn\u003e\n\n* fix: correct RISC-V inline assembly constraints for AtomicInteger128\n\n- Use \"m\" (input) for ld instructions reading memory\n- Use \"\u003dm\" (output) for sd instructions writing memory\n- Swap operand order in sd templates to match RISC-V syntax (register, memory)\n\nThe previous \"+m\" constraints in input operand positions caused compilation\nerrors on RISC-V. This fix ensures proper constraint usage:\n- ld: memory is input \"m\", register is output \"\u003dr\"\n- sd: register is input \"r\", memory is output \"\u003dm\"\n\nSigned-off-by: Xiaofei Gong \u003cgongxiaofei24@iscas.ac.cn\u003e\nSigned-off-by: YuanSheng \u003cyuansheng@isrc.iscas.ac.cn\u003e\n\n---------\n\nSigned-off-by: Xiaofei Gong \u003cgongxiaofei24@iscas.ac.cn\u003e\nSigned-off-by: YuanSheng \u003cyuansheng@isrc.iscas.ac.cn\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ddfa4738981ff2fdde41b11e07668932889937bc",
      "old_mode": 33188,
      "old_path": "src/bthread/task_group.cpp",
      "new_id": "46f9a133772fb506d78d7581d0cb4353fdda06d7",
      "new_mode": 33188,
      "new_path": "src/bthread/task_group.cpp"
    },
    {
      "type": "modify",
      "old_id": "fc0c5cb4697a27f042c04eb301a9ccbcd0bfe11e",
      "old_mode": 33188,
      "old_path": "src/bthread/task_group.h",
      "new_id": "c21e06ba39548b226df9c1ad358a1e3c1a84f925",
      "new_mode": 33188,
      "new_path": "src/bthread/task_group.h"
    }
  ]
}
