X87: Only generate a single normal IC per kind per slow-mode map.

port r22680

original commit message:

  only generate a single normal IC per kind per slow-mode map.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/423393003

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 5372a2a7
...@@ -1299,9 +1299,15 @@ Handle<Code> PropertyICCompiler::CompilePolymorphic(TypeHandleList* types, ...@@ -1299,9 +1299,15 @@ Handle<Code> PropertyICCompiler::CompilePolymorphic(TypeHandleList* types,
if (check == PROPERTY && if (check == PROPERTY &&
(kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) { (kind() == Code::KEYED_LOAD_IC || kind() == Code::KEYED_STORE_IC)) {
// In case we are compiling an IC for dictionary loads and stores, just
// check whether the name is unique.
if (name.is_identical_to(isolate()->factory()->normal_ic_symbol())) {
__ JumpIfNotUniqueName(this->name(), &miss);
} else {
__ cmp(this->name(), Immediate(name)); __ cmp(this->name(), Immediate(name));
__ j(not_equal, &miss); __ j(not_equal, &miss);
} }
}
Label number_case; Label number_case;
Label* smi_target = IncludesNumberType(types) ? &number_case : &miss; Label* smi_target = IncludesNumberType(types) ? &number_case : &miss;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment