OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 9181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9192 ArrayConcatVisitor* visitor) { | 9192 ArrayConcatVisitor* visitor) { |
9193 Handle<ExternalArrayClass> array( | 9193 Handle<ExternalArrayClass> array( |
9194 ExternalArrayClass::cast(receiver->elements())); | 9194 ExternalArrayClass::cast(receiver->elements())); |
9195 uint32_t len = static_cast<uint32_t>(array->length()); | 9195 uint32_t len = static_cast<uint32_t>(array->length()); |
9196 | 9196 |
9197 ASSERT(visitor != NULL); | 9197 ASSERT(visitor != NULL); |
9198 if (elements_are_ints) { | 9198 if (elements_are_ints) { |
9199 if (elements_are_guaranteed_smis) { | 9199 if (elements_are_guaranteed_smis) { |
9200 for (uint32_t j = 0; j < len; j++) { | 9200 for (uint32_t j = 0; j < len; j++) { |
9201 HandleScope loop_scope; | 9201 HandleScope loop_scope; |
9202 Handle<Smi> e(Smi::FromInt(static_cast<int>(array->get(j)))); | 9202 Handle<Smi> e(Smi::FromInt(static_cast<int>(array->get_scalar(j)))); |
9203 visitor->visit(j, e); | 9203 visitor->visit(j, e); |
9204 } | 9204 } |
9205 } else { | 9205 } else { |
9206 for (uint32_t j = 0; j < len; j++) { | 9206 for (uint32_t j = 0; j < len; j++) { |
9207 HandleScope loop_scope; | 9207 HandleScope loop_scope; |
9208 int64_t val = static_cast<int64_t>(array->get(j)); | 9208 int64_t val = static_cast<int64_t>(array->get_scalar(j)); |
9209 if (Smi::IsValid(static_cast<intptr_t>(val))) { | 9209 if (Smi::IsValid(static_cast<intptr_t>(val))) { |
9210 Handle<Smi> e(Smi::FromInt(static_cast<int>(val))); | 9210 Handle<Smi> e(Smi::FromInt(static_cast<int>(val))); |
9211 visitor->visit(j, e); | 9211 visitor->visit(j, e); |
9212 } else { | 9212 } else { |
9213 Handle<Object> e = | 9213 Handle<Object> e = |
9214 isolate->factory()->NewNumber(static_cast<ElementType>(val)); | 9214 isolate->factory()->NewNumber(static_cast<ElementType>(val)); |
9215 visitor->visit(j, e); | 9215 visitor->visit(j, e); |
9216 } | 9216 } |
9217 } | 9217 } |
9218 } | 9218 } |
9219 } else { | 9219 } else { |
9220 for (uint32_t j = 0; j < len; j++) { | 9220 for (uint32_t j = 0; j < len; j++) { |
9221 HandleScope loop_scope(isolate); | 9221 HandleScope loop_scope(isolate); |
9222 Handle<Object> e = isolate->factory()->NewNumber(array->get(j)); | 9222 Handle<Object> e = isolate->factory()->NewNumber(array->get_scalar(j)); |
9223 visitor->visit(j, e); | 9223 visitor->visit(j, e); |
9224 } | 9224 } |
9225 } | 9225 } |
9226 } | 9226 } |
9227 | 9227 |
9228 | 9228 |
9229 // Used for sorting indices in a List<uint32_t>. | 9229 // Used for sorting indices in a List<uint32_t>. |
9230 static int compareUInt32(const uint32_t* ap, const uint32_t* bp) { | 9230 static int compareUInt32(const uint32_t* ap, const uint32_t* bp) { |
9231 uint32_t a = *ap; | 9231 uint32_t a = *ap; |
9232 uint32_t b = *bp; | 9232 uint32_t b = *bp; |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9398 do { | 9398 do { |
9399 j++; | 9399 j++; |
9400 } while (j < n && indices[j] == index); | 9400 } while (j < n && indices[j] == index); |
9401 } | 9401 } |
9402 break; | 9402 break; |
9403 } | 9403 } |
9404 case JSObject::EXTERNAL_PIXEL_ELEMENTS: { | 9404 case JSObject::EXTERNAL_PIXEL_ELEMENTS: { |
9405 Handle<ExternalPixelArray> pixels(ExternalPixelArray::cast( | 9405 Handle<ExternalPixelArray> pixels(ExternalPixelArray::cast( |
9406 receiver->elements())); | 9406 receiver->elements())); |
9407 for (uint32_t j = 0; j < length; j++) { | 9407 for (uint32_t j = 0; j < length; j++) { |
9408 Handle<Smi> e(Smi::FromInt(pixels->get(j))); | 9408 Handle<Smi> e(Smi::FromInt(pixels->get_scalar(j))); |
9409 visitor->visit(j, e); | 9409 visitor->visit(j, e); |
9410 } | 9410 } |
9411 break; | 9411 break; |
9412 } | 9412 } |
9413 case JSObject::EXTERNAL_BYTE_ELEMENTS: { | 9413 case JSObject::EXTERNAL_BYTE_ELEMENTS: { |
9414 IterateExternalArrayElements<ExternalByteArray, int8_t>( | 9414 IterateExternalArrayElements<ExternalByteArray, int8_t>( |
9415 isolate, receiver, true, true, visitor); | 9415 isolate, receiver, true, true, visitor); |
9416 break; | 9416 break; |
9417 } | 9417 } |
9418 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: { | 9418 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: { |
(...skipping 3347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12766 } else { | 12766 } else { |
12767 // Handle last resort GC and make sure to allow future allocations | 12767 // Handle last resort GC and make sure to allow future allocations |
12768 // to grow the heap without causing GCs (if possible). | 12768 // to grow the heap without causing GCs (if possible). |
12769 isolate->counters()->gc_last_resort_from_js()->Increment(); | 12769 isolate->counters()->gc_last_resort_from_js()->Increment(); |
12770 isolate->heap()->CollectAllGarbage(false); | 12770 isolate->heap()->CollectAllGarbage(false); |
12771 } | 12771 } |
12772 } | 12772 } |
12773 | 12773 |
12774 | 12774 |
12775 } } // namespace v8::internal | 12775 } } // namespace v8::internal |
OLD | NEW |