Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
cda36cb9
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,发现更多精彩内容 >>
提交
cda36cb9
编写于
3月 22, 2018
作者:
A
arhag
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Separate out C++ blockchain parameter setter/getter helper functions from C privileged API
上级
c428b191
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
113 addition
and
109 deletion
+113
-109
contracts/eosio.system/common.hpp
contracts/eosio.system/common.hpp
+3
-3
contracts/eosio.system/voting.hpp
contracts/eosio.system/voting.hpp
+1
-1
contracts/eosiolib/eosiolib.cpp
contracts/eosiolib/eosiolib.cpp
+19
-21
contracts/eosiolib/privileged.h
contracts/eosiolib/privileged.h
+7
-22
contracts/eosiolib/privileged.hpp
contracts/eosiolib/privileged.hpp
+22
-1
libraries/chain/wasm_interface.cpp
libraries/chain/wasm_interface.cpp
+61
-61
未找到文件。
contracts/eosio.system/common.hpp
浏览文件 @
cda36cb9
...
...
@@ -21,11 +21,11 @@ namespace eosiosystem {
static
constexpr
uint32_t
blocks_per_producer
=
6
;
static
constexpr
uint32_t
seconds_per_day
=
24
*
3600
;
static
constexpr
uint32_t
days_per_4years
=
1461
;
struct
eosio_parameters
:
eosio
::
blockchain_parameters
{
uint32_t
percent_of_max_inflation_rate
=
0
;
uint32_t
storage_reserve_ratio
=
1000
;
// ratio * 1000
EOSLIB_SERIALIZE_DERIVED
(
eosio_parameters
,
eosio
::
blockchain_parameters
,
(
percent_of_max_inflation_rate
)(
storage_reserve_ratio
)
)
};
...
...
@@ -48,7 +48,7 @@ namespace eosiosystem {
static
eosio_global_state
&
get_default_parameters
()
{
static
eosio_global_state
dp
;
get_blockchain_parameters
(
&
dp
);
get_blockchain_parameters
(
dp
);
return
dp
;
}
};
...
...
contracts/eosio.system/voting.hpp
浏览文件 @
cda36cb9
...
...
@@ -351,7 +351,7 @@ namespace eosiosystem {
auto
issue_quantity
=
parameters
.
blocks_per_cycle
*
(
parameters
.
payment_per_block
+
parameters
.
payment_to_eos_bucket
);
currency
::
inline_issue
(
SystemAccount
,
issue_quantity
);
set_blockchain_parameters
(
&
parameters
);
set_blockchain_parameters
(
parameters
);
global_state_singleton
::
set
(
parameters
);
}
...
...
contracts/eosiolib/eosiolib.cpp
浏览文件 @
cda36cb9
...
...
@@ -4,6 +4,21 @@
namespace
eosio
{
void
set_blockchain_parameters
(
const
eosio
::
blockchain_parameters
&
params
)
{
char
buf
[
sizeof
(
eosio
::
blockchain_parameters
)];
eosio
::
datastream
<
char
*>
ds
(
buf
,
sizeof
(
buf
)
);
ds
<<
params
;
set_blockchain_parameters_packed
(
buf
,
ds
.
tellp
()
);
}
void
get_blockchain_parameters
(
eosio
::
blockchain_parameters
&
params
)
{
char
buf
[
sizeof
(
eosio
::
blockchain_parameters
)];
size_t
size
=
get_blockchain_parameters_packed
(
buf
,
sizeof
(
buf
)
);
eosio_assert
(
size
<=
sizeof
(
buf
),
"buffer is too small"
);
eosio
::
datastream
<
const
char
*>
ds
(
buf
,
size_t
(
size
)
);
ds
>>
params
;
}
using
::
memset
;
using
::
memcpy
;
...
...
@@ -42,7 +57,7 @@ namespace eosio {
const
uint32_t
current_memory_size
=
reinterpret_cast
<
uint32_t
>
(
sbrk
(
0
));
if
(
static_cast
<
int32_t
>
(
current_memory_size
)
<
0
)
return
nullptr
;
//grab up to the end of the current WASM memory page provided that it has 1KiB remaining, otherwise
// grow to end of next page
uint32_t
heap_adj
;
...
...
@@ -290,7 +305,7 @@ namespace eosio {
return
nullptr
;
}
if
(
*
orig_ptr_size
>
size
)
if
(
*
orig_ptr_size
>
size
)
{
// use a buffer_ptr to allocate the memory to free
char
*
const
new_ptr
=
ptr
+
size
+
_size_marker
;
...
...
@@ -481,7 +496,8 @@ namespace eosio {
};
memory_manager
memory_heap
;
}
}
/// namespace eosio
extern
"C"
{
...
...
@@ -509,22 +525,4 @@ void free(void* ptr)
return
eosio
::
memory_heap
.
free
(
ptr
);
}
void
set_blockchain_parameters_packed
(
char
*
data
,
size_t
datalen
);
void
set_blockchain_parameters
(
const
struct
blockchain_parameters
*
params
)
{
auto
data
=
eosio
::
pack
<
eosio
::
blockchain_parameters
>
(
*
static_cast
<
const
eosio
::
blockchain_parameters
*>
(
params
)
);
set_blockchain_parameters_packed
(
data
.
data
(),
data
.
size
()
);
}
int
get_blockchain_parameters_packed
(
char
*
data
,
size_t
datalen
);
void
get_blockchain_parameters
(
struct
blockchain_parameters
*
params
)
{
char
buf
[
sizeof
(
struct
blockchain_parameters
)];
size_t
size
=
get_blockchain_parameters_packed
(
buf
,
sizeof
(
buf
)
);
eosio_assert
(
size
<=
sizeof
(
buf
),
"buffer is too small"
);
static_assert
(
sizeof
(
blockchain_parameters
)
==
sizeof
(
eosio
::
blockchain_parameters
),
"data structures are not the same"
);
eosio
::
datastream
<
const
char
*>
ds
(
buf
,
size_t
(
size
)
);
ds
>>
*
reinterpret_cast
<
eosio
::
blockchain_parameters
*>
(
params
);
}
}
contracts/eosiolib/privileged.h
浏览文件 @
cda36cb9
#pragma once
#ifdef __cplusplus
extern
"C"
{
#endif
/**
* @defgroup privilegedapi Privileged API
...
...
@@ -10,32 +12,15 @@ extern "C" {
void
set_resource_limits
(
account_name
account
,
uint64_t
ram_bytes
,
uint64_t
net_weight
,
uint64_t
cpu_weight
,
int64_t
ignored
);
void
set_active_producers
(
char
*
producer_data
,
size
_t
producer_data_size
);
void
set_active_producers
(
char
*
producer_data
,
uint32
_t
producer_data_size
);
bool
is_privileged
(
account_name
account
);
struct
blockchain_parameters
{
uint32_t
target_block_size
;
uint32_t
max_block_size
;
void
set_blockchain_parameters_packed
(
char
*
data
,
uint32_t
datalen
);
uint32_t
target_block_acts_per_scope
;
uint32_t
max_block_acts_per_scope
;
uint32_t
target_block_acts
;
///< regardless of the amount of parallelism, this defines target compute time per block
uint32_t
max_block_acts
;
///< regardless of the amount of parallelism, this maximum compute time per block
uint64_t
max_storage_size
;
uint32_t
max_transaction_lifetime
;
uint32_t
max_transaction_exec_time
;
uint16_t
max_authority_depth
;
uint16_t
max_inline_depth
;
uint32_t
max_inline_action_size
;
uint32_t
max_generated_transaction_size
;
};
void
set_blockchain_parameters
(
const
struct
blockchain_parameters
*
params
);
void
get_blockchain_parameters
(
struct
blockchain_parameters
*
params
);
uint32_t
get_blockchain_parameters_packed
(
char
*
data
,
uint32_t
datalen
);
///@ } privilegedcapi
#ifdef __cplusplus
}
#endif
contracts/eosiolib/privileged.hpp
浏览文件 @
cda36cb9
...
...
@@ -4,7 +4,24 @@
#include "types.h"
namespace
eosio
{
struct
blockchain_parameters
:
::
blockchain_parameters
{
struct
blockchain_parameters
{
uint32_t
target_block_size
;
uint32_t
max_block_size
;
uint32_t
target_block_acts_per_scope
;
uint32_t
max_block_acts_per_scope
;
uint32_t
target_block_acts
;
///< regardless of the amount of parallelism, this defines target compute time per block
uint32_t
max_block_acts
;
///< regardless of the amount of parallelism, this maximum compute time per block
uint64_t
max_storage_size
;
uint32_t
max_transaction_lifetime
;
uint32_t
max_transaction_exec_time
;
uint16_t
max_authority_depth
;
uint16_t
max_inline_depth
;
uint32_t
max_inline_action_size
;
uint32_t
max_generated_transaction_size
;
EOSLIB_SERIALIZE
(
blockchain_parameters
,
(
target_block_size
)(
max_block_size
)(
target_block_acts_per_scope
)
(
max_block_acts_per_scope
)(
target_block_acts
)(
max_block_acts
)(
max_storage_size
)
...
...
@@ -13,6 +30,10 @@ namespace eosio {
)
};
void
set_blockchain_parameters
(
const
eosio
::
blockchain_parameters
&
params
);
void
get_blockchain_parameters
(
eosio
::
blockchain_parameters
&
params
);
struct
producer_key
{
account_name
producer_name
;
public_key
block_signing_key
;
...
...
libraries/chain/wasm_interface.cpp
浏览文件 @
cda36cb9
...
...
@@ -512,7 +512,7 @@ class privileged_api : public context_aware_api {
});
}
in
t
get_blockchain_parameters_packed
(
array_ptr
<
char
>
packed_blockchain_parameters
,
size_t
datalen
)
{
uint32_
t
get_blockchain_parameters_packed
(
array_ptr
<
char
>
packed_blockchain_parameters
,
size_t
datalen
)
{
auto
&
gpo
=
context
.
controller
.
get_global_properties
();
auto
size
=
fc
::
raw
::
pack_size
(
gpo
.
configuration
);
if
(
size
<=
datalen
)
{
...
...
@@ -574,15 +574,15 @@ class softfloat_api : public context_aware_api {
return
a
;
}
// float unops
float32_t
_eosio_f32_abs
(
float32_t
a
)
{
a
.
v
&=
~
(
1
<<
31
);
return
a
;
float32_t
_eosio_f32_abs
(
float32_t
a
)
{
a
.
v
&=
~
(
1
<<
31
);
return
a
;
}
float32_t
_eosio_f32_neg
(
float32_t
a
)
{
float32_t
_eosio_f32_neg
(
float32_t
a
)
{
uint32_t
sign
=
a
.
v
>>
31
;
a
.
v
&=
~
(
1
<<
31
);
a
.
v
&=
~
(
1
<<
31
);
a
.
v
|=
(
!
sign
<<
31
);
return
a
;
return
a
;
}
float32_t
_eosio_f32_sqrt
(
float32_t
a
)
{
return
f32_sqrt
(
a
);
}
// ceil, floor, trunc and nearest are lifted from libc
...
...
@@ -677,15 +677,15 @@ class softfloat_api : public context_aware_api {
}
// double unops
float64_t
_eosio_f64_abs
(
float64_t
a
)
{
a
.
v
&=
~
(
uint64_t
(
1
)
<<
63
);
return
a
;
float64_t
_eosio_f64_abs
(
float64_t
a
)
{
a
.
v
&=
~
(
uint64_t
(
1
)
<<
63
);
return
a
;
}
float64_t
_eosio_f64_neg
(
float64_t
a
)
{
float64_t
_eosio_f64_neg
(
float64_t
a
)
{
uint64_t
sign
=
a
.
v
>>
63
;
a
.
v
&=
~
(
uint64_t
(
1
)
<<
63
);
a
.
v
&=
~
(
uint64_t
(
1
)
<<
63
);
a
.
v
|=
(
uint64_t
(
!
sign
)
<<
63
);
return
a
;
return
a
;
}
float64_t
_eosio_f64_sqrt
(
float64_t
a
)
{
return
f64_sqrt
(
a
);
}
// ceil, floor, trunc and nearest are lifted from libc
...
...
@@ -744,7 +744,7 @@ class softfloat_api : public context_aware_api {
private:
static
constexpr
float32_t
inv_float_eps
=
{
0x4B000000
};
static
constexpr
float32_t
inv_float_eps
=
{
0x4B000000
};
static
constexpr
float64_t
inv_double_eps
=
{
0x4330000000000000
};
};
class
producer_api
:
public
context_aware_api
{
...
...
@@ -1281,58 +1281,58 @@ class compiler_builtins : public context_aware_api {
lhs
%=
rhs
;
ret
=
lhs
;
}
void
__addtf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
void
__addtf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
lb
,
hb
}};
ret
=
f128_add
(
a
,
b
);
ret
=
f128_add
(
a
,
b
);
}
void
__subtf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
void
__subtf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
lb
,
hb
}};
ret
=
f128_sub
(
a
,
b
);
ret
=
f128_sub
(
a
,
b
);
}
void
__multf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
void
__multf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
lb
,
hb
}};
ret
=
f128_mul
(
a
,
b
);
ret
=
f128_mul
(
a
,
b
);
}
void
__divtf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
void
__divtf3
(
float128_t
&
ret
,
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
lb
,
hb
}};
ret
=
f128_div
(
a
,
b
);
ret
=
f128_div
(
a
,
b
);
}
int
__eqtf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__eqtf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
return
f128_eq
(
a
,
b
);
return
f128_eq
(
a
,
b
);
}
int
__netf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__netf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
return
!
f128_eq
(
a
,
b
);
return
!
f128_eq
(
a
,
b
);
}
int
__getf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__getf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
return
!
f128_lt
(
a
,
b
);
return
!
f128_lt
(
a
,
b
);
}
int
__gttf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__gttf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
return
!
f128_lt
(
a
,
b
)
&&
!
f128_eq
(
a
,
b
);
return
!
f128_lt
(
a
,
b
)
&&
!
f128_eq
(
a
,
b
);
}
int
__letf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__letf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
return
f128_le
(
a
,
b
);
return
f128_le
(
a
,
b
);
}
int
__lttf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__lttf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
return
f128_lt
(
a
,
b
);
return
f128_lt
(
a
,
b
);
}
int
__cmptf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__cmptf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
if
(
f128_lt
(
a
,
b
)
)
...
...
@@ -1341,7 +1341,7 @@ class compiler_builtins : public context_aware_api {
return
0
;
return
1
;
}
int
__unordtf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
int
__unordtf2
(
uint64_t
la
,
uint64_t
ha
,
uint64_t
lb
,
uint64_t
hb
)
{
float128_t
a
=
{{
la
,
ha
}};
float128_t
b
=
{{
la
,
ha
}};
if
(
f128_isSignalingNaN
(
a
)
||
f128_isSignalingNaN
(
b
)
)
...
...
@@ -1363,39 +1363,39 @@ class compiler_builtins : public context_aware_api {
return i32_to_f128(i);
}
*/
void
__extendsftf2
(
float128_t
&
ret
,
uint32_t
f
)
{
void
__extendsftf2
(
float128_t
&
ret
,
uint32_t
f
)
{
float32_t
in
=
{
f
};
ret
=
f32_to_f128
(
in
);
ret
=
f32_to_f128
(
in
);
}
void
__extenddftf2
(
float128_t
&
ret
,
float64_t
in
)
{
void
__extenddftf2
(
float128_t
&
ret
,
float64_t
in
)
{
edump
((
"warning in flaot64..."
));
// float64_t in = { f };
ret
=
f64_to_f128
(
in
);
ret
=
f64_to_f128
(
in
);
}
int64_t
__fixtfdi
(
uint64_t
l
,
uint64_t
h
)
{
int64_t
__fixtfdi
(
uint64_t
l
,
uint64_t
h
)
{
float128_t
f
=
{{
l
,
h
}};
return
f128_to_i64
(
f
,
0
,
false
);
}
int32_t
__fixtfsi
(
uint64_t
l
,
uint64_t
h
)
{
return
f128_to_i64
(
f
,
0
,
false
);
}
int32_t
__fixtfsi
(
uint64_t
l
,
uint64_t
h
)
{
float128_t
f
=
{{
l
,
h
}};
return
f128_to_i32
(
f
,
0
,
false
);
}
uint64_t
__fixunstfdi
(
uint64_t
l
,
uint64_t
h
)
{
return
f128_to_i32
(
f
,
0
,
false
);
}
uint64_t
__fixunstfdi
(
uint64_t
l
,
uint64_t
h
)
{
float128_t
f
=
{{
l
,
h
}};
return
f128_to_ui64
(
f
,
0
,
false
);
}
uint32_t
__fixunstfsi
(
uint64_t
l
,
uint64_t
h
)
{
return
f128_to_ui64
(
f
,
0
,
false
);
}
uint32_t
__fixunstfsi
(
uint64_t
l
,
uint64_t
h
)
{
float128_t
f
=
{{
l
,
h
}};
return
f128_to_ui32
(
f
,
0
,
false
);
}
uint64_t
__trunctfdf2
(
uint64_t
l
,
uint64_t
h
)
{
return
f128_to_ui32
(
f
,
0
,
false
);
}
uint64_t
__trunctfdf2
(
uint64_t
l
,
uint64_t
h
)
{
float128_t
f
=
{{
l
,
h
}};
return
f128_to_f64
(
f
).
v
;
}
uint32_t
__trunctfsf2
(
uint64_t
l
,
uint64_t
h
)
{
return
f128_to_f64
(
f
).
v
;
}
uint32_t
__trunctfsf2
(
uint64_t
l
,
uint64_t
h
)
{
float128_t
f
=
{{
l
,
h
}};
return
f128_to_f32
(
f
).
v
;
}
return
f128_to_f32
(
f
).
v
;
}
static
constexpr
uint32_t
SHIFT_WIDTH
=
(
sizeof
(
uint64_t
)
*
8
)
-
1
;
};
...
...
@@ -1510,8 +1510,8 @@ REGISTER_INTRINSICS(compiler_builtins,
(
__floatsitf
,
void
(
int
,
int
)
)
(
__floatunsitf
,
void
(
int
,
int
)
)
(
__floatsidf
,
float64_t
(
int
)
)
(
__extendsftf2
,
void
(
int
,
int
)
)
(
__extenddftf2
,
void
(
int
,
float64_t
)
)
(
__extendsftf2
,
void
(
int
,
int
)
)
(
__extenddftf2
,
void
(
int
,
float64_t
)
)
(
__fixtfdi
,
int64_t
(
int64_t
,
int64_t
)
)
(
__fixtfsi
,
int
(
int64_t
,
int64_t
)
)
(
__fixunstfdi
,
int64_t
(
int64_t
,
int64_t
)
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录