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

Side by Side Diff: src/ppc/code-stubs-ppc.cc

Issue 1249433004: PPC: Unify "runtime-style" IC functions with Runtime intrinsics (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 months 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/ppc/ic-ppc.cc ('k') | src/ppc/debug-ppc.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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_PPC 7 #if V8_TARGET_ARCH_PPC
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 1955 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 Register key = LoadDescriptor::NameRegister(); 1966 Register key = LoadDescriptor::NameRegister();
1967 1967
1968 // Check that the key is an array index, that is Uint32. 1968 // Check that the key is an array index, that is Uint32.
1969 __ TestIfPositiveSmi(key, r0); 1969 __ TestIfPositiveSmi(key, r0);
1970 __ bne(&slow, cr0); 1970 __ bne(&slow, cr0);
1971 1971
1972 // Everything is fine, call runtime. 1972 // Everything is fine, call runtime.
1973 __ Push(receiver, key); // Receiver, key. 1973 __ Push(receiver, key); // Receiver, key.
1974 1974
1975 // Perform tail call to the entry. 1975 // Perform tail call to the entry.
1976 __ TailCallExternalReference( 1976 __ TailCallRuntime(Runtime::kLoadElementWithInterceptor, 2, 1);
1977 ExternalReference(IC_Utility(IC::kLoadElementWithInterceptor),
1978 masm->isolate()),
1979 2, 1);
1980 1977
1981 __ bind(&slow); 1978 __ bind(&slow);
1982 PropertyAccessCompiler::TailCallBuiltin( 1979 PropertyAccessCompiler::TailCallBuiltin(
1983 masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC)); 1980 masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC));
1984 } 1981 }
1985 1982
1986 1983
1987 void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { 1984 void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
1988 // sp[0] : number of parameters 1985 // sp[0] : number of parameters
1989 // sp[4] : receiver displacement 1986 // sp[4] : receiver displacement
(...skipping 1090 matching lines...) Expand 10 before | Expand all | Expand 10 after
3080 } 3077 }
3081 3078
3082 3079
3083 void CallICStub::GenerateMiss(MacroAssembler* masm) { 3080 void CallICStub::GenerateMiss(MacroAssembler* masm) {
3084 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); 3081 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
3085 3082
3086 // Push the function and feedback info. 3083 // Push the function and feedback info.
3087 __ Push(r4, r5, r6); 3084 __ Push(r4, r5, r6);
3088 3085
3089 // Call the entry. 3086 // Call the entry.
3090 IC::UtilityId id = GetICState() == DEFAULT ? IC::kCallIC_Miss 3087 Runtime::FunctionId id = GetICState() == DEFAULT
3091 : IC::kCallIC_Customization_Miss; 3088 ? Runtime::kCallIC_Miss
3092 3089 : Runtime::kCallIC_Customization_Miss;
3093 ExternalReference miss = ExternalReference(IC_Utility(id), masm->isolate()); 3090 __ CallRuntime(id, 3);
3094 __ CallExternalReference(miss, 3);
3095 3091
3096 // Move result to r4 and exit the internal frame. 3092 // Move result to r4 and exit the internal frame.
3097 __ mr(r4, r3); 3093 __ mr(r4, r3);
3098 } 3094 }
3099 3095
3100 3096
3101 // StringCharCodeAtGenerator 3097 // StringCharCodeAtGenerator
3102 void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) { 3098 void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) {
3103 // If the receiver is a smi trigger the non-string case. 3099 // If the receiver is a smi trigger the non-string case.
3104 if (check_mode_ == RECEIVER_IS_UNKNOWN) { 3100 if (check_mode_ == RECEIVER_IS_UNKNOWN) {
(...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after
4039 __ Ret(); 4035 __ Ret();
4040 4036
4041 __ bind(&miss); 4037 __ bind(&miss);
4042 GenerateMiss(masm); 4038 GenerateMiss(masm);
4043 } 4039 }
4044 4040
4045 4041
4046 void CompareICStub::GenerateMiss(MacroAssembler* masm) { 4042 void CompareICStub::GenerateMiss(MacroAssembler* masm) {
4047 { 4043 {
4048 // Call the runtime system in a fresh internal frame. 4044 // Call the runtime system in a fresh internal frame.
4049 ExternalReference miss =
4050 ExternalReference(IC_Utility(IC::kCompareIC_Miss), isolate());
4051
4052 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL); 4045 FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
4053 __ Push(r4, r3); 4046 __ Push(r4, r3);
4054 __ Push(r4, r3); 4047 __ Push(r4, r3);
4055 __ LoadSmiLiteral(r0, Smi::FromInt(op())); 4048 __ LoadSmiLiteral(r0, Smi::FromInt(op()));
4056 __ push(r0); 4049 __ push(r0);
4057 __ CallExternalReference(miss, 3); 4050 __ CallRuntime(Runtime::kCompareIC_Miss, 3);
4058 // Compute the entry point of the rewritten stub. 4051 // Compute the entry point of the rewritten stub.
4059 __ addi(r5, r3, Operand(Code::kHeaderSize - kHeapObjectTag)); 4052 __ addi(r5, r3, Operand(Code::kHeaderSize - kHeapObjectTag));
4060 // Restore registers. 4053 // Restore registers.
4061 __ Pop(r4, r3); 4054 __ Pop(r4, r3);
4062 } 4055 }
4063 4056
4064 __ JumpToJSEntry(r5); 4057 __ JumpToJSEntry(r5);
4065 } 4058 }
4066 4059
4067 4060
(...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after
5673 kStackUnwindSpace, NULL, 5666 kStackUnwindSpace, NULL,
5674 MemOperand(fp, 6 * kPointerSize), NULL); 5667 MemOperand(fp, 6 * kPointerSize), NULL);
5675 } 5668 }
5676 5669
5677 5670
5678 #undef __ 5671 #undef __
5679 } // namespace internal 5672 } // namespace internal
5680 } // namespace v8 5673 } // namespace v8
5681 5674
5682 #endif // V8_TARGET_ARCH_PPC 5675 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/ic/ppc/ic-ppc.cc ('k') | src/ppc/debug-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698