@Override public Atom getName() { return fieldRef.getName(); }
@Override public String toString() { return "field " + ref.getName(); }
@Override public Atom getName() { return ref.getName(); }
@Override public Atom getName() { return ref.getName(); }
/** * is field a direct (WALA-internal) reference to the global object? */ private static boolean directGlobalObjectRef(FieldReference field) { return field.getName().toString().endsWith(GLOBAL_OBJ_VAR_NAME); }
/** * is field a direct (WALA-internal) reference to the global object? */ private static boolean directGlobalObjectRef(FieldReference field) { return field.getName().toString().endsWith(GLOBAL_OBJ_VAR_NAME); }
public String getGlobalName() { return getDeclaredField().getName().toString(); } }
public String getGlobalName() { return getDeclaredField().getName().toString(); } }
@Override public void visitAstGlobalWrite(AstGlobalWrite instruction) { String propName = instruction.getDeclaredField().getName().toString(); // hack to account for global variables assert propName.startsWith("global "); propName = propName.substring("global ".length()); visitPut(instruction.getVal(), propName); }
@Override public void visitAstGlobalWrite(AstGlobalWrite instruction) { String propName = instruction.getDeclaredField().getName().toString(); // hack to account for global variables assert propName.startsWith("global "); propName = propName.substring("global ".length()); visitPut(instruction.getVal(), propName); }
private static FieldReference makeNonGlobalFieldReference(FieldReference field) { String nonGlobalFieldName = field.getName().toString().substring(7); field = FieldReference.findOrCreate(JavaScriptTypes.Root, Atom.findOrCreateUnicodeAtom(nonGlobalFieldName), JavaScriptTypes.Root); return field; }
private static FieldReference makeNonGlobalFieldReference(FieldReference field) { String nonGlobalFieldName = field.getName().toString().substring(7); field = FieldReference.findOrCreate(JavaScriptTypes.Root, Atom.findOrCreateUnicodeAtom(nonGlobalFieldName), JavaScriptTypes.Root); return field; }
@Override public void visitGet(SSAGetInstruction get) { String propName = get.getDeclaredField().getName().toString(); if(propName.startsWith("global ")) propName = propName.substring("global ".length()); Vertex v = factory.makePropVertex(propName), w = factory.makeVarVertex(func, get.getDef()); flowgraph.addEdge(v, w); handleLexicalDef(get.getDef()); }
@Override public void visitGet(SSAGetInstruction get) { String propName = get.getDeclaredField().getName().toString(); if(propName.startsWith("global ")) propName = propName.substring("global ".length()); Vertex v = factory.makePropVertex(propName), w = factory.makeVarVertex(func, get.getDef()); flowgraph.addEdge(v, w); handleLexicalDef(get.getDef()); }
@Override public String getSignature() { return getDeclaringClass().getName() + "." + getName() + ' ' + getFieldType().getName(); }
@Override public final String toString() { return "< " + getDeclaringClass().getClassLoader().getName() + ", " + getDeclaringClass().getName() + ", " + getName() + ", " + fieldType + " >"; }
@Override public String toString(SymbolTable symbolTable) { return getValueString(symbolTable, lval) + " (" + pointeeType.getName() + ") " + " = &" + getValueString(symbolTable, addressVal) + ((indexVal != -1) ? '[' + getValueString(symbolTable, indexVal) + ']' : (field != null) ? '.' + field.getName().toString() : ""); }
@Override public final String toString() { return "< " + getDeclaringClass().getClassLoader().getName() + ", " + getDeclaringClass().getName() + ", " + getName() + ", " + fieldType + " >"; }
@Override public String toString(SymbolTable symbolTable) { return getValueString(symbolTable, lval) + " (" + pointeeType.getName() + ") " + " = &" + getValueString(symbolTable, addressVal) + ((indexVal != -1) ? '[' + getValueString(symbolTable, indexVal) + ']' : (field != null) ? '.' + field.getName().toString() : ""); }
@Test public void testQualifiedStatic() throws IllegalArgumentException, CancelException, IOException { runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), Collections.singletonList( cg -> { MethodReference mref = descriptorToMethodRef("Source#QualifiedStatic#main#([Ljava/lang/String;)V", cg.getClassHierarchy()); CGNode node = cg.getNodes(mref).iterator().next(); SSAInstruction s = node.getIR().getInstructions()[4]; Assert.assertTrue("Did not find a getstatic instruction.", s instanceof SSAGetInstruction && ((SSAGetInstruction) s).isStatic()); final FieldReference field = ((SSAGetInstruction) s).getDeclaredField(); Assert.assertEquals("Expected a getstatic for 'value'.", field.getName().toString(), "value"); Assert.assertEquals("Expected a getstatic for 'value'.", field.getDeclaringClass().getName().toString(), "LFooQ"); }), true, null); }