| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #if V8_TARGET_ARCH_ARM | 5 #if V8_TARGET_ARCH_ARM |
| 6 | 6 |
| 7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
| 8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
| 9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
| 10 #include "src/full-codegen/full-codegen.h" | 10 #include "src/full-codegen/full-codegen.h" |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 __ bind(&no_arguments); | 380 __ bind(&no_arguments); |
| 381 { | 381 { |
| 382 __ LoadRoot(r0, Heap::kempty_stringRootIndex); | 382 __ LoadRoot(r0, Heap::kempty_stringRootIndex); |
| 383 __ Ret(1); | 383 __ Ret(1); |
| 384 } | 384 } |
| 385 | 385 |
| 386 // 3a. Convert r0 to a string. | 386 // 3a. Convert r0 to a string. |
| 387 __ bind(&to_string); | 387 __ bind(&to_string); |
| 388 { | 388 { |
| 389 FrameScope scope(masm, StackFrame::MANUAL); | 389 FrameScope scope(masm, StackFrame::MANUAL); |
| 390 ToStringStub stub(masm->isolate()); | |
| 391 __ SmiTag(r2); | 390 __ SmiTag(r2); |
| 392 __ EnterBuiltinFrame(cp, r1, r2); | 391 __ EnterBuiltinFrame(cp, r1, r2); |
| 393 __ CallStub(&stub); | 392 __ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET); |
| 394 __ LeaveBuiltinFrame(cp, r1, r2); | 393 __ LeaveBuiltinFrame(cp, r1, r2); |
| 395 __ SmiUntag(r2); | 394 __ SmiUntag(r2); |
| 396 } | 395 } |
| 397 __ b(&drop_frame_and_ret); | 396 __ b(&drop_frame_and_ret); |
| 398 | 397 |
| 399 // 3b. Convert symbol in r0 to a string. | 398 // 3b. Convert symbol in r0 to a string. |
| 400 __ bind(&symbol_descriptive_string); | 399 __ bind(&symbol_descriptive_string); |
| 401 { | 400 { |
| 402 __ Drop(r2); | 401 __ Drop(r2); |
| 403 __ Drop(1); | 402 __ Drop(1); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 | 441 |
| 443 // 3. Make sure r2 is a string. | 442 // 3. Make sure r2 is a string. |
| 444 { | 443 { |
| 445 Label convert, done_convert; | 444 Label convert, done_convert; |
| 446 __ JumpIfSmi(r2, &convert); | 445 __ JumpIfSmi(r2, &convert); |
| 447 __ CompareObjectType(r2, r4, r4, FIRST_NONSTRING_TYPE); | 446 __ CompareObjectType(r2, r4, r4, FIRST_NONSTRING_TYPE); |
| 448 __ b(lo, &done_convert); | 447 __ b(lo, &done_convert); |
| 449 __ bind(&convert); | 448 __ bind(&convert); |
| 450 { | 449 { |
| 451 FrameScope scope(masm, StackFrame::MANUAL); | 450 FrameScope scope(masm, StackFrame::MANUAL); |
| 452 ToStringStub stub(masm->isolate()); | |
| 453 __ SmiTag(r6); | 451 __ SmiTag(r6); |
| 454 __ EnterBuiltinFrame(cp, r1, r6); | 452 __ EnterBuiltinFrame(cp, r1, r6); |
| 455 __ Push(r3); | 453 __ Push(r3); |
| 456 __ Move(r0, r2); | 454 __ Move(r0, r2); |
| 457 __ CallStub(&stub); | 455 __ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET); |
| 458 __ Move(r2, r0); | 456 __ Move(r2, r0); |
| 459 __ Pop(r3); | 457 __ Pop(r3); |
| 460 __ LeaveBuiltinFrame(cp, r1, r6); | 458 __ LeaveBuiltinFrame(cp, r1, r6); |
| 461 __ SmiUntag(r6); | 459 __ SmiUntag(r6); |
| 462 } | 460 } |
| 463 __ bind(&done_convert); | 461 __ bind(&done_convert); |
| 464 } | 462 } |
| 465 | 463 |
| 466 // 4. Check if new target and constructor differ. | 464 // 4. Check if new target and constructor differ. |
| 467 Label drop_frame_and_ret, new_object; | 465 Label drop_frame_and_ret, new_object; |
| (...skipping 2457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2925 __ bkpt(0); | 2923 __ bkpt(0); |
| 2926 } | 2924 } |
| 2927 } | 2925 } |
| 2928 | 2926 |
| 2929 #undef __ | 2927 #undef __ |
| 2930 | 2928 |
| 2931 } // namespace internal | 2929 } // namespace internal |
| 2932 } // namespace v8 | 2930 } // namespace v8 |
| 2933 | 2931 |
| 2934 #endif // V8_TARGET_ARCH_ARM | 2932 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |