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

Side by Side Diff: src/arm/lithium-codegen-arm.cc

Issue 7869009: Remove in-loop tracking for call ICs. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/arm/ic-arm.cc ('k') | src/builtins.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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 3160 matching lines...) Expand 10 before | Expand all | Expand 10 after
3171 __ InvokeFunction(r1, count, CALL_FUNCTION, generator, CALL_AS_METHOD); 3171 __ InvokeFunction(r1, count, CALL_FUNCTION, generator, CALL_AS_METHOD);
3172 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 3172 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
3173 } 3173 }
3174 3174
3175 3175
3176 void LCodeGen::DoCallKeyed(LCallKeyed* instr) { 3176 void LCodeGen::DoCallKeyed(LCallKeyed* instr) {
3177 ASSERT(ToRegister(instr->result()).is(r0)); 3177 ASSERT(ToRegister(instr->result()).is(r0));
3178 3178
3179 int arity = instr->arity(); 3179 int arity = instr->arity();
3180 Handle<Code> ic = 3180 Handle<Code> ic =
3181 isolate()->stub_cache()->ComputeKeyedCallInitialize(arity, NOT_IN_LOOP); 3181 isolate()->stub_cache()->ComputeKeyedCallInitialize(arity);
3182 CallCode(ic, RelocInfo::CODE_TARGET, instr); 3182 CallCode(ic, RelocInfo::CODE_TARGET, instr);
3183 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 3183 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
3184 } 3184 }
3185 3185
3186 3186
3187 void LCodeGen::DoCallNamed(LCallNamed* instr) { 3187 void LCodeGen::DoCallNamed(LCallNamed* instr) {
3188 ASSERT(ToRegister(instr->result()).is(r0)); 3188 ASSERT(ToRegister(instr->result()).is(r0));
3189 3189
3190 int arity = instr->arity(); 3190 int arity = instr->arity();
3191 RelocInfo::Mode mode = RelocInfo::CODE_TARGET; 3191 RelocInfo::Mode mode = RelocInfo::CODE_TARGET;
3192 Handle<Code> ic = 3192 Handle<Code> ic =
3193 isolate()->stub_cache()->ComputeCallInitialize(arity, NOT_IN_LOOP, mode); 3193 isolate()->stub_cache()->ComputeCallInitialize(arity, mode);
3194 __ mov(r2, Operand(instr->name())); 3194 __ mov(r2, Operand(instr->name()));
3195 CallCode(ic, mode, instr); 3195 CallCode(ic, mode, instr);
3196 // Restore context register. 3196 // Restore context register.
3197 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 3197 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
3198 } 3198 }
3199 3199
3200 3200
3201 void LCodeGen::DoCallFunction(LCallFunction* instr) { 3201 void LCodeGen::DoCallFunction(LCallFunction* instr) {
3202 ASSERT(ToRegister(instr->result()).is(r0)); 3202 ASSERT(ToRegister(instr->result()).is(r0));
3203 3203
3204 int arity = instr->arity(); 3204 int arity = instr->arity();
3205 CallFunctionStub stub(arity, NOT_IN_LOOP, RECEIVER_MIGHT_BE_IMPLICIT); 3205 CallFunctionStub stub(arity, RECEIVER_MIGHT_BE_IMPLICIT);
3206 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr); 3206 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
3207 __ Drop(1); 3207 __ Drop(1);
3208 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 3208 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
3209 } 3209 }
3210 3210
3211 3211
3212 void LCodeGen::DoCallGlobal(LCallGlobal* instr) { 3212 void LCodeGen::DoCallGlobal(LCallGlobal* instr) {
3213 ASSERT(ToRegister(instr->result()).is(r0)); 3213 ASSERT(ToRegister(instr->result()).is(r0));
3214 3214
3215 int arity = instr->arity(); 3215 int arity = instr->arity();
3216 RelocInfo::Mode mode = RelocInfo::CODE_TARGET_CONTEXT; 3216 RelocInfo::Mode mode = RelocInfo::CODE_TARGET_CONTEXT;
3217 Handle<Code> ic = 3217 Handle<Code> ic =
3218 isolate()->stub_cache()->ComputeCallInitialize(arity, NOT_IN_LOOP, mode); 3218 isolate()->stub_cache()->ComputeCallInitialize(arity, mode);
3219 __ mov(r2, Operand(instr->name())); 3219 __ mov(r2, Operand(instr->name()));
3220 CallCode(ic, mode, instr); 3220 CallCode(ic, mode, instr);
3221 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 3221 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
3222 } 3222 }
3223 3223
3224 3224
3225 void LCodeGen::DoCallKnownGlobal(LCallKnownGlobal* instr) { 3225 void LCodeGen::DoCallKnownGlobal(LCallKnownGlobal* instr) {
3226 ASSERT(ToRegister(instr->result()).is(r0)); 3226 ASSERT(ToRegister(instr->result()).is(r0));
3227 __ mov(r1, Operand(instr->target())); 3227 __ mov(r1, Operand(instr->target()));
3228 CallKnownFunction(instr->target(), instr->arity(), instr, CALL_AS_FUNCTION); 3228 CallKnownFunction(instr->target(), instr->arity(), instr, CALL_AS_FUNCTION);
(...skipping 1281 matching lines...) Expand 10 before | Expand all | Expand 10 after
4510 ASSERT(osr_pc_offset_ == -1); 4510 ASSERT(osr_pc_offset_ == -1);
4511 osr_pc_offset_ = masm()->pc_offset(); 4511 osr_pc_offset_ = masm()->pc_offset();
4512 } 4512 }
4513 4513
4514 4514
4515 4515
4516 4516
4517 #undef __ 4517 #undef __
4518 4518
4519 } } // namespace v8::internal 4519 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/ic-arm.cc ('k') | src/builtins.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698