| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 | 
| 8 | 8 | 
| 9 #include "src/codegen.h" | 9 #include "src/codegen.h" | 
| 10 #include "src/debug.h" | 10 #include "src/debug.h" | 
| (...skipping 1337 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1348     __ JumpIfObjectType(receiver, scratch1, scratch2, | 1348     __ JumpIfObjectType(receiver, scratch1, scratch2, | 
| 1349                         FIRST_SPEC_OBJECT_TYPE, &shift_arguments, ge); | 1349                         FIRST_SPEC_OBJECT_TYPE, &shift_arguments, ge); | 
| 1350 | 1350 | 
| 1351     __ Bind(&convert_to_object); | 1351     __ Bind(&convert_to_object); | 
| 1352 | 1352 | 
| 1353     { | 1353     { | 
| 1354       // Enter an internal frame in order to preserve argument count. | 1354       // Enter an internal frame in order to preserve argument count. | 
| 1355       FrameScope scope(masm, StackFrame::INTERNAL); | 1355       FrameScope scope(masm, StackFrame::INTERNAL); | 
| 1356       __ SmiTag(argc); | 1356       __ SmiTag(argc); | 
| 1357 | 1357 | 
| 1358       __ Push(argc, receiver); | 1358       __ Push(argc); | 
| 1359       __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); | 1359       __ Mov(x0, receiver); | 
|  | 1360       ToObjectStub stub(masm->isolate()); | 
|  | 1361       __ CallStub(&stub); | 
| 1360       __ Mov(receiver, x0); | 1362       __ Mov(receiver, x0); | 
| 1361 | 1363 | 
| 1362       __ Pop(argc); | 1364       __ Pop(argc); | 
| 1363       __ SmiUntag(argc); | 1365       __ SmiUntag(argc); | 
| 1364 | 1366 | 
| 1365       // Exit the internal frame. | 1367       // Exit the internal frame. | 
| 1366     } | 1368     } | 
| 1367 | 1369 | 
| 1368     // Restore the function and flag in the registers. | 1370     // Restore the function and flag in the registers. | 
| 1369     __ Peek(function, Operand(argc, LSL, kXRegSizeLog2)); | 1371     __ Peek(function, Operand(argc, LSL, kXRegSizeLog2)); | 
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1575     __ JumpIfRoot(receiver, Heap::kUndefinedValueRootIndex, | 1577     __ JumpIfRoot(receiver, Heap::kUndefinedValueRootIndex, | 
| 1576                   &use_global_proxy); | 1578                   &use_global_proxy); | 
| 1577 | 1579 | 
| 1578     // Check if the receiver is already a JavaScript object. | 1580     // Check if the receiver is already a JavaScript object. | 
| 1579     STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE); | 1581     STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE); | 
| 1580     __ JumpIfObjectType(receiver, x10, x11, FIRST_SPEC_OBJECT_TYPE, | 1582     __ JumpIfObjectType(receiver, x10, x11, FIRST_SPEC_OBJECT_TYPE, | 
| 1581                         &push_receiver, ge); | 1583                         &push_receiver, ge); | 
| 1582 | 1584 | 
| 1583     // Call a builtin to convert the receiver to a regular object. | 1585     // Call a builtin to convert the receiver to a regular object. | 
| 1584     __ Bind(&convert_receiver_to_object); | 1586     __ Bind(&convert_receiver_to_object); | 
| 1585     __ Push(receiver); | 1587     __ Mov(x0, receiver); | 
| 1586     __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); | 1588     ToObjectStub stub(masm->isolate()); | 
|  | 1589     __ CallStub(&stub); | 
| 1587     __ Mov(receiver, x0); | 1590     __ Mov(receiver, x0); | 
| 1588     __ B(&push_receiver); | 1591     __ B(&push_receiver); | 
| 1589 | 1592 | 
| 1590     __ Bind(&use_global_proxy); | 1593     __ Bind(&use_global_proxy); | 
| 1591     __ Ldr(x10, GlobalObjectMemOperand()); | 1594     __ Ldr(x10, GlobalObjectMemOperand()); | 
| 1592     __ Ldr(receiver, FieldMemOperand(x10, GlobalObject::kGlobalProxyOffset)); | 1595     __ Ldr(receiver, FieldMemOperand(x10, GlobalObject::kGlobalProxyOffset)); | 
| 1593 | 1596 | 
| 1594     // Push the receiver | 1597     // Push the receiver | 
| 1595     __ Bind(&push_receiver); | 1598     __ Bind(&push_receiver); | 
| 1596     __ Push(receiver); | 1599     __ Push(receiver); | 
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1923   } | 1926   } | 
| 1924 } | 1927 } | 
| 1925 | 1928 | 
| 1926 | 1929 | 
| 1927 #undef __ | 1930 #undef __ | 
| 1928 | 1931 | 
| 1929 }  // namespace internal | 1932 }  // namespace internal | 
| 1930 }  // namespace v8 | 1933 }  // namespace v8 | 
| 1931 | 1934 | 
| 1932 #endif  // V8_TARGET_ARCH_ARM | 1935 #endif  // V8_TARGET_ARCH_ARM | 
| OLD | NEW | 
|---|