Switching to g++ and corresponding changes according to C++ requirements.

This commit is contained in:
Ruben Ayrapetyan
2015-01-16 12:53:41 +03:00
parent 557df54f9d
commit 005b5370fc
57 changed files with 883 additions and 666 deletions
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright 2014 Samsung Electronics Co., Ltd.
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -302,7 +302,8 @@ ecma_function_call_setup_args_variables (ecma_object_t *func_obj_p, /**< Functio
ecma_property_t *formal_parameters_prop_p = ecma_get_internal_property (func_obj_p,
ECMA_INTERNAL_PROPERTY_FORMAL_PARAMETERS);
ecma_collection_header_t *formal_parameters_p;
formal_parameters_p = ECMA_GET_POINTER (formal_parameters_prop_p->u.internal_property.value);
formal_parameters_p = ECMA_GET_POINTER (ecma_collection_header_t,
formal_parameters_prop_p->u.internal_property.value);
if (formal_parameters_p == NULL)
{
@@ -479,7 +480,8 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */
ecma_property_t *scope_prop_p = ecma_get_internal_property (func_obj_p, ECMA_INTERNAL_PROPERTY_SCOPE);
ecma_property_t *code_prop_p = ecma_get_internal_property (func_obj_p, ECMA_INTERNAL_PROPERTY_CODE);
ecma_object_t *scope_p = ECMA_GET_NON_NULL_POINTER(scope_prop_p->u.internal_property.value);
ecma_object_t *scope_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
scope_prop_p->u.internal_property.value);
uint32_t code_prop_value = code_prop_p->u.internal_property.value;
bool is_strict;
+11 -6
View File
@@ -1,4 +1,4 @@
/* Copyright 2014 Samsung Electronics Co., Ltd.
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -98,7 +98,8 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */
JERRY_ASSERT(obj_p != NULL
&& !ecma_is_lexical_environment (obj_p));
return ecma_op_object_get (obj_p, ECMA_GET_NON_NULL_POINTER (ref.referenced_name_cp));
return ecma_op_object_get (obj_p, ECMA_GET_NON_NULL_POINTER (ecma_string_t,
ref.referenced_name_cp));
}
else
{
@@ -111,7 +112,8 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */
JERRY_ASSERT (obj_p != NULL
&& !ecma_is_lexical_environment (obj_p));
ret_value = ecma_op_object_get (obj_p, ECMA_GET_NON_NULL_POINTER (ref.referenced_name_cp));
ret_value = ecma_op_object_get (obj_p, ECMA_GET_NON_NULL_POINTER (ecma_string_t,
ref.referenced_name_cp));
ECMA_FINALIZE (obj_base);
@@ -229,7 +231,8 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */
ECMA_TRY_CATCH (put_completion,
ecma_op_object_put (obj_p,
ECMA_GET_NON_NULL_POINTER (ref.referenced_name_cp),
ECMA_GET_NON_NULL_POINTER (ecma_string_t,
ref.referenced_name_cp),
value,
ref.is_strict),
ret_value);
@@ -252,7 +255,8 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */
JERRY_ASSERT (obj_p != NULL
&& !ecma_is_lexical_environment (obj_p));
ecma_string_t *referenced_name_p = ECMA_GET_NON_NULL_POINTER (ref.referenced_name_cp);
ecma_string_t *referenced_name_p = ECMA_GET_NON_NULL_POINTER (ecma_string_t,
ref.referenced_name_cp);
// sub_2.
if (!ecma_op_object_can_put (obj_p, referenced_name_p))
@@ -280,7 +284,8 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */
// sub_6.
JERRY_ASSERT (prop_p != NULL && prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR);
ecma_object_t *setter_p = ECMA_GET_NON_NULL_POINTER(prop_p->u.named_accessor_property.set_p);
ecma_object_t *setter_p = ECMA_GET_NON_NULL_POINTER(ecma_object_t,
prop_p->u.named_accessor_property.set_p);
JERRY_ASSERT (setter_p != NULL);
ECMA_TRY_CATCH (call_completion,
+1 -1
View File
@@ -53,7 +53,7 @@ ecma_finalize (void)
ecma_stack_finalize ();
ecma_finalize_builtins ();
ecma_lcache_invalidate_all ();
ecma_gc_run (ECMA_GC_GEN_COUNT - 1);
ecma_gc_run ((ecma_gc_gen_t) (ECMA_GC_GEN_COUNT - 1));
} /* ecma_finalize */
/**
+11 -6
View File
@@ -1,4 +1,4 @@
/* Copyright 2014 Samsung Electronics Co., Ltd.
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -281,7 +281,8 @@ ecma_arguments_get_mapped_arg_value (ecma_object_t *map_p, /**< [[ParametersMap]
equal to mapped argument's name */
{
ecma_property_t *scope_prop_p = ecma_get_internal_property (map_p, ECMA_INTERNAL_PROPERTY_SCOPE);
ecma_object_t *lex_env_p = ECMA_GET_NON_NULL_POINTER (scope_prop_p->u.internal_property.value);
ecma_object_t *lex_env_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
scope_prop_p->u.internal_property.value);
JERRY_ASSERT(lex_env_p != NULL
&& ecma_is_lexical_environment (lex_env_p));
@@ -313,7 +314,8 @@ ecma_op_arguments_object_get (ecma_object_t *obj_p, /**< the object */
{
// 1.
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (map_prop_p->u.internal_property.value);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
map_prop_p->u.internal_property.value);
// 2.
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
@@ -358,7 +360,8 @@ ecma_op_arguments_object_get_own_property (ecma_object_t *obj_p, /**< the object
// 3.
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (map_prop_p->u.internal_property.value);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
map_prop_p->u.internal_property.value);
// 4.
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
@@ -397,7 +400,8 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj
{
// 1.
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (map_prop_p->u.internal_property.value);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
map_prop_p->u.internal_property.value);
// 2.
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
@@ -490,7 +494,8 @@ ecma_op_arguments_object_delete (ecma_object_t *obj_p, /**< the object */
{
// 1.
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (map_prop_p->u.internal_property.value);
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
map_prop_p->u.internal_property.value);
// 2.
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
+17 -9
View File
@@ -1,4 +1,4 @@
/* Copyright 2014 Samsung Electronics Co., Ltd.
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -140,7 +140,8 @@ ecma_op_general_object_get (ecma_object_t *obj_p, /**< the object */
else
{
// 4.
ecma_object_t *getter_p = ECMA_GET_POINTER(prop_p->u.named_accessor_property.get_p);
ecma_object_t *getter_p = ECMA_GET_POINTER (ecma_object_t,
prop_p->u.named_accessor_property.get_p);
// 5.
if (getter_p == NULL)
@@ -285,7 +286,8 @@ ecma_op_general_object_put (ecma_object_t *obj_p, /**< the object */
&& desc_p->type == ECMA_PROPERTY_NAMEDACCESSOR)
{
// a.
ecma_object_t *setter_p = ECMA_GET_NON_NULL_POINTER(desc_p->u.named_accessor_property.set_p);
ecma_object_t *setter_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
desc_p->u.named_accessor_property.set_p);
JERRY_ASSERT(setter_p != NULL);
ecma_completion_value_t ret_value;
@@ -360,7 +362,8 @@ ecma_op_general_object_can_put (ecma_object_t *obj_p, /**< the object */
// a.
if (prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR)
{
ecma_object_t *setter_p = ECMA_GET_POINTER(prop_p->u.named_accessor_property.set_p);
ecma_object_t *setter_p = ECMA_GET_POINTER (ecma_object_t,
prop_p->u.named_accessor_property.set_p);
// i.
if (setter_p == NULL)
@@ -402,7 +405,8 @@ ecma_op_general_object_can_put (ecma_object_t *obj_p, /**< the object */
// 7.
if (inherited_p->type == ECMA_PROPERTY_NAMEDACCESSOR)
{
ecma_object_t *setter_p = ECMA_GET_POINTER(inherited_p->u.named_accessor_property.set_p);
ecma_object_t *setter_p = ECMA_GET_POINTER (ecma_object_t,
inherited_p->u.named_accessor_property.set_p);
// a.
if (setter_p == NULL)
@@ -684,7 +688,8 @@ ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the objec
if (property_desc_p->is_get_defined)
{
if (!is_current_accessor_descriptor
|| property_desc_p->get_p != ECMA_GET_POINTER(current_p->u.named_accessor_property.get_p))
|| property_desc_p->get_p != ECMA_GET_POINTER (ecma_object_t,
current_p->u.named_accessor_property.get_p))
{
is_every_field_in_desc_also_occurs_in_current_desc_with_same_value = false;
}
@@ -693,7 +698,8 @@ ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the objec
if (property_desc_p->is_set_defined)
{
if (!is_current_accessor_descriptor
|| property_desc_p->set_p != ECMA_GET_POINTER(current_p->u.named_accessor_property.set_p))
|| property_desc_p->set_p != ECMA_GET_POINTER (ecma_object_t,
current_p->u.named_accessor_property.set_p))
{
is_every_field_in_desc_also_occurs_in_current_desc_with_same_value = false;
}
@@ -805,9 +811,11 @@ ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the objec
// a.
if ((property_desc_p->is_get_defined
&& property_desc_p->get_p != ECMA_GET_POINTER(current_p->u.named_accessor_property.get_p))
&& property_desc_p->get_p != ECMA_GET_POINTER (ecma_object_t,
current_p->u.named_accessor_property.get_p))
|| (property_desc_p->is_set_defined
&& property_desc_p->set_p != ECMA_GET_POINTER(current_p->u.named_accessor_property.set_p)))
&& property_desc_p->set_p != ECMA_GET_POINTER (ecma_object_t,
current_p->u.named_accessor_property.set_p)))
{
// i., ii.
return ecma_reject (is_throw);
+119 -52
View File
@@ -1,4 +1,4 @@
/* Copyright 2014 Samsung Electronics Co., Ltd.
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -51,19 +51,30 @@ ecma_op_object_get (ecma_object_t *obj_p, /**< the object */
const ecma_object_type_t type = ecma_get_object_type (obj_p);
JERRY_ASSERT (type < ECMA_OBJECT_TYPE__COUNT);
typedef ecma_completion_value_t (*get_ptr_t) (ecma_object_t *, ecma_string_t *);
static const get_ptr_t get [ECMA_OBJECT_TYPE__COUNT] =
switch (type)
{
[ECMA_OBJECT_TYPE_GENERAL] = &ecma_op_general_object_get,
[ECMA_OBJECT_TYPE_ARRAY] = &ecma_op_general_object_get,
[ECMA_OBJECT_TYPE_FUNCTION] = &ecma_op_general_object_get,
[ECMA_OBJECT_TYPE_BOUND_FUNCTION] = &ecma_op_general_object_get,
[ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION] = &ecma_op_general_object_get,
[ECMA_OBJECT_TYPE_STRING] = &ecma_op_general_object_get,
[ECMA_OBJECT_TYPE_ARGUMENTS] = &ecma_op_arguments_object_get
};
case ECMA_OBJECT_TYPE_GENERAL:
case ECMA_OBJECT_TYPE_ARRAY:
case ECMA_OBJECT_TYPE_FUNCTION:
case ECMA_OBJECT_TYPE_BOUND_FUNCTION:
case ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION:
case ECMA_OBJECT_TYPE_STRING:
{
return ecma_op_general_object_get (obj_p, property_name_p);
}
return get[type] (obj_p, property_name_p);
case ECMA_OBJECT_TYPE_ARGUMENTS:
{
return ecma_op_arguments_object_get (obj_p, property_name_p);
}
default:
{
JERRY_ASSERT (false);
return ecma_make_empty_completion_value ();
}
}
} /* ecma_op_object_get */
/**
@@ -81,19 +92,42 @@ ecma_op_object_get_own_property_longpath (ecma_object_t *obj_p, /**< the object
const bool is_builtin = ecma_get_object_is_builtin (obj_p);
typedef ecma_property_t* (*get_own_property_ptr_t) (ecma_object_t *, ecma_string_t *);
static const get_own_property_ptr_t get_own_property [ECMA_OBJECT_TYPE__COUNT] =
{
[ECMA_OBJECT_TYPE_GENERAL] = &ecma_op_general_object_get_own_property,
[ECMA_OBJECT_TYPE_ARRAY] = &ecma_op_general_object_get_own_property,
[ECMA_OBJECT_TYPE_FUNCTION] = &ecma_op_general_object_get_own_property,
[ECMA_OBJECT_TYPE_BOUND_FUNCTION] = &ecma_op_general_object_get_own_property,
[ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION] = &ecma_op_general_object_get_own_property,
[ECMA_OBJECT_TYPE_ARGUMENTS] = &ecma_op_arguments_object_get_own_property,
[ECMA_OBJECT_TYPE_STRING] = &ecma_op_string_object_get_own_property
};
ecma_property_t *prop_p;
ecma_property_t *prop_p = get_own_property[type] (obj_p, property_name_p);
switch (type)
{
case ECMA_OBJECT_TYPE_GENERAL:
case ECMA_OBJECT_TYPE_ARRAY:
case ECMA_OBJECT_TYPE_FUNCTION:
case ECMA_OBJECT_TYPE_BOUND_FUNCTION:
case ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION:
{
prop_p = ecma_op_general_object_get_own_property (obj_p, property_name_p);
break;
}
case ECMA_OBJECT_TYPE_STRING:
{
prop_p = ecma_op_string_object_get_own_property (obj_p, property_name_p);
break;
}
case ECMA_OBJECT_TYPE_ARGUMENTS:
{
prop_p = ecma_op_arguments_object_get_own_property (obj_p, property_name_p);
break;
}
default:
{
JERRY_ASSERT (false);
return NULL;
}
}
if (unlikely (prop_p == NULL))
{
@@ -276,19 +310,34 @@ ecma_op_object_delete (ecma_object_t *obj_p, /**< the object */
const ecma_object_type_t type = ecma_get_object_type (obj_p);
JERRY_ASSERT (type < ECMA_OBJECT_TYPE__COUNT);
typedef ecma_completion_value_t (*delete_ptr_t) (ecma_object_t *, ecma_string_t *, bool);
static const delete_ptr_t delete [ECMA_OBJECT_TYPE__COUNT] =
switch (type)
{
[ECMA_OBJECT_TYPE_GENERAL] = &ecma_op_general_object_delete,
[ECMA_OBJECT_TYPE_ARRAY] = &ecma_op_general_object_delete,
[ECMA_OBJECT_TYPE_FUNCTION] = &ecma_op_general_object_delete,
[ECMA_OBJECT_TYPE_BOUND_FUNCTION] = &ecma_op_general_object_delete,
[ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION] = &ecma_op_general_object_delete,
[ECMA_OBJECT_TYPE_STRING] = &ecma_op_general_object_delete,
[ECMA_OBJECT_TYPE_ARGUMENTS] = &ecma_op_arguments_object_delete
};
case ECMA_OBJECT_TYPE_GENERAL:
case ECMA_OBJECT_TYPE_ARRAY:
case ECMA_OBJECT_TYPE_FUNCTION:
case ECMA_OBJECT_TYPE_BOUND_FUNCTION:
case ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION:
case ECMA_OBJECT_TYPE_STRING:
{
return ecma_op_general_object_delete (obj_p,
property_name_p,
is_throw);
}
return delete[type] (obj_p, property_name_p, is_throw);
case ECMA_OBJECT_TYPE_ARGUMENTS:
{
return ecma_op_arguments_object_delete (obj_p,
property_name_p,
is_throw);
}
default:
{
JERRY_ASSERT (false);
return ecma_make_empty_completion_value ();
}
}
} /* ecma_op_object_delete */
/**
@@ -352,25 +401,43 @@ ecma_op_object_define_own_property (ecma_object_t *obj_p, /**< the object */
const ecma_object_type_t type = ecma_get_object_type (obj_p);
JERRY_ASSERT (type < ECMA_OBJECT_TYPE__COUNT);
typedef ecma_completion_value_t (*define_own_property_ptr_t) (ecma_object_t *,
ecma_string_t *,
const ecma_property_descriptor_t*,
bool);
static const define_own_property_ptr_t define_own_property [ECMA_OBJECT_TYPE__COUNT] =
switch (type)
{
[ECMA_OBJECT_TYPE_GENERAL] = &ecma_op_general_object_define_own_property,
[ECMA_OBJECT_TYPE_FUNCTION] = &ecma_op_general_object_define_own_property,
[ECMA_OBJECT_TYPE_BOUND_FUNCTION] = &ecma_op_general_object_define_own_property,
[ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION] = &ecma_op_general_object_define_own_property,
[ECMA_OBJECT_TYPE_STRING] = &ecma_op_general_object_define_own_property,
[ECMA_OBJECT_TYPE_ARRAY] = &ecma_op_array_object_define_own_property,
[ECMA_OBJECT_TYPE_ARGUMENTS] = &ecma_op_arguments_object_define_own_property
};
case ECMA_OBJECT_TYPE_GENERAL:
case ECMA_OBJECT_TYPE_FUNCTION:
case ECMA_OBJECT_TYPE_BOUND_FUNCTION:
case ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION:
case ECMA_OBJECT_TYPE_STRING:
{
return ecma_op_general_object_define_own_property (obj_p,
property_name_p,
property_desc_p,
is_throw);
}
return define_own_property[type] (obj_p,
property_name_p,
property_desc_p,
is_throw);
case ECMA_OBJECT_TYPE_ARRAY:
{
return ecma_op_array_object_define_own_property (obj_p,
property_name_p,
property_desc_p,
is_throw);
}
case ECMA_OBJECT_TYPE_ARGUMENTS:
{
return ecma_op_arguments_object_define_own_property (obj_p,
property_name_p,
property_desc_p,
is_throw);
}
default:
{
JERRY_ASSERT (false);
return ecma_make_empty_completion_value ();
}
}
} /* ecma_op_object_define_own_property */
/**
+6 -7
View File
@@ -1,4 +1,4 @@
/* Copyright 2014 Samsung Electronics Co., Ltd.
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -99,11 +99,9 @@ ecma_make_reference (ecma_value_t base, /**< base value */
{
name_p = ecma_copy_or_ref_ecma_string (name_p);
ecma_reference_t ref = (ecma_reference_t)
{
.base = ecma_copy_value (base, true),
.is_strict = is_strict
};
ecma_reference_t ref;
ref.base = ecma_copy_value (base, true);
ref.is_strict = is_strict;
ECMA_SET_POINTER (ref.referenced_name_cp, name_p);
@@ -120,7 +118,8 @@ void
ecma_free_reference (ecma_reference_t ref) /**< reference */
{
ecma_free_value (ref.base, true);
ecma_deref_ecma_string (ECMA_GET_NON_NULL_POINTER (ref.referenced_name_cp));
ecma_deref_ecma_string (ECMA_GET_NON_NULL_POINTER (ecma_string_t,
ref.referenced_name_cp));
} /* ecma_free_reference */
/**
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright 2014 Samsung Electronics Co., Ltd.
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -167,7 +167,8 @@ ecma_op_string_object_get_own_property (ecma_object_t *obj_p, /**< the array obj
// 4.
ecma_property_t* prim_value_prop_p = ecma_get_internal_property (obj_p,
ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE);
ecma_string_t *prim_value_str_p = ECMA_GET_NON_NULL_POINTER (prim_value_prop_p->u.internal_property.value);
ecma_string_t *prim_value_str_p = ECMA_GET_NON_NULL_POINTER (ecma_string_t,
prim_value_prop_p->u.internal_property.value);
// 6.
int32_t length = ecma_string_get_length (prim_value_str_p);