Adding __attribute_pure__ and __attribute_const__ to some routines that operate on bit-fields.

This commit is contained in:
Ruben Ayrapetyan
2014-11-11 18:35:09 +03:00
parent bd60d1874b
commit afe242e7a3
5 changed files with 36 additions and 30 deletions
+6
View File
@@ -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
+16 -16
View File
@@ -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);
+8 -8
View File
@@ -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);
+2 -2
View File
@@ -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
+4 -4
View File
@@ -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 */