Index: src/arm/codegen-arm.cc |
=================================================================== |
--- src/arm/codegen-arm.cc (revision 4479) |
+++ src/arm/codegen-arm.cc (working copy) |
@@ -5229,25 +5229,37 @@ |
set_comment("[ DeferredReferenceGetNamedValue"); |
} |
+ virtual void BeforeGenerate(); |
virtual void Generate(); |
+ virtual void AfterGenerate(); |
private: |
Handle<String> name_; |
}; |
+void DeferredReferenceGetNamedValue::BeforeGenerate() { |
+ __ StartBlockConstPool(); |
+} |
+ |
+ |
void DeferredReferenceGetNamedValue::Generate() { |
__ IncrementCounter(&Counters::named_load_inline_miss, 1, r1, r2); |
// Setup the name register and call load IC. |
__ mov(r2, Operand(name_)); |
Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize)); |
__ Call(ic, RelocInfo::CODE_TARGET); |
- // The call must be followed by a b instruction to indicate that the inobject |
- // property case was inlined. Jumping back from the deferred code ensures |
- // that. |
+ // The call must be followed by a nop(1) instruction to indicate that the |
+ // inobject has been inlined. |
+ __ nop(NAMED_PROPERTY_LOAD_INLINED); |
} |
+void DeferredReferenceGetNamedValue::AfterGenerate() { |
+ __ EndBlockConstPool(); |
+} |
+ |
+ |
void CodeGenerator::EmitNamedLoad(Handle<String> name, bool is_contextual) { |
if (is_contextual || scope()->is_global_scope() || loop_nesting() == 0) { |
Comment cmnt(masm(), "[ Load from named Property"); |