Index: src/hydrogen.h |
diff --git a/src/hydrogen.h b/src/hydrogen.h |
index 818569b0919b0441bcb7a8f68b139c346e0d590c..067602ee0ed90e9f7893eecb76a84c8bf43c4177 100644 |
--- a/src/hydrogen.h |
+++ b/src/hydrogen.h |
@@ -1908,6 +1908,38 @@ inline HInstruction* HGraphBuilder::AddUncasted<HDeoptimize>( |
template<> |
+inline HLoadNamedField* |
+HGraphBuilder::Add<HLoadNamedField, HValue*, HValue*, HObjectAccess>( |
+ HValue* object, HValue* dependency, HObjectAccess access) { |
+ HLoadNamedField* object_properties = NULL; |
+ if (HLoadNamedField::PreferExtractLoadPropertiesPointer() && |
+ HLoadNamedField::NeedsPropertiesPointer(access)) { |
+ object_properties = Add<HLoadNamedField>( |
+ object, dependency, HObjectAccess::ForPropertiesPointer()); |
+ } |
+ return AddInstructionTyped(New<HLoadNamedField>( |
+ object, dependency, access, object_properties)); |
+} |
+ |
+ |
+template<> |
+inline HLoadNamedField* |
+HGraphBuilder::Add<HLoadNamedField, HValue*, HValue*, |
+ HObjectAccess, const UniqueSet<Map>*, HType>( |
+ HValue* object, HValue* dependency, HObjectAccess access, |
+ const UniqueSet<Map>* maps, HType type) { |
+ HLoadNamedField* object_properties = NULL; |
+ if (HLoadNamedField::PreferExtractLoadPropertiesPointer() && |
+ HLoadNamedField::NeedsPropertiesPointer(access)) { |
+ object_properties = Add<HLoadNamedField>( |
+ object, dependency, HObjectAccess::ForPropertiesPointer()); |
+ } |
+ return AddInstructionTyped(New<HLoadNamedField>( |
+ object, dependency, access, maps, type, object_properties)); |
+} |
+ |
+ |
+template<> |
inline HSimulate* HGraphBuilder::Add<HSimulate>( |
BailoutId id, |
RemovableSimulate removable) { |
@@ -1931,6 +1963,24 @@ inline HInstruction* HGraphBuilder::AddUncasted<HSimulate>(BailoutId id) { |
template<> |
+inline HStoreNamedField* |
+HGraphBuilder::Add<HStoreNamedField, HValue*, HObjectAccess, |
+ HValue*, StoreFieldOrKeyedMode, HValue*>( |
+ HValue* obj, HObjectAccess access, HValue* val, |
+ StoreFieldOrKeyedMode store_mode, HValue* obj_properties) { |
+ HLoadNamedField* object_properties = NULL; |
+ if (HStoreNamedField::PreferExtractLoadPropertiesPointer() && |
+ HStoreNamedField::NeedsPropertiesPointer(access)) { |
+ object_properties = Add<HLoadNamedField>( |
+ obj, reinterpret_cast<HValue*>(NULL), |
+ HObjectAccess::ForPropertiesPointer()); |
+ } |
+ return AddInstructionTyped(New<HStoreNamedField>( |
+ obj, access, val, store_mode, object_properties)); |
+} |
+ |
+ |
+template<> |
inline HReturn* HGraphBuilder::Add<HReturn>(HValue* value) { |
int num_parameters = graph()->info()->num_parameters(); |
HValue* params = AddUncasted<HConstant>(num_parameters); |