Introducing ecma_is_string_magic, ecma_init and ecma_finalize interfaces, 'magic-string' container type for ecma-strings. Renaming ecma_is_magic_string to ecma_is_zt_string_magic. Moving magic-string related routines to ecma-helpers-string.c.

This commit is contained in:
Ruben Ayrapetyan
2014-09-19 12:08:19 +04:00
parent 9a667596de
commit 7fc3b178d8
17 changed files with 260 additions and 199 deletions
+2 -2
View File
@@ -348,7 +348,7 @@ run_int (void)
start_pos++;
}
ecma_init_builtins ();
ecma_init ();
ecma_object_t *glob_obj_p = ecma_builtin_get_global_object ();
@@ -372,7 +372,7 @@ run_int (void)
{
ecma_deref_object (glob_obj_p);
ecma_deref_object (lex_env_p);
ecma_finalize_builtins ();
ecma_finalize ();
ecma_gc_run (ECMA_GC_GEN_COUNT - 1);
return ecma_is_value_true (completion.u.value);
+4 -3
View File
@@ -24,12 +24,13 @@
#include "ecma-function-object.h"
#include "ecma-gc.h"
#include "ecma-helpers.h"
#include "ecma-magic-strings.h"
#include "ecma-lex-env.h"
#include "ecma-number-arithmetic.h"
#include "ecma-operations.h"
#include "ecma-try-catch-macro.h"
#include "ecma-objects.h"
#include "ecma-objects-general.h"
#include "ecma-operations.h"
#include "ecma-reference.h"
#include "ecma-try-catch-macro.h"
bool is_reg_variable (int_data_t *int_data, idx_t var_idx);
ecma_completion_value_t get_variable_value (int_data_t *, idx_t, bool);
@@ -18,7 +18,6 @@
#include "ecma-gc.h"
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-magic-strings.h"
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
-1
View File
@@ -17,7 +17,6 @@
#include "ecma-builtins.h"
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-magic-strings.h"
#include "ecma-objects.h"
#include "jrt-bit-fields.h"
+30 -1
View File
@@ -615,7 +615,8 @@ typedef enum
stored locally in the string's descriptor */
ECMA_STRING_CONTAINER_UINT32_IN_DESC, /**< actual data is UInt32-represeneted Number
stored locally in the string's descriptor */
ECMA_STRING_CONTAINER_CONCATENATION /**< the ecma-string is concatenation of two specified ecma-strings */
ECMA_STRING_CONTAINER_CONCATENATION, /**< the ecma-string is concatenation of two specified ecma-strings */
ECMA_STRING_CONTAINER_MAGIC_STRING /**< the ecma-string is equal to one of ECMA magic strings */
} ecma_string_container_t;
FIXME (Move to library that should define the type (libserializer /* ? */))
@@ -624,6 +625,31 @@ FIXME (Move to library that should define the type (libserializer /* ? */))
*/
typedef uint32_t literal_index_t;
/**
* Identifiers of ECMA magic string constants
*/
typedef enum
{
ECMA_MAGIC_STRING_ARGUMENTS, /**< "arguments" */
ECMA_MAGIC_STRING_EVAL, /**< "eval" */
ECMA_MAGIC_STRING_PROTOTYPE, /**< "prototype" */
ECMA_MAGIC_STRING_CONSTRUCTOR, /**< "constructor" */
ECMA_MAGIC_STRING_CALLER, /**< "caller" */
ECMA_MAGIC_STRING_CALLEE, /**< "callee" */
ECMA_MAGIC_STRING_UNDEFINED, /**< "undefined" */
ECMA_MAGIC_STRING_NULL, /**< "null" */
ECMA_MAGIC_STRING_FALSE, /**< "false" */
ECMA_MAGIC_STRING_TRUE, /**< "true" */
ECMA_MAGIC_STRING_NUMBER, /**< "number" */
ECMA_MAGIC_STRING_STRING, /**< "string" */
ECMA_MAGIC_STRING_OBJECT, /**< "object" */
ECMA_MAGIC_STRING_FUNCTION, /**< "function" */
ECMA_MAGIC_STRING_LENGTH, /**< "length" */
ECMA_MAGIC_STRING_NAN, /**< "NaN" */
ECMA_MAGIC_STRING_INFINITY, /**< "Infinity" */
ECMA_MAGIC_STRING__COUNT /**< number of magic strings */
} ecma_magic_string_id_t;
/**
* ECMA string-value descriptor
*/
@@ -664,6 +690,9 @@ typedef struct
unsigned int string1_cp : ECMA_POINTER_FIELD_WIDTH;
unsigned int string2_cp : ECMA_POINTER_FIELD_WIDTH;
} concatenation;
/** Identifier of magic string */
ecma_magic_string_id_t magic_string_id;
} u;
} ecma_string_t;
@@ -22,7 +22,6 @@
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-magic-strings.h"
#include "jerry-libc.h"
/**
+181 -1
View File
@@ -45,6 +45,36 @@
JERRY_STATIC_ASSERT ((uint32_t) ((int32_t) ECMA_STRING_MAX_CONCATENATION_LENGTH) ==
ECMA_STRING_MAX_CONCATENATION_LENGTH);
/**
* Lengths of magic strings
*/
static ecma_length_t ecma_magic_string_lengths [ECMA_MAGIC_STRING__COUNT];
/**
* Maximum length among lengths of magic strings
*/
static ecma_length_t ecma_magic_string_max_length;
/**
* Initialize data for string helpers
*/
void
ecma_strings_init (void)
{
/* Initializing magic strings information */
ecma_magic_string_max_length = 0;
for (ecma_magic_string_id_t id = 0;
id < ECMA_MAGIC_STRING__COUNT;
id++)
{
ecma_magic_string_lengths [id] = ecma_zt_string_length (ecma_get_magic_string_zt (id));
ecma_magic_string_max_length = JERRY_MAX (ecma_magic_string_max_length, ecma_magic_string_lengths [id]);
}
} /* ecma_strings_init */
/**
* Allocate new ecma-string and fill it with characters from specified buffer
*
@@ -180,7 +210,7 @@ ecma_new_ecma_string_from_number (ecma_number_t num) /**< ecma-number */
} /* ecma_new_ecma_string_from_number */
/**
* Allocate new ecma-string and fill it with reference string literal
* Allocate new ecma-string and fill it with reference to string literal
*
* @return pointer to ecma-string descriptor
*/
@@ -320,6 +350,7 @@ ecma_deref_ecma_string (ecma_string_t *string_p) /**< ecma-string */
case ECMA_STRING_CONTAINER_CHARS_IN_DESC:
case ECMA_STRING_CONTAINER_LIT_TABLE:
case ECMA_STRING_CONTAINER_UINT32_IN_DESC:
case ECMA_STRING_CONTAINER_MAGIC_STRING:
{
/* only the string descriptor itself should be freed */
}
@@ -356,6 +387,7 @@ ecma_string_to_number (const ecma_string_t *str_p) /**< ecma-string */
case ECMA_STRING_CONTAINER_LIT_TABLE:
case ECMA_STRING_CONTAINER_HEAP_CHUNKS:
case ECMA_STRING_CONTAINER_CONCATENATION:
case ECMA_STRING_CONTAINER_MAGIC_STRING:
{
ecma_char_t zt_string_buffer [ECMA_MAX_CHARS_IN_STRINGIFIED_NUMBER + 1];
@@ -515,6 +547,19 @@ ecma_string_to_zt_string (const ecma_string_t *string_desc_p, /**< ecma-string d
break;
}
case ECMA_STRING_CONTAINER_MAGIC_STRING:
{
const ecma_magic_string_id_t id = string_desc_p->u.magic_string_id;
const size_t length = ecma_magic_string_lengths [id];
JERRY_ASSERT (length == (size_t) ecma_string_get_length (string_desc_p));
size_t bytes_to_copy = (length + 1) * sizeof (ecma_char_t);
__memcpy (buffer_p, ecma_get_magic_string_zt (id), bytes_to_copy);
bytes_copied = (ssize_t) bytes_to_copy;
}
}
JERRY_ASSERT (bytes_copied > 0 && bytes_copied <= required_buffer_size);
@@ -791,6 +836,10 @@ ecma_compare_ecma_strings (const ecma_string_t *string1_p, /* ecma-string */
{
return (string1_p->u.uint32_number == string2_p->u.uint32_number);
}
case ECMA_STRING_CONTAINER_MAGIC_STRING:
{
return (string1_p->u.magic_string_id == string2_p->u.magic_string_id);
}
case ECMA_STRING_CONTAINER_CONCATENATION:
{
/* long path */
@@ -1141,6 +1190,137 @@ ecma_zt_string_length (const ecma_char_t *string_p) /**< zero-terminated string
return length;
} /* ecma_zt_string_length */
/**
* Allocate new ecma-string and fill it with reference to ECMA magic string
*
* @return pointer to ecma-string descriptor
*/
ecma_string_t*
ecma_new_ecma_string_from_magic_string_id (ecma_magic_string_id_t id) /**< identifier of magic string */
{
JERRY_ASSERT (id < ECMA_MAGIC_STRING__COUNT);
ecma_string_t* string_desc_p = ecma_alloc_string ();
string_desc_p->refs = 1;
string_desc_p->length = ecma_magic_string_lengths [id];
string_desc_p->container = ECMA_STRING_CONTAINER_MAGIC_STRING;
string_desc_p->u.magic_string_id = id;
return string_desc_p;
} /* ecma_new_ecma_string_from_magic_string_id */
/**
* Get specified magic string as zero-terminated string
*
* @return pointer to zero-terminated magic string
*/
const ecma_char_t*
ecma_get_magic_string_zt (ecma_magic_string_id_t id) /**< magic string id */
{
TODO(Support UTF-16);
switch (id)
{
case ECMA_MAGIC_STRING_ARGUMENTS: return (ecma_char_t*) "arguments";
case ECMA_MAGIC_STRING_EVAL: return (ecma_char_t*) "eval";
case ECMA_MAGIC_STRING_PROTOTYPE: return (ecma_char_t*) "prototype";
case ECMA_MAGIC_STRING_CONSTRUCTOR: return (ecma_char_t*) "constructor";
case ECMA_MAGIC_STRING_CALLER: return (ecma_char_t*) "caller";
case ECMA_MAGIC_STRING_CALLEE: return (ecma_char_t*) "callee";
case ECMA_MAGIC_STRING_UNDEFINED: return (ecma_char_t*) "undefined";
case ECMA_MAGIC_STRING_NULL: return (ecma_char_t*) "null";
case ECMA_MAGIC_STRING_FALSE: return (ecma_char_t*) "false";
case ECMA_MAGIC_STRING_TRUE: return (ecma_char_t*) "true";
case ECMA_MAGIC_STRING_NUMBER: return (ecma_char_t*) "number";
case ECMA_MAGIC_STRING_STRING: return (ecma_char_t*) "string";
case ECMA_MAGIC_STRING_OBJECT: return (ecma_char_t*) "object";
case ECMA_MAGIC_STRING_FUNCTION: return (ecma_char_t*) "function";
case ECMA_MAGIC_STRING_LENGTH: return (ecma_char_t*) "length";
case ECMA_MAGIC_STRING_NAN: return (ecma_char_t*) "NaN";
case ECMA_MAGIC_STRING_INFINITY: return (ecma_char_t*) "Infinity";
case ECMA_MAGIC_STRING__COUNT: break;
}
JERRY_UNREACHABLE();
} /* ecma_get_magic_string_zt */
/**
* Get specified magic string
*
* @return ecma-string containing specified magic string
*/
ecma_string_t*
ecma_get_magic_string (ecma_magic_string_id_t id) /**< magic string id */
{
return ecma_new_ecma_string (ecma_get_magic_string_zt (id));
} /* ecma_get_magic_string */
/**
* Check if passed zt-string equals to one of magic strings
* and if equal magic string was found, return it's id in 'out_id_p' argument.
*
* @return true - if magic string equal to passed string was found,
* false - otherwise.
*/
bool
ecma_is_zt_string_magic (ecma_char_t *zt_string_p, /**< zero-terminated string */
ecma_magic_string_id_t *out_id_p) /**< out: magic string's id */
{
TODO (Improve performance of search);
for (ecma_magic_string_id_t id = 0;
id < ECMA_MAGIC_STRING__COUNT;
id++)
{
if (ecma_compare_zt_strings (zt_string_p, ecma_get_magic_string_zt (id)))
{
*out_id_p = id;
return true;
}
}
*out_id_p = ECMA_MAGIC_STRING__COUNT;
return false;
} /* ecma_is_zt_string_magic */
/**
* Check if passed string equals to one of magic strings
* and if equal magic string was found, return it's id in 'out_id_p' argument.
*
* @return true - if magic string equal to passed string was found,
* false - otherwise.
*/
bool
ecma_is_string_magic (ecma_string_t *string_p, /**< ecma-string */
ecma_magic_string_id_t *out_id_p) /**< out: magic string's id */
{
if (string_p->container == ECMA_STRING_CONTAINER_MAGIC_STRING)
{
JERRY_ASSERT (string_p->u.magic_string_id < ECMA_MAGIC_STRING__COUNT);
*out_id_p = (ecma_magic_string_id_t) string_p->u.magic_string_id;
return true;
}
else if (ecma_string_get_length (string_p) > ecma_magic_string_max_length)
{
return false;
}
else
{
ecma_char_t zt_string_buffer [ecma_magic_string_max_length + 1];
ssize_t copied = ecma_string_to_zt_string (string_p, zt_string_buffer, (ssize_t) sizeof (zt_string_buffer));
JERRY_ASSERT (copied > 0);
return ecma_is_zt_string_magic (zt_string_buffer, out_id_p);
}
} /* ecma_is_string_magic */
/**
* @}
* @}
+7
View File
@@ -100,6 +100,7 @@ extern ecma_string_t* ecma_new_ecma_string (const ecma_char_t *string_p);
extern ecma_string_t* ecma_new_ecma_string_from_uint32 (uint32_t uint_number);
extern ecma_string_t* ecma_new_ecma_string_from_number (ecma_number_t number);
extern ecma_string_t* ecma_new_ecma_string_from_lit_index (literal_index_t lit_index);
extern ecma_string_t* ecma_new_ecma_string_from_magic_string_id (ecma_magic_string_id_t id);
extern ecma_string_t* ecma_concat_ecma_strings (ecma_string_t *string1_p, ecma_string_t *string2_p);
extern void ecma_ref_ecma_string (ecma_string_t *string_desc_p);
extern void ecma_deref_ecma_string (ecma_string_t *string_p);
@@ -117,6 +118,12 @@ extern bool ecma_compare_zt_strings_relational (const ecma_char_t *string1_p, co
extern ssize_t ecma_copy_zt_string_to_buffer (const ecma_char_t *string_p, ecma_char_t *buffer_p, ssize_t buffer_size);
extern ecma_length_t ecma_zt_string_length (const ecma_char_t *string_p);
extern void ecma_strings_init (void);
extern const ecma_char_t* ecma_get_magic_string_zt (ecma_magic_string_id_t id);
extern ecma_string_t* ecma_get_magic_string (ecma_magic_string_id_t id);
extern bool ecma_is_string_magic (ecma_string_t *string_p, ecma_magic_string_id_t *out_id_p);
extern bool ecma_is_zt_string_magic (ecma_char_t *zt_string_p, ecma_magic_string_id_t *out_id_p);
/* ecma-helpers-number.c */
extern ecma_number_t ecma_number_make_nan (void);
extern ecma_number_t ecma_number_make_infinity (bool sign);
@@ -18,7 +18,6 @@
#include "ecma-exceptions.h"
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-magic-strings.h"
#include "ecma-number-arithmetic.h"
#include "ecma-objects.h"
#include "ecma-objects-general.h"
+1 -1
View File
@@ -21,7 +21,7 @@
#include "ecma-conversion.h"
#include "ecma-exceptions.h"
#include "ecma-globals.h"
#include "ecma-magic-strings.h"
#include "ecma-helpers.h"
#include "ecma-objects.h"
#include "ecma-try-catch-macro.h"
#include "jerry-libc.h"
@@ -21,7 +21,6 @@
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-lex-env.h"
#include "ecma-magic-strings.h"
#include "ecma-objects.h"
#include "ecma-objects-general.h"
#include "ecma-try-catch-macro.h"
@@ -13,22 +13,37 @@
* limitations under the License.
*/
#ifndef ECMA_REFERENCE_H
#define ECMA_REFERENCE_H
#include "ecma-builtins.h"
#include "ecma-helpers.h"
#include "ecma-operations.h"
/** \addtogroup ecma ECMA
* @{
*/
/**
* \addtogroup reference ECMA-reference
*
* \addtogroup ecmainitfinalize Initialization and finalization of ECMA components
* @{
*/
/**
* Initialize ECMA components
*/
void
ecma_init (void)
{
ecma_strings_init ();
ecma_init_builtins ();
} /* ecma_init */
/**
* Finalize ECMA components
*/
void
ecma_finalize (void)
{
ecma_finalize_builtins ();
} /* ecma_finalize */
/**
* @}
* @}
*/
#endif /* !ECMA_REFERENCE_H */
+5
View File
@@ -28,6 +28,11 @@
* @{
*/
/* ECMA-262 v5, 8.7.1 and 8.7.2 */
extern ecma_completion_value_t ecma_op_get_value (ecma_reference_t ref);
extern ecma_completion_value_t ecma_op_put_value (ecma_reference_t ref,
ecma_value_t value);
/* ECMA-262 v5, Table 17. Abstract methods of Environment Records */
extern ecma_completion_value_t ecma_op_has_binding (ecma_object_t *lex_env_p,
ecma_string_t *name_p);
-107
View File
@@ -1,107 +0,0 @@
/* Copyright 2014 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-magic-strings.h"
/** \addtogroup ecma ECMA
* @{
*
* \addtogroup ecmamagicstrings Collection of magic string constants used in ECMA
* @{
*/
/**
* Get specified magic string as zero-terminated string
*
* @return pointer to zero-terminated magic string
*/
const ecma_char_t*
ecma_get_magic_string_zt (ecma_magic_string_id_t id) /**< magic string id */
{
TODO(Support UTF-16);
switch (id)
{
case ECMA_MAGIC_STRING_ARGUMENTS: return (ecma_char_t*) "arguments";
case ECMA_MAGIC_STRING_EVAL: return (ecma_char_t*) "eval";
case ECMA_MAGIC_STRING_PROTOTYPE: return (ecma_char_t*) "prototype";
case ECMA_MAGIC_STRING_CONSTRUCTOR: return (ecma_char_t*) "constructor";
case ECMA_MAGIC_STRING_CALLER: return (ecma_char_t*) "caller";
case ECMA_MAGIC_STRING_CALLEE: return (ecma_char_t*) "callee";
case ECMA_MAGIC_STRING_UNDEFINED: return (ecma_char_t*) "undefined";
case ECMA_MAGIC_STRING_NULL: return (ecma_char_t*) "null";
case ECMA_MAGIC_STRING_FALSE: return (ecma_char_t*) "false";
case ECMA_MAGIC_STRING_TRUE: return (ecma_char_t*) "true";
case ECMA_MAGIC_STRING_NUMBER: return (ecma_char_t*) "number";
case ECMA_MAGIC_STRING_STRING: return (ecma_char_t*) "string";
case ECMA_MAGIC_STRING_OBJECT: return (ecma_char_t*) "object";
case ECMA_MAGIC_STRING_FUNCTION: return (ecma_char_t*) "function";
case ECMA_MAGIC_STRING_LENGTH: return (ecma_char_t*) "length";
case ECMA_MAGIC_STRING_NAN: return (ecma_char_t*) "NaN";
case ECMA_MAGIC_STRING_INFINITY: return (ecma_char_t*) "Infinity";
case ECMA_MAGIC_STRING__COUNT: break;
}
JERRY_UNREACHABLE();
} /* ecma_get_magic_string_zt */
/**
* Get specified magic string
*
* @return ecma-string containing specified magic string
*/
ecma_string_t*
ecma_get_magic_string (ecma_magic_string_id_t id) /**< magic string id */
{
return ecma_new_ecma_string (ecma_get_magic_string_zt (id));
} /* ecma_get_magic_string */
/**
* Check if passed string equals to one of magic strings
* and if equal magic string was found, return it's id in 'out_id_p' argument.
*
* @return true - if magic string equal to passed string was found,
* false - otherwise.
*/
bool
ecma_is_magic_string (ecma_char_t *zt_string_p, /**< zero-terminated string */
ecma_magic_string_id_t *out_id_p) /**< out: magic string's id */
{
TODO (Improve performance of search);
for (ecma_magic_string_id_t id = 0;
id < ECMA_MAGIC_STRING__COUNT;
id++)
{
if (ecma_compare_zt_strings (zt_string_p, ecma_get_magic_string_zt (id)))
{
*out_id_p = id;
return true;
}
}
*out_id_p = ECMA_MAGIC_STRING__COUNT;
return false;
} /* ecma_is_magic_string */
/**
* @}
* @}
*/
@@ -1,62 +0,0 @@
/* Copyright 2014 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ECMA_MAGIC_STRINGS_H
#define ECMA_MAGIC_STRINGS_H
#include "ecma-globals.h"
/** \addtogroup ecma ECMA
* @{
*
* \addtogroup ecmamagicstrings Collection of magic string constants used in ECMA
* @{
*/
/**
* Identifiers of ECMA magic string constants
*/
typedef enum
{
ECMA_MAGIC_STRING_ARGUMENTS, /**< "arguments" */
ECMA_MAGIC_STRING_EVAL, /**< "eval" */
ECMA_MAGIC_STRING_PROTOTYPE, /**< "prototype" */
ECMA_MAGIC_STRING_CONSTRUCTOR, /**< "constructor" */
ECMA_MAGIC_STRING_CALLER, /**< "caller" */
ECMA_MAGIC_STRING_CALLEE, /**< "callee" */
ECMA_MAGIC_STRING_UNDEFINED, /**< "undefined" */
ECMA_MAGIC_STRING_NULL, /**< "null" */
ECMA_MAGIC_STRING_FALSE, /**< "false" */
ECMA_MAGIC_STRING_TRUE, /**< "true" */
ECMA_MAGIC_STRING_NUMBER, /**< "number" */
ECMA_MAGIC_STRING_STRING, /**< "string" */
ECMA_MAGIC_STRING_OBJECT, /**< "object" */
ECMA_MAGIC_STRING_FUNCTION, /**< "function" */
ECMA_MAGIC_STRING_LENGTH, /**< "length" */
ECMA_MAGIC_STRING_NAN, /**< "NaN" */
ECMA_MAGIC_STRING_INFINITY, /**< "Infinity" */
ECMA_MAGIC_STRING__COUNT /**< number of magic strings */
} ecma_magic_string_id_t;
extern const ecma_char_t* ecma_get_magic_string_zt (ecma_magic_string_id_t id);
extern ecma_string_t* ecma_get_magic_string (ecma_magic_string_id_t id);
extern bool ecma_is_magic_string (ecma_char_t *zt_string_p, ecma_magic_string_id_t *out_id_p);
/**
* @}
* @}
*/
#endif /* ECMA_MAGIC_STRINGS_H */
@@ -26,7 +26,6 @@
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-lex-env.h"
#include "ecma-magic-strings.h"
#include "ecma-objects.h"
#include "ecma-objects-arguments.h"
#include "ecma-objects-general.h"
+7 -8
View File
@@ -16,20 +16,19 @@
#ifndef JERRY_ECMA_OPERATIONS_H
#define JERRY_ECMA_OPERATIONS_H
#include "ecma-globals.h"
#include "ecma-lex-env.h"
#include "ecma-reference.h"
#include "globals.h"
/** \addtogroup ecma ECMA
* @{
*
* \addtogroup ecmaoperations ECMA-defined operations
*/
/**
* \addtogroup ecmainitfinalize Initialization and finalization of ECMA components
* @{
*/
extern ecma_completion_value_t ecma_op_get_value (ecma_reference_t ref);
extern ecma_completion_value_t ecma_op_put_value (ecma_reference_t ref,
ecma_value_t value);
extern void ecma_init (void);
extern void ecma_finalize (void);
/**
* @}