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

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

Issue 398053002: Introduce FLAG_vector_ics. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Register passed in hydrogen, fixed some test failures. Created 6 years, 5 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_IA32 7 #if V8_TARGET_ARCH_IA32
8 8
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/ic-inl.h" 10 #include "src/ic-inl.h"
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 ExternalReference ref = 1015 ExternalReference ref =
1016 ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate()); 1016 ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
1017 __ TailCallExternalReference(ref, 2, 1); 1017 __ TailCallExternalReference(ref, 2, 1);
1018 } 1018 }
1019 1019
1020 1020
1021 // IC register specifications 1021 // IC register specifications
1022 const Register LoadIC::ReceiverRegister() { return edx; } 1022 const Register LoadIC::ReceiverRegister() { return edx; }
1023 const Register LoadIC::NameRegister() { return ecx; } 1023 const Register LoadIC::NameRegister() { return ecx; }
1024 1024
1025 const Register LoadIC::SlotRegister() {
1026 ASSERT(FLAG_vector_ics);
1027 return eax;
1028 }
1029
1025 1030
1026 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { 1031 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
1027 // Return address is on the stack. 1032 // Return address is on the stack.
1028 __ pop(KeyedLoadIC_TempRegister()); 1033 __ pop(KeyedLoadIC_TempRegister());
1029 __ push(ReceiverRegister()); // receiver 1034 __ push(ReceiverRegister()); // receiver
1030 __ push(NameRegister()); // name 1035 __ push(NameRegister()); // name
1031 __ push(KeyedLoadIC_TempRegister()); // return address 1036 __ push(KeyedLoadIC_TempRegister()); // return address
1032 1037
1033 // Perform tail call to the entry. 1038 // Perform tail call to the entry.
1034 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); 1039 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1);
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 Condition cc = (check == ENABLE_INLINED_SMI_CHECK) 1277 Condition cc = (check == ENABLE_INLINED_SMI_CHECK)
1273 ? (*jmp_address == Assembler::kJncShortOpcode ? not_zero : zero) 1278 ? (*jmp_address == Assembler::kJncShortOpcode ? not_zero : zero)
1274 : (*jmp_address == Assembler::kJnzShortOpcode ? not_carry : carry); 1279 : (*jmp_address == Assembler::kJnzShortOpcode ? not_carry : carry);
1275 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc); 1280 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc);
1276 } 1281 }
1277 1282
1278 1283
1279 } } // namespace v8::internal 1284 } } // namespace v8::internal
1280 1285
1281 #endif // V8_TARGET_ARCH_IA32 1286 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698