public override void Visit(ReadPropertyExpression node) { Visit((ReadIndexerExpression)node); }
public override void Visit(ReadPropertyExpression node) { unfinishedClone = new ReadPropertyExpression(GetCloneOf(node.Container), (StringLiteral)GetCloneOf(node.Index)); Visit((Indexer)node); //We need to skip ReadIndexerExpression // TODO: Why are we visiting Indexer? }
public override void Visit(ReadPropertyExpression node) { UpdateType(node, TypeCalculator.GetType(node)); }
public override void Visit(ReadPropertyExpression node) { AssignToImplicitReturn(node); }
public override void Visit(ReadPropertyExpression node) { var nodeProfile = _currProfiler.GetNodeProfile(node); if (_currFuncMetadata.EnableInlineCache && nodeProfile != null && nodeProfile.Map != null && nodeProfile.PD != null && nodeProfile.PD.IsDataDescriptor && !nodeProfile.PD.IsInherited) { PushLocation(node); var value = _localVars.PushTemporary(Types.DValue.TypeOf); var stackState = _localVars.GetTemporaryStackState(); VisitNode(node.Container); AsDObject(); node.AssignFieldId(); _ilGen.Ldc_I4(node.FieldId); _ilGen.Ldloca(value); _ilGen.Ldc_I4(nodeProfile.Map.UniqueId); _ilGen.Ldc_I4(nodeProfile.PD.Index); _ilGen.Call(Types.Operations.Internals.GetFieldUsingIC); _ilGen.Ldloca(value); _result.ValueType = mdr.ValueTypes.DValueRef; PopLocation(); } else if (_currFuncMetadata.EnableInlineCache && nodeProfile != null && nodeProfile.Map != null && nodeProfile.PD != null && nodeProfile.PD.IsDataDescriptor && nodeProfile.PD.IsInherited) { int inheritCacheIndex = JSRuntime.UpdateInheritPropertyObjectCache(nodeProfile.PD); if (inheritCacheIndex != -1) { PushLocation(node); var value = _localVars.PushTemporary(Types.DValue.TypeOf); VisitNode(node.Container); AsDObject(); node.AssignFieldId(); _ilGen.Ldc_I4(node.FieldId); _ilGen.Ldloca(value); _ilGen.Ldc_I4(nodeProfile.Map.UniqueId); _ilGen.Ldc_I4(nodeProfile.PD.Index); _ilGen.Ldc_I4(inheritCacheIndex); _ilGen.Call(Types.Operations.Internals.GetInheritFieldUsingIC); _ilGen.Ldloca(value); _result.ValueType = mdr.ValueTypes.DValueRef; PopLocation(); } else { base.Visit(node); } } else { // if (nodeProfile == null) // nodeProfile.PD.HasAttributes(mdr.PropertyDescriptor.Attributes.NotConfigurable)) // Trace.WriteLine("Missing profile data {0} {1} {2}!", node, node.ProfileIndex, _currFuncMetadata); base.Visit(node); } }
public override void Visit(ReadPropertyExpression node) { throw new NotImplementedException(); }