Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Unified Diff: src/hydrogen-instructions.h

Issue 108413003: HStoreNamedField for Smis optimized for x64 (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/hydrogen-instructions.h
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index 23dbbd289c6c5d5a9e07697368e9fba6ab05e22d..71cd70cd89027e86cdec4a3567c3073898582752 100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -6532,8 +6532,12 @@ class HStoreNamedField V8_FINAL : public HTemplateInstruction<3> {
field_representation().IsUInteger16() ||
field_representation().IsInteger32()) {
return Representation::Integer32();
- } else if (field_representation().IsDouble() ||
- field_representation().IsSmi()) {
+ } else if (field_representation().IsDouble()) {
+ return field_representation();
+ } else if (field_representation().IsSmi()) {
+ if (SmiValuesAre32Bits()) {
+ return Representation::Integer32();
+ }
return field_representation();
} else if (field_representation().IsExternal()) {
return Representation::External();
@@ -6561,6 +6565,11 @@ class HStoreNamedField V8_FINAL : public HTemplateInstruction<3> {
HValue* new_space_dominator() const { return new_space_dominator_; }
bool has_transition() const { return has_transition_; }
+ // Controls whether it is guaranteed that the smi word already contains
+ // correct smi tag (currently applicable only for x64).
+ bool can_omit_smi_tag_store() const { return can_omit_smi_tag_store_; }
+ void set_can_omit_smi_tag_store(bool v) { can_omit_smi_tag_store_ = v; }
Toon Verwaest 2013/12/09 15:51:10 I'd rather distinguish between "initializing store
Igor Sheludko 2013/12/10 09:13:08 Good suggestion! Done.
+
Handle<Map> transition_map() const {
if (has_transition()) {
return Handle<Map>::cast(
@@ -6614,7 +6623,8 @@ class HStoreNamedField V8_FINAL : public HTemplateInstruction<3> {
: access_(access),
new_space_dominator_(NULL),
write_barrier_mode_(UPDATE_WRITE_BARRIER),
- has_transition_(false) {
+ has_transition_(false),
+ can_omit_smi_tag_store_(false) {
SetOperandAt(0, obj);
SetOperandAt(1, val);
SetOperandAt(2, obj);
@@ -6625,6 +6635,7 @@ class HStoreNamedField V8_FINAL : public HTemplateInstruction<3> {
HValue* new_space_dominator_;
WriteBarrierMode write_barrier_mode_ : 1;
bool has_transition_ : 1;
+ bool can_omit_smi_tag_store_ : 1;
};
« no previous file with comments | « src/hydrogen.cc ('k') | src/objects-inl.h » ('j') | src/x64/lithium-codegen-x64.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698