Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
deno
提交
9e839b7e
D
deno
项目概览
张重言
/
deno
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
deno
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9e839b7e
编写于
12月 04, 2018
作者:
F
F001
提交者:
Ryan Dahl
12月 03, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Avoid memory leak (#1265)
上级
f6c841a6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
15 addition
and
18 deletion
+15
-18
src/isolate.rs
src/isolate.rs
+3
-18
src/libdeno.rs
src/libdeno.rs
+12
-0
未找到文件。
src/isolate.rs
浏览文件 @
9e839b7e
...
@@ -190,15 +190,14 @@ impl Isolate {
...
@@ -190,15 +190,14 @@ impl Isolate {
pub
fn
respond
(
&
mut
self
,
req_id
:
i32
,
buf
:
Buf
)
{
pub
fn
respond
(
&
mut
self
,
req_id
:
i32
,
buf
:
Buf
)
{
self
.state
.metrics_op_completed
(
buf
.len
());
self
.state
.metrics_op_completed
(
buf
.len
());
// deno_respond will memcpy the buf into V8's heap,
// TODO(zero-copy) Use Buf::leak(buf) to leak the heap allocated buf. And
// so borrowing a reference here is sufficient.
// don't do the memcpy in ImportBuf() (in libdeno/binding.cc)
unsafe
{
unsafe
{
libdeno
::
deno_respond
(
libdeno
::
deno_respond
(
self
.libdeno_isolate
,
self
.libdeno_isolate
,
self
.as_void_ptr
(),
self
.as_void_ptr
(),
req_id
,
req_id
,
buf
.into
(),
buf
.
as_ref
()
.
into
(),
)
)
}
}
}
}
...
@@ -271,20 +270,6 @@ impl Drop for Isolate {
...
@@ -271,20 +270,6 @@ impl Drop for Isolate {
}
}
}
}
/// Converts Rust Buf to libdeno `deno_buf`.
impl
From
<
Buf
>
for
libdeno
::
deno_buf
{
fn
from
(
x
:
Buf
)
->
Self
{
let
len
=
x
.len
();
let
ptr
=
Box
::
into_raw
(
x
);
Self
{
alloc_ptr
:
std
::
ptr
::
null_mut
(),
alloc_len
:
0
,
data_ptr
:
ptr
as
*
mut
u8
,
data_len
:
len
,
}
}
}
// Dereferences the C pointer into the Rust Isolate object.
// Dereferences the C pointer into the Rust Isolate object.
extern
"C"
fn
pre_dispatch
(
extern
"C"
fn
pre_dispatch
(
user_data
:
*
mut
c_void
,
user_data
:
*
mut
c_void
,
...
...
src/libdeno.rs
浏览文件 @
9e839b7e
...
@@ -29,6 +29,18 @@ impl deno_buf {
...
@@ -29,6 +29,18 @@ impl deno_buf {
}
}
}
}
/// Converts Rust &Buf to libdeno `deno_buf`.
impl
<
'a
>
From
<&
'a
[
u8
]
>
for
deno_buf
{
fn
from
(
x
:
&
'a
[
u8
])
->
Self
{
Self
{
alloc_ptr
:
std
::
ptr
::
null_mut
(),
alloc_len
:
0
,
data_ptr
:
x
.as_ref
()
.as_ptr
()
as
*
mut
u8
,
data_len
:
x
.len
(),
}
}
}
type
DenoRecvCb
=
unsafe
extern
"C"
fn
(
type
DenoRecvCb
=
unsafe
extern
"C"
fn
(
user_data
:
*
mut
c_void
,
user_data
:
*
mut
c_void
,
req_id
:
i32
,
req_id
:
i32
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录