Index: src/contexts.h |
diff --git a/src/contexts.h b/src/contexts.h |
index d154b82ca06e2d547219b101b512cb204b807a40..647c15c153ac54768cca4ea4c4f4a421b06f5dc5 100644 |
--- a/src/contexts.h |
+++ b/src/contexts.h |
@@ -106,7 +106,9 @@ enum BindingFlags { |
V(OBJECT_FUNCTION_INDEX, JSFunction, object_function) \ |
V(INTERNAL_ARRAY_FUNCTION_INDEX, JSFunction, internal_array_function) \ |
V(ARRAY_FUNCTION_INDEX, JSFunction, array_function) \ |
- V(JS_ARRAY_MAPS_INDEX, Object, js_array_maps) \ |
+ V(SMI_JS_ARRAY_MAP_INDEX, Object, smi_js_array_map) \ |
+ V(DOUBLE_JS_ARRAY_MAP_INDEX, Object, double_js_array_map) \ |
+ V(OBJECT_JS_ARRAY_MAP_INDEX, Object, object_js_array_map) \ |
V(DATE_FUNCTION_INDEX, JSFunction, date_function) \ |
V(JSON_OBJECT_INDEX, JSObject, json_object) \ |
V(REGEXP_FUNCTION_INDEX, JSFunction, regexp_function) \ |
@@ -246,7 +248,9 @@ class Context: public FixedArray { |
OBJECT_FUNCTION_INDEX, |
INTERNAL_ARRAY_FUNCTION_INDEX, |
ARRAY_FUNCTION_INDEX, |
- JS_ARRAY_MAPS_INDEX, |
+ SMI_JS_ARRAY_MAP_INDEX, |
+ DOUBLE_JS_ARRAY_MAP_INDEX, |
+ OBJECT_JS_ARRAY_MAP_INDEX, |
DATE_FUNCTION_INDEX, |
JSON_OBJECT_INDEX, |
REGEXP_FUNCTION_INDEX, |
@@ -369,6 +373,18 @@ class Context: public FixedArray { |
Object* OptimizedFunctionsListHead(); |
void ClearOptimizedFunctions(); |
+ static int GetContextMapIndexFromElementsKind( |
+ ElementsKind elements_kind) { |
+ if (elements_kind == FAST_DOUBLE_ELEMENTS) { |
+ return Context::DOUBLE_JS_ARRAY_MAP_INDEX; |
+ } else if (elements_kind == FAST_ELEMENTS) { |
+ return Context::OBJECT_JS_ARRAY_MAP_INDEX; |
+ } else { |
+ ASSERT(elements_kind == FAST_SMI_ONLY_ELEMENTS); |
+ return Context::SMI_JS_ARRAY_MAP_INDEX; |
+ } |
+ } |
+ |
#define GLOBAL_CONTEXT_FIELD_ACCESSORS(index, type, name) \ |
void set_##name(type* value) { \ |
ASSERT(IsGlobalContext()); \ |