Revision: 15612
Author: [email protected]
Date: Thu Jul 11 00:52:57 2013
Log: Fix StoreIsUninitialized, and add Soft Deopt if keyed store is
uninitialized.
[email protected]
Review URL: https://chromiumcodereview.appspot.com/18526005
http://code.google.com/p/v8/source/detail?r=15612
Modified:
/branches/bleeding_edge/src/hydrogen.cc
/branches/bleeding_edge/src/type-info.cc
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc Wed Jul 10 09:34:28 2013
+++ /branches/bleeding_edge/src/hydrogen.cc Thu Jul 11 00:52:57 2013
@@ -5996,8 +5996,14 @@
expr->GetStoreMode(), has_side_effects);
} else {
if (is_store) {
+ if (expr->IsAssignment() && expr->AsAssignment()->IsUninitialized())
{
+ AddSoftDeoptimize();
+ }
instr = BuildStoreKeyedGeneric(obj, key, val);
} else {
+ if (expr->AsProperty()->IsUninitialized()) {
+ AddSoftDeoptimize();
+ }
instr = BuildLoadKeyedGeneric(obj, key);
}
AddInstruction(instr);
=======================================
--- /branches/bleeding_edge/src/type-info.cc Wed Jul 10 09:03:00 2013
+++ /branches/bleeding_edge/src/type-info.cc Thu Jul 11 00:52:57 2013
@@ -141,7 +141,7 @@
bool TypeFeedbackOracle::StoreIsUninitialized(TypeFeedbackId ast_id) {
Handle<Object> map_or_code = GetInfo(ast_id);
if (map_or_code->IsMap()) return false;
- if (!map_or_code->IsCode()) return true;
+ if (!map_or_code->IsCode()) return false;
Handle<Code> code = Handle<Code>::cast(map_or_code);
return code->ic_state() == UNINITIALIZED;
}
--
--
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.