| 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");
|
|
|