Reviewers: ulan,
Message:
PTAL
Description:
Tag handlers as HANDLER rather than STUB.
Please review this at https://chromiumcodereview.appspot.com/25044002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+27, -20 lines):
M src/arm/ic-arm.cc
M src/builtins.h
M src/code-stubs.h
M src/disassembler.cc
M src/ia32/ic-ia32.cc
M src/ic.cc
M src/log.h
M src/log.cc
M src/mips/ic-mips.cc
M src/objects-inl.h
M src/objects.h
M src/objects.cc
M src/stub-cache.cc
M src/type-info.cc
M src/x64/ic-x64.cc
Index: src/arm/ic-arm.cc
diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc
index
b39a0edfb849de94f7184215867eb1adcf48f9a7..aded4c1dd8b7f8d0beedafd5cc16919834b3fba6
100644
--- a/src/arm/ic-arm.cc
+++ b/src/arm/ic-arm.cc
@@ -656,7 +656,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, r0, r2, r3, r4, r5, r6);
@@ -1487,7 +1487,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler*
masm,
// Get the receiver from the stack and probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
Index: src/builtins.h
diff --git a/src/builtins.h b/src/builtins.h
index
682fa1ca5ba52c1d65c8349b4fbf589a5d70f46e..612f85a36a6a11557090e6bc97e3735318d94778
100644
--- a/src/builtins.h
+++ b/src/builtins.h
@@ -115,7 +115,7 @@ enum BuiltinExtraArguments {
Code::kNoExtraICState) \
V(KeyedLoadIC_MissForceGeneric, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
- V(KeyedLoadIC_Slow, STUB, MONOMORPHIC, \
+ V(KeyedLoadIC_Slow, HANDLER, MONOMORPHIC, \
Code::kNoExtraICState) \
V(StoreIC_Miss, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
@@ -137,7 +137,7 @@ enum BuiltinExtraArguments {
Code::kNoExtraICState) \
V(LoadIC_Getter_ForDeopt, LOAD_IC, MONOMORPHIC, \
Code::kNoExtraICState) \
- V(LoadIC_Slow, STUB, MONOMORPHIC, \
+ V(LoadIC_Slow, HANDLER, MONOMORPHIC, \
Code::kNoExtraICState) \
\
V(KeyedLoadIC_Initialize, KEYED_LOAD_IC, UNINITIALIZED, \
Index: src/code-stubs.h
diff --git a/src/code-stubs.h b/src/code-stubs.h
index
a5c2f88b228e85993ffb5271e54cb83026d4254c..d1a5b73df0b2ec5ef145ebf636b5f4c151b82de4
100644
--- a/src/code-stubs.h
+++ b/src/code-stubs.h
@@ -904,7 +904,7 @@ class HICStub: public HydrogenCodeStub {
class HandlerStub: public HICStub {
public:
- virtual Code::Kind GetCodeKind() const { return Code::STUB; }
+ virtual Code::Kind GetCodeKind() const { return Code::HANDLER; }
virtual int GetStubFlags() { return kind(); }
protected:
Index: src/disassembler.cc
diff --git a/src/disassembler.cc b/src/disassembler.cc
index
dd620fb3452e1c3aca1cde8a61c8d03d28bb09be..d7898ddcd9adf426e6ea36053aed9842538337f6
100644
--- a/src/disassembler.cc
+++ b/src/disassembler.cc
@@ -250,7 +250,7 @@ static int DecodeIt(Isolate* isolate,
if (kind == Code::CALL_IC || kind == Code::KEYED_CALL_IC) {
out.AddFormatted(", argc = %d", code->arguments_count());
}
- } else if (kind == Code::STUB) {
+ } else if (kind == Code::STUB || kind == Code::HANDLER) {
// Reverse lookup required as the minor key cannot be retrieved
// from the code object.
Object* obj = heap->code_stubs()->SlowReverseLookup(code);
Index: src/ia32/ic-ia32.cc
diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
index
327ac57623e0bfab62191f68e09625ba1c5135e6..f8e4ea53d0f78cb32f63e86b30343f85c857f42c
100644
--- a/src/ia32/ic-ia32.cc
+++ b/src/ia32/ic-ia32.cc
@@ -1304,7 +1304,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler*
masm) {
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, edx, ecx, ebx, eax);
@@ -1423,7 +1423,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler*
masm,
// -----------------------------------
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, edx, ecx, ebx, no_reg);
Index: src/ic.cc
diff --git a/src/ic.cc b/src/ic.cc
index
43d162c84ae8ea593debafc9851844fff6a54fc5..579e268baddc13aa2b103ad7c846bed3d7ee9369
100644
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -999,7 +999,7 @@ bool IC::UpdatePolymorphicIC(State state,
Handle<String> name,
Handle<Code> code,
StrictModeFlag strict_mode) {
- if (code->type() == Code::NORMAL) return false;
+ if (code->kind() != Code::HANDLER) return false;
if (target()->ic_state() == MONOMORPHIC &&
target()->type() == Code::NORMAL) {
return false;
Index: src/log.cc
diff --git a/src/log.cc b/src/log.cc
index
5c404bb9523036b5060bcd29df9ec5ef04a47b86..92555b913688fe00cc61f1e4eae3d2fd7ac84307
100644
--- a/src/log.cc
+++ b/src/log.cc
@@ -1629,6 +1629,10 @@ void Logger::LogCodeObject(Object* object) {
description = "A builtin from the snapshot";
tag = Logger::BUILTIN_TAG;
break;
+ case Code::HANDLER:
+ description = "An IC handler from the snapshot";
+ tag = Logger::HANDLER_TAG;
+ break;
case Code::KEYED_LOAD_IC:
description = "A keyed load IC from the snapshot";
tag = Logger::KEYED_LOAD_IC_TAG;
Index: src/log.h
diff --git a/src/log.h b/src/log.h
index
81d45e507b4dbe51caf25b6feeeb714d4a4c0ec2..d61c985292673ba98129f8ac2b44bb56d9d2793e
100644
--- a/src/log.h
+++ b/src/log.h
@@ -131,6 +131,7 @@ struct TickSample;
V(CALLBACK_TAG, "Callback") \
V(EVAL_TAG, "Eval") \
V(FUNCTION_TAG, "Function") \
+ V(HANDLER_TAG, "Handler") \
V(KEYED_LOAD_IC_TAG, "KeyedLoadIC") \
V(KEYED_LOAD_POLYMORPHIC_IC_TAG, "KeyedLoadPolymorphicIC") \
V(KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG, "KeyedExternalArrayLoadIC") \
Index: src/mips/ic-mips.cc
diff --git a/src/mips/ic-mips.cc b/src/mips/ic-mips.cc
index
e250e0ee4a564f5636014f6e794570d7430aa03d..aa2773462c73266aa2d61a07f1635e13bd25f825
100644
--- a/src/mips/ic-mips.cc
+++ b/src/mips/ic-mips.cc
@@ -656,7 +656,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, a0, a2, a3, t0, t1, t2);
@@ -1496,7 +1496,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler*
masm,
// Get the receiver from the stack and probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, a1, a2, a3, t0, t1, t2);
Index: src/objects-inl.h
diff --git a/src/objects-inl.h b/src/objects-inl.h
index
48bd78e75485c984ccb56f42b4c450ff49587fa6..6bc6d1dc2cfd2194edf82c04e7f1b28dbd5addd9
100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -3790,6 +3790,7 @@ int Code::major_key() {
void Code::set_major_key(int major) {
ASSERT(kind() == STUB ||
+ kind() == HANDLER ||
kind() == BINARY_OP_IC ||
kind() == COMPARE_IC ||
kind() == COMPARE_NIL_IC ||
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
1399e33ffab4acb74f42abd63ad646747b9b61cc..e70346590e1af1bf09485a63910896e3f68efab6
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -10318,7 +10318,7 @@ void Code::FindAllCode(CodeHandleList* code_list,
int length) {
if (i++ == length) return;
RelocInfo* info = it.rinfo();
Code* code = Code::GetCodeFromTargetAddress(info->target_address());
- ASSERT(code->kind() == Code::STUB);
+ ASSERT(code->kind() == Code::HANDLER);
code_list->Add(Handle<Code>(code));
}
UNREACHABLE();
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index
3f229a85bf308af1ba5cdb9d6b1d8847c49f0968..0e065e67852d0368a5f8db95fb60e303a88b9471
100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -4763,6 +4763,7 @@ class Code: public HeapObject {
V(FUNCTION) \
V(OPTIMIZED_FUNCTION) \
V(STUB) \
+ V(HANDLER) \
V(BUILTIN) \
V(REGEXP)
Index: src/stub-cache.cc
diff --git a/src/stub-cache.cc b/src/stub-cache.cc
index
0318a3967c390c2276c93ed8a63e212fd50b8957..a2bb810266de0699ba4b58bbe3b54cd46a0f8cc7
100644
--- a/src/stub-cache.cc
+++ b/src/stub-cache.cc
@@ -140,7 +140,7 @@ Handle<Code> StubCache::FindLoadHandler(Handle<Name>
name,
? OWN_MAP : PROTOTYPE_MAP;
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeMonomorphicFlags(
- Code::STUB, Code::kNoExtraICState, type, kind, holder_flag);
+ Code::HANDLER, Code::kNoExtraICState, type, kind, holder_flag);
Handle<Object> probe(stub_holder->map()->FindInCodeCache(*name, flags),
isolate_);
if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -157,7 +157,7 @@ Handle<Code> StubCache::FindStoreHandler(Handle<Name>
name,
STANDARD_STORE, strict_mode);
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeMonomorphicFlags(
- Code::STUB, extra_ic_state, type, kind);
+ Code::HANDLER, extra_ic_state, type, kind);
Handle<Object> probe(receiver->map()->FindInCodeCache(*name, flags),
isolate_);
if (probe->IsCode()) return Handle<Code>::cast(probe);
@@ -1987,7 +1987,7 @@ Handle<Code> BaseLoadStubCompiler::GetCode(Code::Kind
kind,
Handle<Name> name) {
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState, type, kind);
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState, type, kind);
Handle<Code> code = GetCodeWithFlags(flags, name);
PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name));
JitEvent(name, code);
@@ -2000,7 +2000,7 @@ Handle<Code>
BaseStoreStubCompiler::GetCode(Code::Kind kind,
Handle<Name> name) {
ASSERT(type != Code::NORMAL);
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, extra_state(), type, kind);
+ Code::HANDLER, MONOMORPHIC, extra_state(), type, kind);
Handle<Code> code = GetCodeWithFlags(flags, name);
PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, *name));
JitEvent(name, code);
Index: src/type-info.cc
diff --git a/src/type-info.cc b/src/type-info.cc
index
190eb3e6fff90dbaad5d5d479d1da0b148b9c8a7..dbd37f7f79434c3232cfb65822eb0cedf59dc044
100644
--- a/src/type-info.cc
+++ b/src/type-info.cc
@@ -251,7 +251,7 @@ void TypeFeedbackOracle::LoadReceiverTypes(Property*
expr,
Handle<String> name,
SmallMapList* types) {
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
CollectReceiverTypes(expr->PropertyFeedbackId(), name, flags, types);
}
@@ -261,7 +261,7 @@ void TypeFeedbackOracle::StoreReceiverTypes(Assignment*
expr,
Handle<String> name,
SmallMapList* types) {
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::STORE_IC);
CollectReceiverTypes(expr->AssignmentFeedbackId(), name, flags, types);
}
Index: src/x64/ic-x64.cc
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc
index
4a7c68a53ca4db309ef6570819df88f3fa94aaa3..15f410c1345e8bbd4dc7db6a46494fa357763ed6
100644
--- a/src/x64/ic-x64.cc
+++ b/src/x64/ic-x64.cc
@@ -1330,7 +1330,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler*
masm) {
// Probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, Code::kNoExtraICState,
+ Code::HANDLER, MONOMORPHIC, Code::kNoExtraICState,
Code::NORMAL, Code::LOAD_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, rax, rcx, rbx, rdx);
@@ -1451,7 +1451,7 @@ void StoreIC::GenerateMegamorphic(MacroAssembler*
masm,
// Get the receiver from the stack and probe the stub cache.
Code::Flags flags = Code::ComputeFlags(
- Code::STUB, MONOMORPHIC, strict_mode,
+ Code::HANDLER, MONOMORPHIC, strict_mode,
Code::NORMAL, Code::STORE_IC);
masm->isolate()->stub_cache()->GenerateProbe(
masm, flags, rdx, rcx, rbx, no_reg);
--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.