Index: src/ic/access-compiler.cc |
diff --git a/src/ic/access-compiler.cc b/src/ic/access-compiler.cc |
index c99219201a00f14ae1401de37ab5b21d1153709b..7570d3b311808d6ba37bef87f386114f24fbbe53 100644 |
--- a/src/ic/access-compiler.cc |
+++ b/src/ic/access-compiler.cc |
@@ -35,13 +35,34 @@ Handle<Code> PropertyAccessCompiler::GetCodeWithFlags(Code::Flags flags, |
: GetCodeWithFlags(flags, NULL); |
} |
+namespace { |
-void PropertyAccessCompiler::TailCallBuiltin(MacroAssembler* masm, |
- Builtins::Name name) { |
- Handle<Code> code(masm->isolate()->builtins()->builtin(name)); |
- GenerateTailCall(masm, code); |
+Handle<Code> MissHandler(Isolate* isolate, Code::Kind kind) { |
+ switch (kind) { |
+ case Code::LOAD_IC: { |
+ LoadICMissStub stub(isolate); |
+ return stub.GetCode(); |
+ } |
+ case Code::STORE_IC: |
+ return isolate->builtins()->StoreIC_Miss(); |
+ case Code::KEYED_LOAD_IC: |
+ return isolate->builtins()->KeyedLoadIC_Miss(); |
+ case Code::KEYED_STORE_IC: |
+ return isolate->builtins()->KeyedStoreIC_Miss(); |
+ default: |
+ UNREACHABLE(); |
+ } |
+ LoadICMissStub stub(isolate); |
+ return stub.GetCode(); |
} |
+} // namespace |
+ |
+void PropertyAccessCompiler::TailCallMissHandler(MacroAssembler* masm, |
+ Code::Kind kind) { |
+ Handle<Code> code = MissHandler(masm->isolate(), kind); |
+ GenerateTailCall(masm, code); |
+} |
Register* PropertyAccessCompiler::GetCallingConvention(Code::Kind kind) { |
if (kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC) { |