Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
ruby
提交
74ddac1c
R
ruby
项目概览
张重言
/
ruby
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
ruby
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
74ddac1c
编写于
9月 11, 2020
作者:
K
Koichi Sasada
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
relax dependency
vm_sync.h does not need to include vm_core.h and ractor_pub.h.
上级
f7ccb8dd
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
13 addition
and
9 deletion
+13
-9
vm_core.h
vm_core.h
+4
-0
vm_sync.c
vm_sync.c
+1
-3
vm_sync.h
vm_sync.h
+8
-6
未找到文件。
vm_core.h
浏览文件 @
74ddac1c
...
...
@@ -1838,6 +1838,10 @@ void rb_fiber_close(rb_fiber_t *fib);
void
Init_native_thread
(
rb_thread_t
*
th
);
int
rb_vm_check_ints_blocking
(
rb_execution_context_t
*
ec
);
// vm_sync.h
void
rb_vm_cond_wait
(
rb_vm_t
*
vm
,
rb_nativethread_cond_t
*
cond
);
void
rb_vm_cond_timedwait
(
rb_vm_t
*
vm
,
rb_nativethread_cond_t
*
cond
,
unsigned
long
msec
);
#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
static
inline
void
rb_vm_check_ints
(
rb_execution_context_t
*
ec
)
...
...
vm_sync.c
浏览文件 @
74ddac1c
...
...
@@ -12,7 +12,7 @@ vm_locked(rb_vm_t *vm)
return
vm
->
ractor
.
sync
.
lock_owner
==
GET_RACTOR
();
}
#if
VM_CHECK_MODE
> 0
#if
RUBY_DEBUG
> 0
void
ASSERT_vm_locking
(
void
)
{
...
...
@@ -21,9 +21,7 @@ ASSERT_vm_locking(void)
VM_ASSERT
(
vm_locked
(
vm
));
}
}
#endif
#if VM_CHECK_MODE > 0
void
ASSERT_vm_unlocking
(
void
)
{
...
...
vm_sync.h
浏览文件 @
74ddac1c
...
...
@@ -2,9 +2,8 @@
#ifndef RUBY_VM_SYNC_H
#define RUBY_VM_SYNC_H
#include "vm_core.h"
#include "vm_debug.h"
#include "ractor_pub.h"
RUBY_EXTERN
bool
ruby_multi_ractor
;
#if USE_RUBY_DEBUG_LOG
#define LOCATION_ARGS const char *file, int line
...
...
@@ -24,15 +23,18 @@ void rb_vm_unlock_body(LOCATION_ARGS);
void
rb_vm_lock_enter_body
(
unsigned
int
*
lev
APPEND_LOCATION_ARGS
);
void
rb_vm_lock_leave_body
(
unsigned
int
*
lev
APPEND_LOCATION_ARGS
);
void
rb_vm_barrier
(
void
);
void
rb_vm_cond_wait
(
rb_vm_t
*
vm
,
rb_nativethread_cond_t
*
cond
);
void
rb_vm_cond_timedwait
(
rb_vm_t
*
vm
,
rb_nativethread_cond_t
*
cond
,
unsigned
long
msec
);
#if RUBY_DEBUG
// GET_VM()
#include "vm_core.h"
#endif
static
inline
bool
rb_multi_ractor_p
(
void
)
{
if
(
LIKELY
(
!
ruby_multi_ractor
))
{
// 0 on boot time.
VM
_ASSERT
(
GET_VM
()
->
ractor
.
cnt
<=
1
);
RUBY
_ASSERT
(
GET_VM
()
->
ractor
.
cnt
<=
1
);
return
false
;
}
else
{
...
...
@@ -84,7 +86,7 @@ rb_vm_lock_leave(unsigned int *lev, const char *file, int line)
#define RB_VM_LOCK_ENTER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV(&_lev);
#define RB_VM_LOCK_LEAVE() RB_VM_LOCK_LEAVE_LEV(&_lev); }
#if
VM_CHECK_MODE
> 0
#if
RUBY_DEBUG
> 0
void
ASSERT_vm_locking
(
void
);
void
ASSERT_vm_unlocking
(
void
);
#else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录