Skip to content
This repository has been archived by the owner on Oct 9, 2019. It is now read-only.

Commit

Permalink
Drop dependency on Guava
Browse files Browse the repository at this point in the history
  • Loading branch information
dinesh-bolkensteyn-sonarsource committed Oct 3, 2017
1 parent 7f8acf7 commit 3317ad9
Show file tree
Hide file tree
Showing 18 changed files with 90 additions and 90 deletions.
5 changes: 0 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,6 @@
<artifactId>sslr-core</artifactId>
<version>1.22</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>10.0.1</version>
</dependency>

<dependency>
<groupId>org.easytesting</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Arrays;
import java.util.List;

public class AllocaInstructionSyntax extends InstructionSyntax {
Expand All @@ -14,7 +13,7 @@ public AllocaInstructionSyntax(
IdentifierSyntax result, SyntaxToken equalToken, SyntaxToken allocaToken, TypeSyntax type,
SyntaxToken commaToken, SyntaxToken alignToken, SyntaxToken alignment) {

this.children = ImmutableList.of(
this.children = Arrays.asList(
result, equalToken, allocaToken, type,
commaToken, alignToken, alignment);

Expand Down
15 changes: 8 additions & 7 deletions src/main/java/org/sonar/example/llvm/ir/BuiltinTypeSyntax.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
package org.sonar.example.llvm.ir;

import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class BuiltinTypeSyntax extends TypeSyntax {

private static final Set<String> SUPPORTED_TYPES = ImmutableSet.of("i32", "i64");
private static final Set<String> SUPPORTED_TYPES = new HashSet<>(Arrays.asList("i32", "i64"));
private final SyntaxToken token;

public BuiltinTypeSyntax(SyntaxToken token) {
this.token = token;
Preconditions.checkArgument(SUPPORTED_TYPES.contains(token.toString()), "Unsupported built-in type: " + token.toString());
if (!SUPPORTED_TYPES.contains(token.toString())) {
throw new IllegalArgumentException("Unsupported built-in type: " + token.toString());
}
}

@Override
public List<SyntaxNode> children() {
return ImmutableList.<SyntaxNode>of(token);
return Collections.singletonList(token);
}

}
5 changes: 2 additions & 3 deletions src/main/java/org/sonar/example/llvm/ir/CustomTypeSyntax.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Collections;
import java.util.List;

public class CustomTypeSyntax extends TypeSyntax {
Expand All @@ -14,7 +13,7 @@ public CustomTypeSyntax(SyntaxToken token) {

@Override
public List<SyntaxNode> children() {
return ImmutableList.<SyntaxNode>of(token);
return Collections.singletonList(token);
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class FunctionDefinitionSyntax extends SyntaxNode {
Expand All @@ -17,16 +18,15 @@ public FunctionDefinitionSyntax(
SyntaxToken unnamedAddressToken,
SyntaxToken openBraceToken, List<InstructionSyntax> instructions, SyntaxToken closeBraceToken) {

ImmutableList.Builder<SyntaxNode> childrenBuilder = ImmutableList.builder();

childrenBuilder.add(
ArrayList<SyntaxNode> children = new ArrayList<>();
children.addAll(Arrays.asList(
defineToken, voidToken, identifier,
openParenToken, paramType, param, closeParenToken,
unnamedAddressToken);
childrenBuilder.add(openBraceToken);
childrenBuilder.addAll(instructions);
childrenBuilder.add(closeBraceToken);
this.children = childrenBuilder.build();
unnamedAddressToken));
children.add(openBraceToken);
children.addAll(instructions);
children.add(closeBraceToken);
this.children = Collections.unmodifiableList(children);

this.identifier = identifier;
this.param = param;
Expand Down
24 changes: 13 additions & 11 deletions src/main/java/org/sonar/example/llvm/ir/GepInstructionSyntax.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import org.sonar.example.llvm.ir.IrSyntaxFactory.Tuple;

import java.util.List;
Expand All @@ -18,22 +20,22 @@ public GepInstructionSyntax(
TypeSyntax pointerType, IdentifierSyntax pointer,
List<Tuple<SyntaxToken, TypeSyntax, IntegerLiteralSyntax>> indexes) {

ImmutableList.Builder<SyntaxNode> childrenBuilder = ImmutableList.builder();
ImmutableList.Builder<IntegerLiteralSyntax> indexValuesBuilder = ImmutableList.builder();
childrenBuilder.add(
ArrayList<SyntaxNode> children = new ArrayList<>();
ArrayList<IntegerLiteralSyntax> indexValues = new ArrayList<>();
children.addAll(Arrays.asList(
result, equalToken,
gepToken, inboundsToken,
pointerType, pointer);
pointerType, pointer));
for (Tuple<SyntaxToken, TypeSyntax, IntegerLiteralSyntax> index : indexes) {
childrenBuilder.add(index.first());
childrenBuilder.add(index.second());
childrenBuilder.add(index.third());
children.add(index.first());
children.add(index.second());
children.add(index.third());

indexValuesBuilder.add(index.third());
indexValues.add(index.third());
}

this.children = childrenBuilder.build();
this.indexValues = indexValuesBuilder.build();
this.children = Collections.unmodifiableList(children);
this.indexValues = Collections.unmodifiableList(indexValues);

this.result = result;
this.pointer = pointer;
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/org/sonar/example/llvm/ir/IdentifierSyntax.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Collections;
import java.util.List;

public class IdentifierSyntax extends ExpressionSyntax {
Expand All @@ -14,7 +13,7 @@ public IdentifierSyntax(SyntaxToken token) {

@Override
public List<SyntaxNode> children() {
return ImmutableList.<SyntaxNode>of(token);
return Collections.singletonList(token);
}

public String name() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Collections;
import java.util.List;

public class IntegerLiteralSyntax extends ExpressionSyntax {
Expand All @@ -14,7 +13,7 @@ public IntegerLiteralSyntax(SyntaxToken token) {

@Override
public List<SyntaxNode> children() {
return ImmutableList.<SyntaxNode>of(token);
return Collections.singletonList(token);
}

public int value() {
Expand Down
10 changes: 6 additions & 4 deletions src/main/java/org/sonar/example/llvm/ir/IrSyntaxFactory.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package org.sonar.example.llvm.ir;

import com.google.common.base.Preconditions;

import javax.annotation.Nullable;

import java.util.List;
Expand Down Expand Up @@ -29,7 +27,9 @@ public CustomTypeSyntax customType(SyntaxToken token) {
}

public PointerTypeSyntax pointerType(TypeSyntax type, List<SyntaxToken> starTokens) {
Preconditions.checkArgument(starTokens.size() >= 1);
if (starTokens.isEmpty()) {
throw new IllegalArgumentException();
}

PointerTypeSyntax result = null;
for (SyntaxToken starToken : starTokens) {
Expand Down Expand Up @@ -112,7 +112,9 @@ public U second() {
}

public V third() {
Preconditions.checkNotNull(third);
if (third == null) {
throw new NullPointerException();
}
return third;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class LoadInstructionSyntax extends InstructionSyntax {
Expand All @@ -15,10 +15,10 @@ public LoadInstructionSyntax(
TypeSyntax pointerType, IdentifierSyntax pointer,
SyntaxToken commaToken, SyntaxToken alignToken, SyntaxToken alignment) {

this.children = ImmutableList.of(
this.children = Collections.unmodifiableList(Arrays.asList(
result, equalToken, loadToken,
pointerType, pointer,
commaToken, alignToken, alignment);
commaToken, alignToken, alignment));

this.result = result;
this.pointer = pointer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Collections;
import java.util.List;

public class NullLiteralSyntax extends ExpressionSyntax {
Expand All @@ -14,7 +13,7 @@ public NullLiteralSyntax(SyntaxToken token) {

@Override
public List<SyntaxNode> children() {
return ImmutableList.<SyntaxNode>of(token);
return Collections.singletonList(token);
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class PointerTypeSyntax extends TypeSyntax {
Expand All @@ -16,7 +16,7 @@ public PointerTypeSyntax(TypeSyntax type, SyntaxToken starToken) {

@Override
public List<SyntaxNode> children() {
return ImmutableList.of(type, starToken);
return Collections.unmodifiableList(Arrays.asList(type, starToken));
}

public TypeSyntax type() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Arrays;
import java.util.List;

public class RetInstructionSyntax extends InstructionSyntax {

private final List<SyntaxNode> children;

public RetInstructionSyntax(SyntaxToken retToken, SyntaxToken voidToken) {
this.children = ImmutableList.<SyntaxNode>of(retToken, voidToken);
this.children = Arrays.asList(retToken, voidToken);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.sonar.example.llvm.ir;

import com.google.common.collect.ImmutableList;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class StoreInstructionSyntax extends InstructionSyntax {
Expand All @@ -16,11 +16,11 @@ public StoreInstructionSyntax(
SyntaxToken commaToken1, TypeSyntax pointerType, IdentifierSyntax pointer,
SyntaxToken commaToken2, SyntaxToken alignToken, SyntaxToken alignment) {

this.children = ImmutableList.of(
this.children = Collections.unmodifiableList(Arrays.asList(
storeToken,
valueType, value,
commaToken1, pointerType, pointer,
commaToken2, alignToken, alignment);
commaToken2, alignToken, alignment));

this.value = value;
this.pointer = pointer;
Expand Down
30 changes: 19 additions & 11 deletions src/main/java/org/sonar/example/llvm/ir/SymbolicExecutor.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package org.sonar.example.llvm.ir;

import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;

import java.util.HashMap;
import java.util.Map;

public class SymbolicExecutor {

private final Map<String, BaseValue> values = Maps.newHashMap();
private final Map<BaseValue, BaseValue> memory = Maps.newHashMap();
private final Map<String, BaseValue> values = new HashMap<>();
private final Map<BaseValue, BaseValue> memory = new HashMap<>();

public void evaluate(FunctionDefinitionSyntax f) {
newLeftValue(f.param(), new SymbolicValue());
Expand All @@ -22,20 +20,28 @@ public void evaluate(FunctionDefinitionSyntax f) {
StoreInstructionSyntax s = (StoreInstructionSyntax) i;

BaseValue value = get(s.value());
Preconditions.checkState(!value.isUninitialized(), "Cannot read an uninitialized value \"" + s.value().toString() + "\"! " + i.toString());
if (value.isUninitialized()) {
throw new IllegalStateException("Cannot read an uninitialized value \"" + s.value().toString() + "\"! " + i.toString());
}

BaseValue pointer = get(s.pointer());
Preconditions.checkState(!pointer.isNull(), "NPE: " + i.toString());
if (pointer.isNull()) {
throw new IllegalStateException("NPE: " + i.toString());
}

store(pointer, value);
} else if (i instanceof LoadInstructionSyntax) {
LoadInstructionSyntax l = (LoadInstructionSyntax) i;

BaseValue pointer = get(l.pointer());
Preconditions.checkState(!pointer.isNull(), "NPE: " + i.toString());
if (pointer.isNull()) {
throw new IllegalStateException("NPE: " + i.toString());
}

BaseValue value = load(pointer);
Preconditions.checkState(!value.isUninitialized(), "Cannot load an uninitialized value from memory! " + i.toString());
if (value.isUninitialized()) {
throw new IllegalStateException("Cannot load an uninitialized value from memory! " + i.toString());
}

set(l.result(), value);
} else if (i instanceof GepInstructionSyntax) {
Expand Down Expand Up @@ -67,7 +73,9 @@ private void newLeftValue(IdentifierSyntax identifier, BaseValue value) {

private void set(IdentifierSyntax identifier, BaseValue value) {
String key = identifier.name();
Preconditions.checkState(!values.containsKey(key), "Cannot rewrite the value of: " + identifier.toString());
if (values.containsKey(key)) {
throw new IllegalStateException("Cannot rewrite the value of: " + identifier.toString());
}
values.put(key, value);
}

Expand Down Expand Up @@ -111,7 +119,7 @@ public BaseValue addressOf(int index) {

public static class SymbolicValue extends BaseValue {

private final Map<Integer, SymbolicValue> indexAddresses = Maps.newHashMap();
private final Map<Integer, SymbolicValue> indexAddresses = new HashMap<>();

@Override
public BaseValue addressOf(int index) {
Expand Down
Loading

0 comments on commit 3317ad9

Please sign in to comment.