| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 Register name = x2; | 440 Register name = x2; |
| 441 | 441 |
| 442 Label number, non_number, non_string, boolean, probe, miss; | 442 Label number, non_number, non_string, boolean, probe, miss; |
| 443 | 443 |
| 444 // Probe the stub cache. | 444 // Probe the stub cache. |
| 445 Code::Flags flags = Code::ComputeFlags(kind, | 445 Code::Flags flags = Code::ComputeFlags(kind, |
| 446 MONOMORPHIC, | 446 MONOMORPHIC, |
| 447 extra_state, | 447 extra_state, |
| 448 Code::NORMAL, | 448 Code::NORMAL, |
| 449 argc); | 449 argc); |
| 450 Isolate::Current()->stub_cache()->GenerateProbe( | 450 masm->isolate()->stub_cache()->GenerateProbe( |
| 451 masm, flags, receiver, name, x3, x4, x5, x6); | 451 masm, flags, receiver, name, x3, x4, x5, x6); |
| 452 | 452 |
| 453 // If the stub cache probing failed, the receiver might be a value. | 453 // If the stub cache probing failed, the receiver might be a value. |
| 454 // For value objects, we use the map of the prototype objects for | 454 // For value objects, we use the map of the prototype objects for |
| 455 // the corresponding JSValue for the cache and that is what we need | 455 // the corresponding JSValue for the cache and that is what we need |
| 456 // to probe. | 456 // to probe. |
| 457 | 457 |
| 458 // Check for number. | 458 // Check for number. |
| 459 __ JumpIfSmi(receiver, &number); | 459 __ JumpIfSmi(receiver, &number); |
| 460 Register receiver_type = x3; | 460 Register receiver_type = x3; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 478 __ Bind(&non_string); | 478 __ Bind(&non_string); |
| 479 __ JumpIfRoot(receiver, Heap::kTrueValueRootIndex, &boolean); | 479 __ JumpIfRoot(receiver, Heap::kTrueValueRootIndex, &boolean); |
| 480 __ JumpIfNotRoot(receiver, Heap::kFalseValueRootIndex, &miss); | 480 __ JumpIfNotRoot(receiver, Heap::kFalseValueRootIndex, &miss); |
| 481 | 481 |
| 482 __ Bind(&boolean); | 482 __ Bind(&boolean); |
| 483 StubCompiler::GenerateLoadGlobalFunctionPrototype( | 483 StubCompiler::GenerateLoadGlobalFunctionPrototype( |
| 484 masm, Context::BOOLEAN_FUNCTION_INDEX, receiver); | 484 masm, Context::BOOLEAN_FUNCTION_INDEX, receiver); |
| 485 | 485 |
| 486 // Probe the stub cache for the value object. | 486 // Probe the stub cache for the value object. |
| 487 __ Bind(&probe); | 487 __ Bind(&probe); |
| 488 Isolate::Current()->stub_cache()->GenerateProbe( | 488 masm->isolate()->stub_cache()->GenerateProbe( |
| 489 masm, flags, receiver, name, x3, x4, x5, x6); | 489 masm, flags, receiver, name, x3, x4, x5, x6); |
| 490 | 490 |
| 491 __ Bind(&miss); | 491 __ Bind(&miss); |
| 492 // Fall-through on miss. | 492 // Fall-through on miss. |
| 493 } | 493 } |
| 494 | 494 |
| 495 | 495 |
| 496 static void GenerateFunctionTailCall(MacroAssembler* masm, | 496 static void GenerateFunctionTailCall(MacroAssembler* masm, |
| 497 int argc, | 497 int argc, |
| 498 Label* miss, | 498 Label* miss, |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 // ----------- S t a t e ------------- | 791 // ----------- S t a t e ------------- |
| 792 // -- x2 : name | 792 // -- x2 : name |
| 793 // -- lr : return address | 793 // -- lr : return address |
| 794 // -- x0 : receiver | 794 // -- x0 : receiver |
| 795 // ----------------------------------- | 795 // ----------------------------------- |
| 796 | 796 |
| 797 // Probe the stub cache. | 797 // Probe the stub cache. |
| 798 Code::Flags flags = Code::ComputeFlags( | 798 Code::Flags flags = Code::ComputeFlags( |
| 799 Code::STUB, MONOMORPHIC, Code::kNoExtraICState, | 799 Code::STUB, MONOMORPHIC, Code::kNoExtraICState, |
| 800 Code::NORMAL, Code::LOAD_IC); | 800 Code::NORMAL, Code::LOAD_IC); |
| 801 Isolate::Current()->stub_cache()->GenerateProbe( | 801 masm->isolate()->stub_cache()->GenerateProbe( |
| 802 masm, flags, x0, x2, x3, x4, x5, x6); | 802 masm, flags, x0, x2, x3, x4, x5, x6); |
| 803 | 803 |
| 804 // Cache miss: Jump to runtime. | 804 // Cache miss: Jump to runtime. |
| 805 GenerateMiss(masm); | 805 GenerateMiss(masm); |
| 806 } | 806 } |
| 807 | 807 |
| 808 | 808 |
| 809 void LoadIC::GenerateNormal(MacroAssembler* masm) { | 809 void LoadIC::GenerateNormal(MacroAssembler* masm) { |
| 810 // ----------- S t a t e ------------- | 810 // ----------- S t a t e ------------- |
| 811 // -- x2 : name | 811 // -- x2 : name |
| (...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1609 // -- x0 : value | 1609 // -- x0 : value |
| 1610 // -- x1 : receiver | 1610 // -- x1 : receiver |
| 1611 // -- x2 : name | 1611 // -- x2 : name |
| 1612 // -- lr : return address | 1612 // -- lr : return address |
| 1613 // ----------------------------------- | 1613 // ----------------------------------- |
| 1614 | 1614 |
| 1615 // Probe the stub cache. | 1615 // Probe the stub cache. |
| 1616 Code::Flags flags = Code::ComputeFlags(Code::STUB, MONOMORPHIC, strict_mode, | 1616 Code::Flags flags = Code::ComputeFlags(Code::STUB, MONOMORPHIC, strict_mode, |
| 1617 Code::NORMAL, Code::STORE_IC); | 1617 Code::NORMAL, Code::STORE_IC); |
| 1618 | 1618 |
| 1619 Isolate::Current()->stub_cache()->GenerateProbe( | 1619 masm->isolate()->stub_cache()->GenerateProbe( |
| 1620 masm, flags, x1, x2, x3, x4, x5, x6); | 1620 masm, flags, x1, x2, x3, x4, x5, x6); |
| 1621 | 1621 |
| 1622 // Cache miss: Jump to runtime. | 1622 // Cache miss: Jump to runtime. |
| 1623 GenerateMiss(masm); | 1623 GenerateMiss(masm); |
| 1624 } | 1624 } |
| 1625 | 1625 |
| 1626 | 1626 |
| 1627 void StoreIC::GenerateMiss(MacroAssembler* masm) { | 1627 void StoreIC::GenerateMiss(MacroAssembler* masm) { |
| 1628 // ----------- S t a t e ------------- | 1628 // ----------- S t a t e ------------- |
| 1629 // -- x0 : value | 1629 // -- x0 : value |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1796 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); | 1796 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); |
| 1797 // This is JumpIfSmi(smi_reg, branch_imm). | 1797 // This is JumpIfSmi(smi_reg, branch_imm). |
| 1798 patcher.tbz(smi_reg, 0, branch_imm); | 1798 patcher.tbz(smi_reg, 0, branch_imm); |
| 1799 } | 1799 } |
| 1800 } | 1800 } |
| 1801 | 1801 |
| 1802 | 1802 |
| 1803 } } // namespace v8::internal | 1803 } } // namespace v8::internal |
| 1804 | 1804 |
| 1805 #endif // V8_TARGET_ARCH_A64 | 1805 #endif // V8_TARGET_ARCH_A64 |
| OLD | NEW |