OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/arguments.h" | 7 #include "src/arguments.h" |
8 #include "src/runtime/runtime-utils.h" | 8 #include "src/runtime/runtime-utils.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 indices); | 437 indices); |
438 } | 438 } |
439 } | 439 } |
440 | 440 |
441 | 441 |
442 static bool IterateElementsSlow(Isolate* isolate, Handle<JSObject> receiver, | 442 static bool IterateElementsSlow(Isolate* isolate, Handle<JSObject> receiver, |
443 uint32_t length, ArrayConcatVisitor* visitor) { | 443 uint32_t length, ArrayConcatVisitor* visitor) { |
444 for (uint32_t i = 0; i < length; ++i) { | 444 for (uint32_t i = 0; i < length; ++i) { |
445 HandleScope loop_scope(isolate); | 445 HandleScope loop_scope(isolate); |
446 Maybe<bool> maybe = JSReceiver::HasElement(receiver, i); | 446 Maybe<bool> maybe = JSReceiver::HasElement(receiver, i); |
447 if (!maybe.has_value) return false; | 447 if (!maybe.IsJust()) return false; |
448 if (maybe.value) { | 448 if (maybe.FromJust()) { |
449 Handle<Object> element_value; | 449 Handle<Object> element_value; |
450 ASSIGN_RETURN_ON_EXCEPTION_VALUE( | 450 ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
451 isolate, element_value, | 451 isolate, element_value, |
452 Runtime::GetElementOrCharAt(isolate, receiver, i), false); | 452 Runtime::GetElementOrCharAt(isolate, receiver, i), false); |
453 visitor->visit(i, element_value); | 453 visitor->visit(i, element_value); |
454 } | 454 } |
455 } | 455 } |
456 visitor->increase_index_offset(length); | 456 visitor->increase_index_offset(length); |
457 return true; | 457 return true; |
458 } | 458 } |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 Handle<FixedArray> elements(FixedArray::cast(receiver->elements())); | 504 Handle<FixedArray> elements(FixedArray::cast(receiver->elements())); |
505 int fast_length = static_cast<int>(length); | 505 int fast_length = static_cast<int>(length); |
506 DCHECK(fast_length <= elements->length()); | 506 DCHECK(fast_length <= elements->length()); |
507 for (int j = 0; j < fast_length; j++) { | 507 for (int j = 0; j < fast_length; j++) { |
508 HandleScope loop_scope(isolate); | 508 HandleScope loop_scope(isolate); |
509 Handle<Object> element_value(elements->get(j), isolate); | 509 Handle<Object> element_value(elements->get(j), isolate); |
510 if (!element_value->IsTheHole()) { | 510 if (!element_value->IsTheHole()) { |
511 visitor->visit(j, element_value); | 511 visitor->visit(j, element_value); |
512 } else { | 512 } else { |
513 Maybe<bool> maybe = JSReceiver::HasElement(receiver, j); | 513 Maybe<bool> maybe = JSReceiver::HasElement(receiver, j); |
514 if (!maybe.has_value) return false; | 514 if (!maybe.IsJust()) return false; |
515 if (maybe.value) { | 515 if (maybe.FromJust()) { |
516 // Call GetElement on receiver, not its prototype, or getters won't | 516 // Call GetElement on receiver, not its prototype, or getters won't |
517 // have the correct receiver. | 517 // have the correct receiver. |
518 ASSIGN_RETURN_ON_EXCEPTION_VALUE( | 518 ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
519 isolate, element_value, | 519 isolate, element_value, |
520 Object::GetElement(isolate, receiver, j), false); | 520 Object::GetElement(isolate, receiver, j), false); |
521 visitor->visit(j, element_value); | 521 visitor->visit(j, element_value); |
522 } | 522 } |
523 } | 523 } |
524 } | 524 } |
525 break; | 525 break; |
(...skipping 14 matching lines...) Expand all Loading... |
540 DCHECK(fast_length <= elements->length()); | 540 DCHECK(fast_length <= elements->length()); |
541 for (int j = 0; j < fast_length; j++) { | 541 for (int j = 0; j < fast_length; j++) { |
542 HandleScope loop_scope(isolate); | 542 HandleScope loop_scope(isolate); |
543 if (!elements->is_the_hole(j)) { | 543 if (!elements->is_the_hole(j)) { |
544 double double_value = elements->get_scalar(j); | 544 double double_value = elements->get_scalar(j); |
545 Handle<Object> element_value = | 545 Handle<Object> element_value = |
546 isolate->factory()->NewNumber(double_value); | 546 isolate->factory()->NewNumber(double_value); |
547 visitor->visit(j, element_value); | 547 visitor->visit(j, element_value); |
548 } else { | 548 } else { |
549 Maybe<bool> maybe = JSReceiver::HasElement(receiver, j); | 549 Maybe<bool> maybe = JSReceiver::HasElement(receiver, j); |
550 if (!maybe.has_value) return false; | 550 if (!maybe.IsJust()) return false; |
551 if (maybe.value) { | 551 if (maybe.FromJust()) { |
552 // Call GetElement on receiver, not its prototype, or getters won't | 552 // Call GetElement on receiver, not its prototype, or getters won't |
553 // have the correct receiver. | 553 // have the correct receiver. |
554 Handle<Object> element_value; | 554 Handle<Object> element_value; |
555 ASSIGN_RETURN_ON_EXCEPTION_VALUE( | 555 ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
556 isolate, element_value, | 556 isolate, element_value, |
557 Object::GetElement(isolate, receiver, j), false); | 557 Object::GetElement(isolate, receiver, j), false); |
558 visitor->visit(j, element_value); | 558 visitor->visit(j, element_value); |
559 } | 559 } |
560 } | 560 } |
561 } | 561 } |
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1310 } | 1310 } |
1311 | 1311 |
1312 | 1312 |
1313 RUNTIME_FUNCTION(RuntimeReference_FastOneByteArrayJoin) { | 1313 RUNTIME_FUNCTION(RuntimeReference_FastOneByteArrayJoin) { |
1314 SealHandleScope shs(isolate); | 1314 SealHandleScope shs(isolate); |
1315 DCHECK(args.length() == 2); | 1315 DCHECK(args.length() == 2); |
1316 return isolate->heap()->undefined_value(); | 1316 return isolate->heap()->undefined_value(); |
1317 } | 1317 } |
1318 } | 1318 } |
1319 } // namespace v8::internal | 1319 } // namespace v8::internal |
OLD | NEW |