Package com.google.speedtracer.client.model.V8SymbolTable

Examples of com.google.speedtracer.client.model.V8SymbolTable.V8Symbol


    double address = parseAddress(logEntries.get(2), ADDRESS_TAG_CODE);
    int executableSize = Integer.parseInt(logEntries.get(3));

    // Keep some debugging stats around
    V8Symbol found = symbolTable.lookup(address);

    if (found != null) {
      debugStats.addCollisions++;
    }

    V8Symbol symbol = new V8Symbol(scrubStringForXSS(name), symbolType,
        address, executableSize);

    // We have a heuristic for finding the resource for a Code Creation for
    // functions. The symbol name and function length. It is just a guess, seems
    // to work, and its better than not knowing 100% of the time where a symbol
    // comes from.
    if (symbolType.getValue() == SYMBOL_TYPE_LAZY_COMPILE) {
      lazyCompiledSymbols.put(symbol.getJsSymbol().getSymbolName()
          + symbol.getAddressSpan().addressLength, symbol);
    }

    if (symbolType.getValue() == SYMBOL_TYPE_FUNCTION) {
      V8Symbol lazySymbol = lazyCompiledSymbols.get(symbol.getJsSymbol().getSymbolName()
          + symbol.getAddressSpan().addressLength);
      if (lazySymbol != null) {
        symbol.getJsSymbol().merge(lazySymbol.getJsSymbol());
      }
    }

    symbolTable.add(symbol);
  }
View Full Code Here


   * code-delete, address
   */
  private void parseV8CodeDeleteEntry(JsArrayString logEntries) {
    assert logEntries.length() == 2;
    double address = parseAddress(logEntries.get(1), ADDRESS_TAG_CODE);
    V8Symbol symbol = symbolTable.lookup(address);
    if (symbol != null) {
      symbolTable.remove(symbol);
    } else {
      // update debugging stats
      debugStats.removeMisses++;
View Full Code Here

   */
  private void parseV8CodeMoveEntry(JsArrayString logEntries) {
    assert logEntries.length() == 3;
    double fromAddress = parseAddress(logEntries.get(1), ADDRESS_TAG_CODE);
    double toAddress = parseAddress(logEntries.get(2), ADDRESS_TAG_CODE_MOVE);
    V8Symbol symbol = symbolTable.lookup(fromAddress);
    if (symbol != null) {
      symbolTable.remove(symbol);
      symbol.getAddressSpan().setAddress(toAddress);
      symbolTable.add(symbol);
    } else {
      // update debugging stats
      debugStats.moveMisses++;
    }
View Full Code Here

    // double stackAddress = parseAddress(logEntries.get(2), ADDRESS_TAG_STACK);
    int vmState = Integer.parseInt(logEntries.get(3));
    currentProfile.addStateTime(vmState, 1.0);

    List<V8Symbol> symbols = new ArrayList<V8Symbol>();
    V8Symbol found = symbolTable.lookup(address);
    if (found != null) {
      symbols.add(found);
    }
    addressTags.put(ADDRESS_TAG_SCRATCH, address);
    for (int i = 4; i < logEntries.length(); ++i) {
View Full Code Here

    if (symbols.size() == 0) {
      recordUnknownTick(flatProfile, vmState);
    } else {
      Set<V8Symbol> addresses = new HashSet<V8Symbol>();
      for (int i = 0; i < symbols.size(); ++i) {
        V8Symbol symbol = symbols.get(i);
        // We don't want to double-record recursive calls.
        if (!addresses.contains(symbol)) {
          recordAddressInProfile(flatProfile, symbol, i > 0);
          addresses.add(symbol);
        }
View Full Code Here

        + "code-creation,LazyCompile,59117070,2791,\"last_click http://www.reddit.com/static/reddit.js?v=437941e91e4684e9b4b00eca75a46dd9:62\"\n";
    JavaScriptProfileEvent rawEvent = makeV8ProfileEvent(logRecs);
    JavaScriptProfile profile = new JavaScriptProfile();
    impl.parseRawEvent(rawEvent, null, profile);
    assertEquals(0.0, profile.getTotalTime());
    V8Symbol found = impl.findSymbol(0x5910913e);
    assertNotNull(found);
  }
View Full Code Here

  }

  public void testSymbolTable() {
    V8SymbolTable symbolTable = new V8SymbolTable();
    AliasableEntry mockSymbolType = new AliasableEntry("Mock", 1);
    V8Symbol symbolOne = new V8Symbol("test1", mockSymbolType, 0x100, 0x10);
    assertEquals("test1 : 0x100-0x110", symbolOne.toString());
    symbolTable.add(symbolOne);
    V8Symbol symbolTwo = new V8Symbol("test2", mockSymbolType, 0x120, 0x5);
    assertEquals("test2 : 0x120-0x125", symbolTwo.toString());
    symbolTable.add(symbolTwo);
    V8Symbol symbolThree = new V8Symbol("test3", mockSymbolType, 0x90, 0x5);
    assertEquals("test3 : 0x90-0x95", symbolThree.toString());
    symbolTable.add(symbolThree);

    assertEquals(symbolOne.toString(), symbolTable.lookup(0x100).toString());
    assertEquals(symbolOne.toString(), symbolTable.lookup(0x101).toString());
    assertEquals(symbolOne.toString(), symbolTable.lookup(0x110).toString());
    assertEquals(symbolTwo.toString(), symbolTable.lookup(0x120).toString());
    assertEquals(symbolTwo.toString(), symbolTable.lookup(0x121).toString());
    assertEquals(symbolTwo.toString(), symbolTable.lookup(0x125).toString());
    assertEquals(symbolThree.toString(), symbolTable.lookup(0x90).toString());
    assertEquals(symbolThree.toString(), symbolTable.lookup(0x94).toString());
    assertEquals(symbolThree.toString(), symbolTable.lookup(0x95).toString());

    // Make sure address lookups outside the range fail
    assertNull(symbolTable.lookup(0x50));
    assertNull(symbolTable.lookup(0x96));
    assertNull(symbolTable.lookup(0x99));
View Full Code Here

TOP

Related Classes of com.google.speedtracer.client.model.V8SymbolTable.V8Symbol

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.