Adding __attribute_pure__ and __attribute_const__ to some routines that operate on bit-fields.
This commit is contained in:
@@ -34,6 +34,12 @@ typedef signed long ssize_t;
|
||||
#define __packed __attribute__((packed))
|
||||
#define __noreturn __attribute__((noreturn))
|
||||
#define __noinline __attribute__((noinline))
|
||||
#ifndef __attribute_const__
|
||||
# define __attribute_const__ __attribute__((const))
|
||||
#endif /* !__attribute_const__ */
|
||||
#ifndef __attribute_pure__
|
||||
# define __attribute_pure__ __attribute__((pure))
|
||||
#endif /* !__attribute_pure__ */
|
||||
|
||||
/**
|
||||
* Constants
|
||||
|
||||
@@ -170,8 +170,8 @@ ecma_create_object_lex_env (ecma_object_t *outer_lexical_environment_p, /**< out
|
||||
/**
|
||||
* Check if the object is lexical environment.
|
||||
*/
|
||||
bool
|
||||
ecma_is_lexical_environment (ecma_object_t *object_p) /**< object or lexical environment */
|
||||
bool __attribute_pure__
|
||||
ecma_is_lexical_environment (const ecma_object_t *object_p) /**< object or lexical environment */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
|
||||
@@ -183,8 +183,8 @@ ecma_is_lexical_environment (ecma_object_t *object_p) /**< object or lexical env
|
||||
/**
|
||||
* Get value of [[Extensible]] object's internal property.
|
||||
*/
|
||||
bool
|
||||
ecma_get_object_extensible (ecma_object_t *object_p) /**< object */
|
||||
bool __attribute_pure__
|
||||
ecma_get_object_extensible (const ecma_object_t *object_p) /**< object */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
JERRY_ASSERT (!ecma_is_lexical_environment (object_p));
|
||||
@@ -213,8 +213,8 @@ ecma_set_object_extensible (ecma_object_t *object_p, /**< object */
|
||||
/**
|
||||
* Get object's internal implementation-defined type.
|
||||
*/
|
||||
ecma_object_type_t
|
||||
ecma_get_object_type (ecma_object_t *object_p) /**< object */
|
||||
ecma_object_type_t __attribute_pure__
|
||||
ecma_get_object_type (const ecma_object_t *object_p) /**< object */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
JERRY_ASSERT (!ecma_is_lexical_environment (object_p));
|
||||
@@ -243,8 +243,8 @@ ecma_set_object_type (ecma_object_t *object_p, /**< object */
|
||||
/**
|
||||
* Get object's prototype.
|
||||
*/
|
||||
ecma_object_t*
|
||||
ecma_get_object_prototype (ecma_object_t *object_p) /**< object */
|
||||
ecma_object_t* __attribute_pure__
|
||||
ecma_get_object_prototype (const ecma_object_t *object_p) /**< object */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
JERRY_ASSERT (!ecma_is_lexical_environment (object_p));
|
||||
@@ -261,8 +261,8 @@ ecma_get_object_prototype (ecma_object_t *object_p) /**< object */
|
||||
*
|
||||
* @return true / false
|
||||
*/
|
||||
bool
|
||||
ecma_get_object_is_builtin (ecma_object_t *object_p) /**< object */
|
||||
bool __attribute_pure__
|
||||
ecma_get_object_is_builtin (const ecma_object_t *object_p) /**< object */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
JERRY_ASSERT (!ecma_is_lexical_environment (object_p));
|
||||
@@ -301,8 +301,8 @@ ecma_set_object_is_builtin (ecma_object_t *object_p, /**< object */
|
||||
/**
|
||||
* Get type of lexical environment.
|
||||
*/
|
||||
ecma_lexical_environment_type_t
|
||||
ecma_get_lex_env_type (ecma_object_t *object_p) /**< lexical environment */
|
||||
ecma_lexical_environment_type_t __attribute_pure__
|
||||
ecma_get_lex_env_type (const ecma_object_t *object_p) /**< lexical environment */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
JERRY_ASSERT (ecma_is_lexical_environment (object_p));
|
||||
@@ -315,8 +315,8 @@ ecma_get_lex_env_type (ecma_object_t *object_p) /**< lexical environment */
|
||||
/**
|
||||
* Get outer reference of lexical environment.
|
||||
*/
|
||||
ecma_object_t*
|
||||
ecma_get_lex_env_outer_reference (ecma_object_t *object_p) /**< lexical environment */
|
||||
ecma_object_t* __attribute_pure__
|
||||
ecma_get_lex_env_outer_reference (const ecma_object_t *object_p) /**< lexical environment */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
JERRY_ASSERT (ecma_is_lexical_environment (object_p));
|
||||
@@ -331,8 +331,8 @@ ecma_get_lex_env_outer_reference (ecma_object_t *object_p) /**< lexical environm
|
||||
/**
|
||||
* Get object's/lexical environment's property list.
|
||||
*/
|
||||
ecma_property_t*
|
||||
ecma_get_property_list (ecma_object_t *object_p) /**< object or lexical environment */
|
||||
ecma_property_t* __attribute_pure__
|
||||
ecma_get_property_list (const ecma_object_t *object_p) /**< object or lexical environment */
|
||||
{
|
||||
JERRY_ASSERT (object_p != NULL);
|
||||
|
||||
|
||||
@@ -197,18 +197,18 @@ extern ecma_object_t* ecma_create_decl_lex_env (ecma_object_t *outer_lexical_env
|
||||
extern ecma_object_t* ecma_create_object_lex_env (ecma_object_t *outer_lexical_environment_p,
|
||||
ecma_object_t *binding_obj_p,
|
||||
bool provide_this);
|
||||
extern bool ecma_is_lexical_environment (ecma_object_t *object_p);
|
||||
extern bool ecma_get_object_extensible (ecma_object_t *object_p);
|
||||
extern bool __attribute_pure__ ecma_is_lexical_environment (const ecma_object_t *object_p);
|
||||
extern bool __attribute_pure__ ecma_get_object_extensible (const ecma_object_t *object_p);
|
||||
extern void ecma_set_object_extensible (ecma_object_t *object_p, bool is_extensible);
|
||||
extern ecma_object_type_t ecma_get_object_type (ecma_object_t *object_p);
|
||||
extern ecma_object_type_t __attribute_pure__ ecma_get_object_type (const ecma_object_t *object_p);
|
||||
extern void ecma_set_object_type (ecma_object_t *object_p, ecma_object_type_t type);
|
||||
extern ecma_object_t* ecma_get_object_prototype (ecma_object_t *object_p);
|
||||
extern bool ecma_get_object_is_builtin (ecma_object_t *object_p);
|
||||
extern ecma_object_t* __attribute_pure__ ecma_get_object_prototype (const ecma_object_t *object_p);
|
||||
extern bool __attribute_pure__ ecma_get_object_is_builtin (const ecma_object_t *object_p);
|
||||
extern void ecma_set_object_is_builtin (ecma_object_t *object_p,
|
||||
bool is_builtin);
|
||||
extern ecma_lexical_environment_type_t ecma_get_lex_env_type (ecma_object_t *object_p);
|
||||
extern ecma_object_t *ecma_get_lex_env_outer_reference (ecma_object_t *object_p);
|
||||
extern ecma_property_t *ecma_get_property_list (ecma_object_t *object_p);
|
||||
extern ecma_lexical_environment_type_t __attribute_pure__ ecma_get_lex_env_type (const ecma_object_t *object_p);
|
||||
extern ecma_object_t* __attribute_pure__ ecma_get_lex_env_outer_reference (const ecma_object_t *object_p);
|
||||
extern ecma_property_t* __attribute_pure__ ecma_get_property_list (const ecma_object_t *object_p);
|
||||
|
||||
extern ecma_property_t* ecma_create_internal_property (ecma_object_t *object_p,
|
||||
ecma_internal_property_id_t property_id);
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
*
|
||||
* @return bit-field's value
|
||||
*/
|
||||
extern uint64_t
|
||||
uint64_t __attribute_const__
|
||||
jrt_extract_bit_field (uint64_t container, /**< container to extract bit-field from */
|
||||
uint32_t lsb, /**< least significant bit of the value
|
||||
* to be extracted */
|
||||
@@ -42,7 +42,7 @@ jrt_extract_bit_field (uint64_t container, /**< container to extract bit-field f
|
||||
*
|
||||
* @return bit-field's value
|
||||
*/
|
||||
extern uint64_t
|
||||
uint64_t __attribute_const__
|
||||
jrt_set_bit_field_value (uint64_t container, /**< container to insert bit-field to */
|
||||
uint64_t new_bit_field_value, /**< value of bit-field to insert */
|
||||
uint32_t lsb, /**< least significant bit of the value
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
#ifndef JERRY_BIT_FIELDS_H
|
||||
#define JERRY_BIT_FIELDS_H
|
||||
|
||||
extern uint64_t jrt_extract_bit_field (uint64_t value, uint32_t lsb,
|
||||
uint32_t width);
|
||||
extern uint64_t jrt_set_bit_field_value (uint64_t value, uint64_t bit_field_value,
|
||||
uint32_t lsb, uint32_t width);
|
||||
extern uint64_t __attribute_const__ jrt_extract_bit_field (uint64_t value, uint32_t lsb,
|
||||
uint32_t width);
|
||||
extern uint64_t __attribute_const__ jrt_set_bit_field_value (uint64_t value, uint64_t bit_field_value,
|
||||
uint32_t lsb, uint32_t width);
|
||||
|
||||
#endif /* !JERRY_BIT_FIELDS_H */
|
||||
|
||||
Reference in New Issue
Block a user