1. 10 Feb, 2016 1 commit
  2. 08 Feb, 2016 1 commit
  3. 05 Feb, 2016 3 commits
    • mstarzinger's avatar
      [interpreter] Rename HandlerTable::depth field. · badaf79f
      mstarzinger authored
      This makes the field in question more generic by renaming it from the
      previous "depth" to "data". Pure refactoring, no function change.
      
      R=rmcilroy@chromium.org,yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1670983003
      
      Cr-Commit-Position: refs/heads/master@{#33779}
      badaf79f
    • zhengxing.li's avatar
      [debugger] Use code offsets from frame summary in FromFrame Function. · a0f6d5ed
      zhengxing.li authored
      The CL 33579 (https://codereview.chromium.org/1618343002) use code offsets instead of raw PC where possible.
      
      But the offset maybe come from an optimized frame, not the un-optimized frame that FromCodeOffset and BreakIndexFromCodeOffset function expect.
      So The offset from optimized frame can't be used in FromCodeOffset and  BreakIndexFromCodeOffset function.
      
      This CL use the frame summary to find the corresponding code offset in unoptimized code according to Yang's suggestion.
      
      Review URL: https://codereview.chromium.org/1663113002
      
      Cr-Commit-Position: refs/heads/master@{#33778}
      a0f6d5ed
    • mvstanton's avatar
      Revert of Type Feedback Vector lives in the closure (patchset #2 id:40001 of... · 3f36e658
      mvstanton authored
      Revert of Type Feedback Vector lives in the closure (patchset #2 id:40001 of https://codereview.chromium.org/1668103002/ )
      
      Reason for revert:
      Must revert for now due to chromium api natives issues.
      
      Original issue's description:
      > Type Feedback Vector lives in the closure
      >
      > (RELAND: the problem before was a missing write barrier for adding the code
      > entry to the new closure. It's been addressed with a new macro instruction
      > and test. The only change to this CL is the addition of two calls to
      > __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.)
      >
      > We get less "pollution" of type feedback if we have one vector per native
      > context, rather than one for the whole system. This CL moves the vector
      > appropriately.
      >
      > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      > vector actually lives in the first slot of the literals array (indeed there is
      > great commonality between those arrays, they can be thought of as the same
      > thing). So we make greater effort to ensure there is a valid literals array
      > after compilation.
      >
      > This meant, for performance reasons, that we needed to extend
      > FastNewClosureStub to support creating closures with literals. And ultimately,
      > it drove us to move the optimized code map lookup out of FastNewClosureStub
      > and into the compile lazy builtin.
      >
      > The heap change is trivial so I TBR Hannes for it...
      > Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too.
      > And Benedikt reviewed it as well.
      >
      > TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org
      >
      > BUG=
      >
      > Committed: https://crrev.com/bb31db3ad6de16f86a61f6c7bbfd3274e3d957b5
      > Cr-Commit-Position: refs/heads/master@{#33741}
      
      TBR=bmeurer@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/1670813005
      
      Cr-Commit-Position: refs/heads/master@{#33766}
      3f36e658
  4. 04 Feb, 2016 2 commits
    • cbruni's avatar
      [proxies] allow duplicate keys for [[OwnPropertyKeys]] trap. · 07d05ddd
      cbruni authored
      BUG=v8:4724, v8:1543
      LOG=N
      
      Review URL: https://codereview.chromium.org/1668853002
      
      Cr-Commit-Position: refs/heads/master@{#33747}
      07d05ddd
    • mvstanton's avatar
      Type Feedback Vector lives in the closure · bb31db3a
      mvstanton authored
      (RELAND: the problem before was a missing write barrier for adding the code
      entry to the new closure. It's been addressed with a new macro instruction
      and test. The only change to this CL is the addition of two calls to
      __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.)
      
      We get less "pollution" of type feedback if we have one vector per native
      context, rather than one for the whole system. This CL moves the vector
      appropriately.
      
      We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      vector actually lives in the first slot of the literals array (indeed there is
      great commonality between those arrays, they can be thought of as the same
      thing). So we make greater effort to ensure there is a valid literals array
      after compilation.
      
      This meant, for performance reasons, that we needed to extend
      FastNewClosureStub to support creating closures with literals. And ultimately,
      it drove us to move the optimized code map lookup out of FastNewClosureStub
      and into the compile lazy builtin.
      
      The heap change is trivial so I TBR Hannes for it...
      Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too.
      And Benedikt reviewed it as well.
      
      TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1668103002
      
      Cr-Commit-Position: refs/heads/master@{#33741}
      bb31db3a
  5. 01 Feb, 2016 1 commit
    • yangguo's avatar
      [debugger] correctly find function context. · 835b0383
      yangguo authored
      In the debugger we are interested in getting the context for the
      current frame, which is usually a function context. To do that,
      we used to call Context::declaration_context, which may also
      return a block context. This is wrong and can lead to crashes.
      Instead, we now use a newly introduced Context::closure_context,
      which skips block contexts. This works fine for the debugger,
      since we have other means to find and materialize block contexts.
      
      R=rossberg@chromium.org
      BUG=chromium:582051
      LOG=N
      
      Review URL: https://codereview.chromium.org/1648263002
      
      Cr-Commit-Position: refs/heads/master@{#33627}
      835b0383
  6. 29 Jan, 2016 1 commit
    • jkummerow's avatar
      Introduce {FAST,SLOW}_STRING_WRAPPER_ELEMENTS · f4872f74
      jkummerow authored
      String wrappers (new String("foo")) are special objects: their string
      characters are accessed like elements, and they also have an elements
      backing store. This used to require a bunch of explicit checks like:
      
      if (obj->IsJSValue() && JSValue::cast(obj)->value()->IsString()) {
        /* Handle string characters */
      }
      // Handle regular elements (for string wrappers and other objects)
      obj->GetElementsAccessor()->Whatever(...);
      
      This CL introduces new ElementsKinds for string wrapper objects (one for
      fast elements, one for dictionary elements), which allow folding the
      special-casing into new StringWrapperElementsAccessors.
      
      No observable change in behavior is intended.
      
      Review URL: https://codereview.chromium.org/1612323003
      
      Cr-Commit-Position: refs/heads/master@{#33616}
      f4872f74
  7. 28 Jan, 2016 1 commit
  8. 27 Jan, 2016 2 commits
    • mvstanton's avatar
      Revert of Type Feedback Vector lives in the closure (patchset #2 id:20001 of... · a7027851
      mvstanton authored
      Revert of Type Feedback Vector lives in the closure (patchset #2 id:20001 of https://codereview.chromium.org/1642613002/ )
      
      Reason for revert:
      Bug: failing to use write barrier when writing code entry into closure.
      
      Original issue's description:
      > Reland of Type Feedback Vector lives in the closure
      >
      > (Fixed a bug found by nosnap builds.)
      >
      > We get less "pollution" of type feedback if we have one vector per native
      > context, rather than one for the whole system. This CL moves the vector
      > appropriately.
      >
      > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      > vector actually lives in the first slot of the literals array (indeed there is
      > great commonality between those arrays, they can be thought of as the same
      > thing). So we make greater effort to ensure there is a valid literals array
      > after compilation.
      >
      > This meant, for performance reasons, that we needed to extend
      > FastNewClosureStub to support creating closures with literals. And ultimately,
      > it drove us to move the optimized code map lookup out of FastNewClosureStub
      > and into the compile lazy builtin.
      >
      > The heap change is trivial so I TBR Hannes for it...
      >
      > TBR=hpayer@chromium.org
      > BUG=
      >
      > Committed: https://crrev.com/d984b3b0ce91e55800f5323b4bb32a06f8a5aab1
      > Cr-Commit-Position: refs/heads/master@{#33548}
      
      TBR=bmeurer@chromium.org,yangguo@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/1643533003
      
      Cr-Commit-Position: refs/heads/master@{#33556}
      a7027851
    • mvstanton's avatar
      Reland of Type Feedback Vector lives in the closure · d984b3b0
      mvstanton authored
      (Fixed a bug found by nosnap builds.)
      
      We get less "pollution" of type feedback if we have one vector per native
      context, rather than one for the whole system. This CL moves the vector
      appropriately.
      
      We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      vector actually lives in the first slot of the literals array (indeed there is
      great commonality between those arrays, they can be thought of as the same
      thing). So we make greater effort to ensure there is a valid literals array
      after compilation.
      
      This meant, for performance reasons, that we needed to extend
      FastNewClosureStub to support creating closures with literals. And ultimately,
      it drove us to move the optimized code map lookup out of FastNewClosureStub
      and into the compile lazy builtin.
      
      The heap change is trivial so I TBR Hannes for it...
      
      TBR=hpayer@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1642613002
      
      Cr-Commit-Position: refs/heads/master@{#33548}
      d984b3b0
  9. 26 Jan, 2016 3 commits
    • yangguo's avatar
      [debugger] muting break positions should work for the entire statement. · 8349ee0c
      yangguo authored
      A statement could have several break positions. The entire statement
      should be considered muted if break points across all these break
      positions evaluate to false.
      
      R=verwaest@chromium.org
      BUG=chromium:429167
      LOG=N
      
      Review URL: https://codereview.chromium.org/1615903002
      
      Cr-Commit-Position: refs/heads/master@{#33522}
      8349ee0c
    • mvstanton's avatar
      Revert of Type Feedback Vector lives in the closure (patchset #12 id:260001 of... · e2e7dc32
      mvstanton authored
      Revert of Type Feedback Vector lives in the closure (patchset #12 id:260001 of https://codereview.chromium.org/1563213002/ )
      
      Reason for revert:
      FAilure on win32 bot, need to investigate webkit failures.
      
      Original issue's description:
      > Type Feedback Vector lives in the closure
      >
      > We get less "pollution" of type feedback if we have one vector per native
      > context, rather than one for the whole system. This CL moves the vector
      > appropriately.
      >
      > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      > vector actually lives in the first slot of the literals array (indeed there is
      > great commonality between those arrays, they can be thought of as the same
      > thing). So we make greater effort to ensure there is a valid literals array
      > after compilation.
      >
      > This meant, for performance reasons, that we needed to extend
      > FastNewClosureStub to support creating closures with literals. And ultimately,
      > it drove us to move the optimized code map lookup out of FastNewClosureStub
      > and into the compile lazy builtin.
      >
      > The heap change is trivial so I TBR Hannes for it...
      >
      > TBR=hpayer@chromium.org
      >
      > BUG=
      >
      > Committed: https://crrev.com/a5200f7ed4d11c6b882fa667da7a1864226544b4
      > Cr-Commit-Position: refs/heads/master@{#33518}
      
      TBR=bmeurer@chromium.org,akos.palfi@imgtec.com
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/1632993003
      
      Cr-Commit-Position: refs/heads/master@{#33520}
      e2e7dc32
    • mvstanton's avatar
      Type Feedback Vector lives in the closure · a5200f7e
      mvstanton authored
      We get less "pollution" of type feedback if we have one vector per native
      context, rather than one for the whole system. This CL moves the vector
      appropriately.
      
      We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      vector actually lives in the first slot of the literals array (indeed there is
      great commonality between those arrays, they can be thought of as the same
      thing). So we make greater effort to ensure there is a valid literals array
      after compilation.
      
      This meant, for performance reasons, that we needed to extend
      FastNewClosureStub to support creating closures with literals. And ultimately,
      it drove us to move the optimized code map lookup out of FastNewClosureStub
      and into the compile lazy builtin.
      
      The heap change is trivial so I TBR Hannes for it...
      
      TBR=hpayer@chromium.org
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1563213002
      
      Cr-Commit-Position: refs/heads/master@{#33518}
      a5200f7e
  10. 21 Jan, 2016 2 commits
  11. 14 Jan, 2016 1 commit
  12. 22 Dec, 2015 1 commit
    • bmeurer's avatar
      [runtime] Rewrite Function.prototype.toString in C++. · 4acca53e
      bmeurer authored
      There's actually no point trying to do Function.prototype.toString in
      JavaScript, as it always calls into C++ at least once, so it only
      complicates things (esp. once we start optimizing bound functions).
      
      Drive-by-fix: Rename FunctionApply and FunctionCall builtins to also
      reflect the fact that these are builtins in the Function.prototype and
      not on Function itself.
      
      TBR=hpayer@chromium.org
      R=yangguo@chromium.org
      BUG=chromium:535408
      LOG=n
      
      Review URL: https://codereview.chromium.org/1540953004
      
      Cr-Commit-Position: refs/heads/master@{#32996}
      4acca53e
  13. 18 Dec, 2015 1 commit
  14. 17 Dec, 2015 2 commits
  15. 16 Dec, 2015 3 commits
    • yangguo's avatar
      [debugger] simplify step over recursive function call. · 2bb6e197
      yangguo authored
      The problem is this: when stepping over a recursive function call,
      the recursive function is flooded with one-shot break points so that
      we break after the call, but since the callee is the same function,
      the callee is also flooded, resulting a break in the callee. That
      however would have been a "step in" instead of "step over".
      
      The original solution was to recognize this by comparing FP. If we
      end up in Debug::Break, we still have to check the current FP against
      the remembered FP to see whether we are on the same stack height.
      If we are deeper, then it's not a "step over", and we do not trigger
      a debug break event. In that case, we queue up the step-over, and
      temporarily step out until we hit the desired stack height. Note that
      in order to step out, we flood the caller, which in our example is
      the same function as the callee. So we break at every flooded break
      location, and comparing with FP to make sure we stepped out prevents
      us from triggering debug break events.
      
      The new solution simply ignores breaks when the FP compare fails.
      We simply carry on until we hit a break where the FP compare succeeds.
      There is no need to do a step out. The number of calls to Debug::Break
      that do not trigger a debug break event due to failing FP compare is
      the same. But the code is a lot easier to read.
      
      R=jkummerow@chromium.org
      
      Review URL: https://codereview.chromium.org/1527253002
      
      Cr-Commit-Position: refs/heads/master@{#32897}
      2bb6e197
    • yangguo's avatar
      [debugger] remove step count parameter from prepare step. · 8bee91a5
      yangguo authored
      And tons of changes to debugger tests.
      
      R=bmeurer@chromium.org
      BUG=chromium:569835
      LOG=N
      
      Review URL: https://codereview.chromium.org/1525173003
      
      Cr-Commit-Position: refs/heads/master@{#32885}
      8bee91a5
    • yangguo's avatar
      [debugger] remove some dead code. · b68f7e4c
      yangguo authored
      credits to gcov.
      
      R=cbruni@chromium.org
      
      Review URL: https://codereview.chromium.org/1522273003
      
      Cr-Commit-Position: refs/heads/master@{#32877}
      b68f7e4c
  16. 15 Dec, 2015 4 commits
  17. 14 Dec, 2015 3 commits
    • machenbach's avatar
      Revert of [debugger] debug-evaluate should not not modify local values.... · a2f2e913
      machenbach authored
      Revert of [debugger] debug-evaluate should not not modify local values. (patchset #2 id:20001 of https://codereview.chromium.org/1513183003/ )
      
      Reason for revert:
      [Sheriff] Layout test changes.
      
      Original issue's description:
      > [debugger] debug-evaluate should not not modify local values.
      >
      > Debug evaluate no longer writes back changes to the replicated
      > context chain to the original after execution. Changes to the
      > global object or script contexts still stick. Calling functions
      > that bind to the original context chain also have their expected
      > side effects.
      >
      > As far as I can tell, DevTools is not interested in modifying
      > local variable values. Modifying global variable values still
      > works as expected. However, I have not yet removed the old
      > implementation, but merely keep it behind a flag.
      >
      > R=mstarzinger@chromium.org, rossberg@chromium.org
      >
      > Committed: https://crrev.com/92caa9b85eefffbef51c67428397951bd2e2c330
      > Cr-Commit-Position: refs/heads/master@{#32841}
      
      TBR=mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1526553003
      
      Cr-Commit-Position: refs/heads/master@{#32845}
      a2f2e913
    • yangguo's avatar
      [debugger] debug-evaluate should not not modify local values. · 92caa9b8
      yangguo authored
      Debug evaluate no longer writes back changes to the replicated
      context chain to the original after execution. Changes to the
      global object or script contexts still stick. Calling functions
      that bind to the original context chain also have their expected
      side effects.
      
      As far as I can tell, DevTools is not interested in modifying
      local variable values. Modifying global variable values still
      works as expected. However, I have not yet removed the old
      implementation, but merely keep it behind a flag.
      
      R=mstarzinger@chromium.org, rossberg@chromium.org
      
      Review URL: https://codereview.chromium.org/1513183003
      
      Cr-Commit-Position: refs/heads/master@{#32841}
      92caa9b8
    • yangguo's avatar
      [debugger] fix debug-evaluate wrt shadowed context var. · 089edbfa
      yangguo authored
      Debug-evaluate used to resolve stack variables that shadow
      context variables incorrectly, since the stack variable is
      not visible in the context chain.
      
      To fix this, we limit local variables accessible by debug-
      evaluate to the ones directly referenced inside the function.
      What is not referenced by the function itself, is considered
      optimized out and not accessible by debug-evaluate.
      
      To achieve this, we duplicate the entire context chain up to
      the native context, and write back changes after debug-
      evaluate. Changes to the original context chain will however
      be overwritten. This already happens for catch and block
      scopes though.
      
      Also fix a crash caused by declaring variables inside debug-
      evaluate.
      
      R=mstarzinger@chromium.org
      BUG=v8:4593
      LOG=N
      
      Review URL: https://codereview.chromium.org/1500933002
      
      Cr-Commit-Position: refs/heads/master@{#32828}
      089edbfa
  18. 07 Dec, 2015 2 commits
  19. 04 Dec, 2015 5 commits
  20. 03 Dec, 2015 1 commit