@@ -46,13 +46,19 @@ typedef struct
46
46
/**
47
47
* Number of rows in LCache's hash table
48
48
*/
49
- #define ECMA_LCACHE_HASH_ROWS_COUNT 256
49
+ #define ECMA_LCACHE_HASH_ROWS_COUNT 128
50
50
51
51
/**
52
52
* Number of entries in a row of LCache's hash table
53
53
*/
54
54
#define ECMA_LCACHE_HASH_ROW_LENGTH 2
55
55
56
+
57
+ /**
58
+ * Mask for hash bits
59
+ */
60
+ #define ECMA_LCACHE_HASH_MASK (ECMA_LCACHE_HASH_ROWS_COUNT - 1)
61
+
56
62
/**
57
63
* LCache's hash table
58
64
*/
@@ -97,7 +103,7 @@ ecma_lcache_row_idx (jmem_cpointer_t object_cp, /**< compressed pointer to objec
97
103
{
98
104
/* Randomize the hash of the property name with the object pointer using a xor operation,
99
105
* so properties of different objects with the same name can be cached effectively. */
100
- return (size_t ) ((ecma_string_hash (prop_name_p ) ^ object_cp ) & ( ECMA_LCACHE_HASH_ROWS_COUNT - 1 ) );
106
+ return (size_t ) ((ecma_string_hash (prop_name_p ) ^ object_cp ) & ECMA_LCACHE_HASH_MASK );
101
107
} /* ecma_lcache_row_idx */
102
108
#endif /* !CONFIG_ECMA_LCACHE_DISABLE */
103
109
@@ -181,7 +187,7 @@ ecma_lcache_lookup (ecma_object_t *object_p, /**< object */
181
187
ecma_string_t * entry_prop_name_p = ECMA_GET_NON_NULL_POINTER (ecma_string_t ,
182
188
entry_p -> prop_name_cp );
183
189
184
- JERRY_ASSERT (prop_name_p -> hash == entry_prop_name_p -> hash );
190
+ JERRY_ASSERT (( prop_name_p -> hash & ECMA_LCACHE_HASH_MASK ) == ( entry_prop_name_p -> hash & ECMA_LCACHE_HASH_MASK ) );
185
191
186
192
if (ECMA_STRING_GET_CONTAINER (prop_name_p ) == ECMA_STRING_GET_CONTAINER (entry_prop_name_p )
187
193
&& prop_name_p -> u .common_field == entry_prop_name_p -> u .common_field )
0 commit comments