Revision: 17158
Author: verwa...@chromium.org
Date: Fri Oct 11 10:50:26 2013 UTC
Log: Add a slow stub for store ICs.
BUG=
R=u...@chromium.org
Review URL: https://chromiumcodereview.appspot.com/26807003
http://code.google.com/p/v8/source/detail?r=17158
Modified:
/branches/bleeding_edge/src/builtins.cc
/branches/bleeding_edge/src/builtins.h
/branches/bleeding_edge/src/ic.cc
/branches/bleeding_edge/src/ic.h
=======================================
--- /branches/bleeding_edge/src/builtins.cc Mon Sep 30 13:58:44 2013 UTC
+++ /branches/bleeding_edge/src/builtins.cc Fri Oct 11 10:50:26 2013 UTC
@@ -1376,6 +1376,11 @@
static void Generate_StoreIC_Slow(MacroAssembler* masm) {
StoreIC::GenerateSlow(masm);
}
+
+
+static void Generate_StoreIC_Slow_Strict(MacroAssembler* masm) {
+ StoreIC::GenerateSlow(masm);
+}
static void Generate_StoreIC_Initialize(MacroAssembler* masm) {
@@ -1471,6 +1476,11 @@
static void Generate_KeyedStoreIC_Slow(MacroAssembler* masm) {
KeyedStoreIC::GenerateSlow(masm);
}
+
+
+static void Generate_KeyedStoreIC_Slow_Strict(MacroAssembler* masm) {
+ KeyedStoreIC::GenerateSlow(masm);
+}
static void Generate_KeyedStoreIC_Initialize(MacroAssembler* masm) {
=======================================
--- /branches/bleeding_edge/src/builtins.h Mon Sep 30 13:58:44 2013 UTC
+++ /branches/bleeding_edge/src/builtins.h Fri Oct 11 10:50:26 2013 UTC
@@ -117,14 +117,10 @@
Code::kNoExtraICState) \
V(StoreIC_Miss, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
- V(StoreIC_Slow, BUILTIN, UNINITIALIZED, \
- Code::kNoExtraICState) \
V(KeyedStoreIC_Miss, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
V(KeyedStoreIC_MissForceGeneric, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
- V(KeyedStoreIC_Slow, BUILTIN, UNINITIALIZED, \
- Code::kNoExtraICState) \
V(LoadIC_Initialize, LOAD_IC, UNINITIALIZED, \
Code::kNoExtraICState) \
V(LoadIC_PreMonomorphic, LOAD_IC, PREMONOMORPHIC, \
@@ -214,6 +210,10 @@
#define BUILTIN_LIST_H(V) \
V(LoadIC_Slow, LOAD_IC, Code::kNoExtraICState) \
V(KeyedLoadIC_Slow, KEYED_LOAD_IC, Code::kNoExtraICState) \
+ V(StoreIC_Slow, STORE_IC, Code::kNoExtraICState) \
+ V(StoreIC_Slow_Strict, STORE_IC, kStrictMode) \
+ V(KeyedStoreIC_Slow, KEYED_STORE_IC, Code::kNoExtraICState)\
+ V(KeyedStoreIC_Slow_Strict, KEYED_STORE_IC, kStrictMode) \
V(LoadIC_Normal, LOAD_IC, Code::kNoExtraICState) \
V(StoreIC_Normal, STORE_IC, Code::kNoExtraICState) \
V(StoreIC_Normal_Strict, STORE_IC, kStrictMode)
=======================================
--- /branches/bleeding_edge/src/ic.cc Fri Oct 4 11:25:30 2013 UTC
+++ /branches/bleeding_edge/src/ic.cc Fri Oct 11 10:50:26 2013 UTC
@@ -1603,10 +1603,7 @@
ASSERT(!lookup->IsHandler());
Handle<Code> code = ComputeStoreHandler(lookup, receiver, name, value);
- if (code.is_null()) {
- set_target(*generic_stub());
- return;
- }
+ if (code.is_null()) code = slow_stub();
PatchCache(receiver, name, code);
TRACE_IC("StoreIC", name);
=======================================
--- /branches/bleeding_edge/src/ic.h Fri Oct 4 08:17:11 2013 UTC
+++ /branches/bleeding_edge/src/ic.h Fri Oct 11 10:50:26 2013 UTC
@@ -551,6 +551,14 @@
return isolate()->builtins()->StoreIC_Generic();
}
}
+
+ virtual Handle<Code> slow_stub() const {
+ if (strict_mode() == kStrictMode) {
+ return isolate()->builtins()->StoreIC_Slow_Strict();
+ } else {
+ return isolate()->builtins()->StoreIC_Slow();
+ }
+ }
virtual Handle<Code> pre_monomorphic_stub() {
return pre_monomorphic_stub(isolate(), strict_mode());
@@ -670,6 +678,13 @@
return isolate->builtins()->KeyedStoreIC_PreMonomorphic();
}
}
+ virtual Handle<Code> slow_stub() const {
+ if (strict_mode() == kStrictMode) {
+ return isolate()->builtins()->KeyedStoreIC_Slow_Strict();
+ } else {
+ return isolate()->builtins()->KeyedStoreIC_Slow();
+ }
+ }
virtual Handle<Code> megamorphic_stub() {
if (strict_mode() == kStrictMode) {
return isolate()->builtins()->KeyedStoreIC_Generic_Strict();
--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.