diff options
author | isaacs <i@izs.me> | 2012-06-07 11:45:30 -0700 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-06-07 17:54:21 -0700 |
commit | 46b09e419039d2fbfde4029606de3d3aaef7af25 (patch) | |
tree | eeb80d063bef102429991d9cf1ca21bbe8768d09 /deps/v8/src/parser.cc | |
parent | 3116522e7c33c579bbb8ac0ee12c27ff3ff9825c (diff) | |
download | node-46b09e419039d2fbfde4029606de3d3aaef7af25.tar.gz |
Roll V8 back to 3.10.8.13
Diffstat (limited to 'deps/v8/src/parser.cc')
-rw-r--r-- | deps/v8/src/parser.cc | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/deps/v8/src/parser.cc b/deps/v8/src/parser.cc index 3a7a973d4..862051956 100644 --- a/deps/v8/src/parser.cc +++ b/deps/v8/src/parser.cc @@ -3767,12 +3767,10 @@ Expression* Parser::ParseArrayLiteral(bool* ok) { Handle<FixedArray> object_literals = isolate()->factory()->NewFixedArray(values->length(), TENURED); Handle<FixedDoubleArray> double_literals; - ElementsKind elements_kind = FAST_SMI_ELEMENTS; + ElementsKind elements_kind = FAST_SMI_ONLY_ELEMENTS; bool has_only_undefined_values = true; - bool has_hole_values = false; // Fill in the literals. - Heap* heap = isolate()->heap(); bool is_simple = true; int depth = 1; for (int i = 0, n = values->length(); i < n; i++) { @@ -3781,18 +3779,12 @@ Expression* Parser::ParseArrayLiteral(bool* ok) { depth = m_literal->depth() + 1; } Handle<Object> boilerplate_value = GetBoilerplateValue(values->at(i)); - if (boilerplate_value->IsTheHole()) { - has_hole_values = true; + if (boilerplate_value->IsUndefined()) { object_literals->set_the_hole(i); if (elements_kind == FAST_DOUBLE_ELEMENTS) { double_literals->set_the_hole(i); } - } else if (boilerplate_value->IsUndefined()) { is_simple = false; - object_literals->set(i, Smi::FromInt(0)); - if (elements_kind == FAST_DOUBLE_ELEMENTS) { - double_literals->set(i, 0); - } } else { // Examine each literal element, and adjust the ElementsKind if the // literal element is not of a type that can be stored in the current @@ -3802,7 +3794,7 @@ Expression* Parser::ParseArrayLiteral(bool* ok) { // ultimately end up in FAST_ELEMENTS. has_only_undefined_values = false; object_literals->set(i, *boilerplate_value); - if (elements_kind == FAST_SMI_ELEMENTS) { + if (elements_kind == FAST_SMI_ONLY_ELEMENTS) { // Smi only elements. Notice if a transition to FAST_DOUBLE_ELEMENTS or // FAST_ELEMENTS is required. if (!boilerplate_value->IsSmi()) { @@ -3850,7 +3842,7 @@ Expression* Parser::ParseArrayLiteral(bool* ok) { // elements array to a copy-on-write array. if (is_simple && depth == 1 && values->length() > 0 && elements_kind != FAST_DOUBLE_ELEMENTS) { - object_literals->set_map(heap->fixed_cow_array_map()); + object_literals->set_map(isolate()->heap()->fixed_cow_array_map()); } Handle<FixedArrayBase> element_values = elements_kind == FAST_DOUBLE_ELEMENTS @@ -3862,10 +3854,6 @@ Expression* Parser::ParseArrayLiteral(bool* ok) { Handle<FixedArray> literals = isolate()->factory()->NewFixedArray(2, TENURED); - if (has_hole_values || !FLAG_packed_arrays) { - elements_kind = GetHoleyElementsKind(elements_kind); - } - literals->set(0, Smi::FromInt(elements_kind)); literals->set(1, *element_values); |