Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
8fa449ef
Y
YTBP
项目概览
YottaChain
/
YTBP
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YTBP
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8fa449ef
编写于
6月 26, 2017
作者:
D
Daniel Larimer
提交者:
GitHub
6月 26, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #47 from elmato/fix-dereference-data-stream
Fix dereference of DataStream struct
上级
55ce1180
725c4e73
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
14 addition
and
11 deletion
+14
-11
libraries/chain/wasm_interface.cpp
libraries/chain/wasm_interface.cpp
+14
-11
未找到文件。
libraries/chain/wasm_interface.cpp
浏览文件 @
8fa449ef
...
...
@@ -29,8 +29,8 @@ DEFINE_INTRINSIC_FUNCTION4(env,store,store,none,i32,keyptr,i32,keylen,i32,valuep
auto
&
db
=
wasm
.
current_apply_context
->
mutable_db
;
auto
&
scope
=
wasm
.
current_apply_context
->
scope
;
auto
mem
=
wasm
.
current_memory
;
char
*
key
=
&
memoryRef
<
char
>
(
mem
,
keyptr
);
char
*
value
=
&
memoryRef
<
char
>
(
mem
,
valueptr
);
char
*
key
=
memoryArrayPtr
<
char
>
(
mem
,
keyptr
,
keylen
);
char
*
value
=
memoryArrayPtr
<
char
>
(
mem
,
valueptr
,
valuelen
);
string
keystr
(
key
,
key
+
keylen
);
// if( valuelen == 8 ) idump(( *((int64_t*)value)));
...
...
@@ -60,7 +60,7 @@ DEFINE_INTRINSIC_FUNCTION2(env,remove,remove,i32,i32,keyptr,i32,keylen) {
auto
&
db
=
wasm
.
current_apply_context
->
mutable_db
;
auto
&
scope
=
wasm
.
current_apply_context
->
scope
;
auto
mem
=
wasm
.
current_memory
;
char
*
key
=
&
memoryRef
<
char
>
(
mem
,
keyptr
);
char
*
key
=
memoryArrayPtr
<
char
>
(
mem
,
keyptr
,
keylen
);
string
keystr
(
key
,
key
+
keylen
);
const
auto
*
obj
=
db
.
find
<
key_value_object
,
by_scope_key
>
(
boost
::
make_tuple
(
scope
,
keystr
)
);
...
...
@@ -95,7 +95,7 @@ DEFINE_INTRINSIC_FUNCTION2(env,Varint_unpack,Varint_unpack,none,i32,streamptr,i3
auto
&
wasm
=
wasm_interface
::
get
();
auto
mem
=
wasm
.
current_memory
;
uint32_t
*
stream
=
&
memoryRef
<
uint32_t
>
(
mem
,
streamptr
);
uint32_t
*
stream
=
memoryArrayPtr
<
uint32_t
>
(
mem
,
streamptr
,
3
);
const
char
*
pos
=
&
memoryRef
<
const
char
>
(
mem
,
stream
[
1
]
);
const
char
*
end
=
&
memoryRef
<
const
char
>
(
mem
,
stream
[
2
]
);
uint32_t
&
value
=
memoryRef
<
uint32_t
>
(
mem
,
valueptr
);
...
...
@@ -113,7 +113,7 @@ DEFINE_INTRINSIC_FUNCTION2(env,AccountName_unpack,AccountName_unpack,none,i32,st
auto
mem
=
wasm
.
current_memory
;
uint32_t
*
stream
=
&
memoryRef
<
uint32_t
>
(
mem
,
streamptr
);
uint32_t
*
stream
=
memoryArrayPtr
<
uint32_t
>
(
mem
,
streamptr
,
3
);
const
char
*
pos
=
&
memoryRef
<
const
char
>
(
mem
,
stream
[
1
]
);
const
char
*
end
=
&
memoryRef
<
const
char
>
(
mem
,
stream
[
2
]
);
AccountName
*
name
=
&
memoryRef
<
AccountName
>
(
mem
,
accountptr
);
...
...
@@ -139,8 +139,8 @@ DEFINE_INTRINSIC_FUNCTION4(env,load,load,i32,i32,keyptr,i32,keylen,i32,valueptr,
auto
&
db
=
wasm
.
current_apply_context
->
mutable_db
;
auto
&
scope
=
wasm
.
current_apply_context
->
scope
;
auto
mem
=
wasm
.
current_memory
;
char
*
key
=
&
memoryRef
<
char
>
(
mem
,
keyptr
);
char
*
value
=
&
memoryRef
<
char
>
(
mem
,
valueptr
);
char
*
key
=
memoryArrayPtr
<
char
>
(
mem
,
keyptr
,
keylen
);
char
*
value
=
memoryArrayPtr
<
char
>
(
mem
,
valueptr
,
valuelen
);
string
keystr
(
key
,
key
+
keylen
);
const
auto
*
obj
=
db
.
find
<
key_value_object
,
by_scope_key
>
(
boost
::
make_tuple
(
scope
,
keystr
)
);
...
...
@@ -156,8 +156,7 @@ DEFINE_INTRINSIC_FUNCTION2(env,readMessage,readMessage,i32,i32,destptr,i32,dests
FC_ASSERT
(
destsize
>
0
);
wasm_interface
&
wasm
=
wasm_interface
::
get
();
auto
mem
=
wasm
.
current_memory
;
char
*
begin
=
&
Runtime
::
memoryRef
<
char
>
(
mem
,
destptr
);
Runtime
::
memoryRef
<
char
>
(
mem
,
destptr
+
destsize
);
char
*
begin
=
memoryArrayPtr
<
char
>
(
mem
,
destptr
,
destsize
);
int
minlen
=
std
::
min
<
int
>
(
wasm
.
current_validate_context
->
msg
.
data
.
size
(),
destsize
);
memcpy
(
begin
,
wasm
.
current_validate_context
->
msg
.
data
.
data
(),
minlen
);
...
...
@@ -192,8 +191,12 @@ DEFINE_INTRINSIC_FUNCTION1(env,printi64,printi64,none,i64,val) {
DEFINE_INTRINSIC_FUNCTION2
(
env
,
print
,
print
,
none
,
i32
,
charptr
,
i32
,
size
)
{
FC_ASSERT
(
size
>
0
);
const
char
*
str
=
&
Runtime
::
memoryRef
<
const
char
>
(
Runtime
::
getDefaultMemory
(
wasm_interface
::
get
().
current_module
),
charptr
);
const
char
*
end
=
&
Runtime
::
memoryRef
<
const
char
>
(
Runtime
::
getDefaultMemory
(
wasm_interface
::
get
().
current_module
),
charptr
+
size
);
auto
&
wasm
=
wasm_interface
::
get
();
auto
mem
=
wasm
.
current_memory
;
const
char
*
str
=
memoryArrayPtr
<
char
>
(
mem
,
charptr
,
size
);
edump
((
charptr
)(
size
));
wlog
(
std
::
string
(
str
,
size
)
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录