Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: src/ic/ppc/ic-ppc.cc

Issue 1474763008: Always pass an Isolate to AssemblerBase (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updates Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ic/mips64/ic-mips64.cc ('k') | src/ic/x64/ic-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #if V8_TARGET_ARCH_PPC 5 #if V8_TARGET_ARCH_PPC
6 6
7 #include "src/codegen.h" 7 #include "src/codegen.h"
8 #include "src/ic/ic.h" 8 #include "src/ic/ic.h"
9 #include "src/ic/ic-compiler.h" 9 #include "src/ic/ic-compiler.h"
10 #include "src/ic/stub-cache.h" 10 #include "src/ic/stub-cache.h"
(...skipping 835 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 // If the instruction following the call is not a cmp rx, #yyy, nothing 846 // If the instruction following the call is not a cmp rx, #yyy, nothing
847 // was inlined. 847 // was inlined.
848 Instr instr = Assembler::instr_at(cmp_instruction_address); 848 Instr instr = Assembler::instr_at(cmp_instruction_address);
849 return Assembler::IsCmpImmediate(instr); 849 return Assembler::IsCmpImmediate(instr);
850 } 850 }
851 851
852 852
853 // 853 //
854 // This code is paired with the JumpPatchSite class in full-codegen-ppc.cc 854 // This code is paired with the JumpPatchSite class in full-codegen-ppc.cc
855 // 855 //
856 void PatchInlinedSmiCode(Address address, InlinedSmiCheck check) { 856 void PatchInlinedSmiCode(Isolate* isolate, Address address,
857 InlinedSmiCheck check) {
857 Address cmp_instruction_address = 858 Address cmp_instruction_address =
858 Assembler::return_address_from_call_start(address); 859 Assembler::return_address_from_call_start(address);
859 860
860 // If the instruction following the call is not a cmp rx, #yyy, nothing 861 // If the instruction following the call is not a cmp rx, #yyy, nothing
861 // was inlined. 862 // was inlined.
862 Instr instr = Assembler::instr_at(cmp_instruction_address); 863 Instr instr = Assembler::instr_at(cmp_instruction_address);
863 if (!Assembler::IsCmpImmediate(instr)) { 864 if (!Assembler::IsCmpImmediate(instr)) {
864 return; 865 return;
865 } 866 }
866 867
(...skipping 17 matching lines...) Expand all
884 Instr instr_at_patch = Assembler::instr_at(patch_address); 885 Instr instr_at_patch = Assembler::instr_at(patch_address);
885 Instr branch_instr = 886 Instr branch_instr =
886 Assembler::instr_at(patch_address + Instruction::kInstrSize); 887 Assembler::instr_at(patch_address + Instruction::kInstrSize);
887 // This is patching a conditional "jump if not smi/jump if smi" site. 888 // This is patching a conditional "jump if not smi/jump if smi" site.
888 // Enabling by changing from 889 // Enabling by changing from
889 // cmp cr0, rx, rx 890 // cmp cr0, rx, rx
890 // to 891 // to
891 // rlwinm(r0, value, 0, 31, 31, SetRC); 892 // rlwinm(r0, value, 0, 31, 31, SetRC);
892 // bc(label, BT/BF, 2) 893 // bc(label, BT/BF, 2)
893 // and vice-versa to be disabled again. 894 // and vice-versa to be disabled again.
894 CodePatcher patcher(patch_address, 2); 895 CodePatcher patcher(isolate, patch_address, 2);
895 Register reg = Assembler::GetRA(instr_at_patch); 896 Register reg = Assembler::GetRA(instr_at_patch);
896 if (check == ENABLE_INLINED_SMI_CHECK) { 897 if (check == ENABLE_INLINED_SMI_CHECK) {
897 DCHECK(Assembler::IsCmpRegister(instr_at_patch)); 898 DCHECK(Assembler::IsCmpRegister(instr_at_patch));
898 DCHECK_EQ(Assembler::GetRA(instr_at_patch).code(), 899 DCHECK_EQ(Assembler::GetRA(instr_at_patch).code(),
899 Assembler::GetRB(instr_at_patch).code()); 900 Assembler::GetRB(instr_at_patch).code());
900 patcher.masm()->TestIfSmi(reg, r0); 901 patcher.masm()->TestIfSmi(reg, r0);
901 } else { 902 } else {
902 DCHECK(check == DISABLE_INLINED_SMI_CHECK); 903 DCHECK(check == DISABLE_INLINED_SMI_CHECK);
903 DCHECK(Assembler::IsAndi(instr_at_patch)); 904 DCHECK(Assembler::IsAndi(instr_at_patch));
904 patcher.masm()->cmp(reg, reg, cr0); 905 patcher.masm()->cmp(reg, reg, cr0);
905 } 906 }
906 DCHECK(Assembler::IsBranch(branch_instr)); 907 DCHECK(Assembler::IsBranch(branch_instr));
907 908
908 // Invert the logic of the branch 909 // Invert the logic of the branch
909 if (Assembler::GetCondition(branch_instr) == eq) { 910 if (Assembler::GetCondition(branch_instr) == eq) {
910 patcher.EmitCondition(ne); 911 patcher.EmitCondition(ne);
911 } else { 912 } else {
912 DCHECK(Assembler::GetCondition(branch_instr) == ne); 913 DCHECK(Assembler::GetCondition(branch_instr) == ne);
913 patcher.EmitCondition(eq); 914 patcher.EmitCondition(eq);
914 } 915 }
915 } 916 }
916 } // namespace internal 917 } // namespace internal
917 } // namespace v8 918 } // namespace v8
918 919
919 #endif // V8_TARGET_ARCH_PPC 920 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/ic/mips64/ic-mips64.cc ('k') | src/ic/x64/ic-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698