Commit Graph

296 Commits

Author SHA1 Message Date
bmeurer
a1b2ec60b0 [runtime] Move binary operator fallbacks into the runtime.
Replace the ADD, SUB, etc. builtins with proper runtime implementations,
and expose them as runtime calls that can be used by the code stubs and
the interpreter (for now).

Also remove all the support runtime functions for ADD, SUB and friends,
namely %NumberAdd, %NumberSub, and so on.

R=mstarzinger@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg,v8_linux_nosnap_dbg

Review URL: https://codereview.chromium.org/1333843002

Cr-Commit-Position: refs/heads/master@{#30680}
2015-09-10 13:04:33 +00:00
bmeurer
8a378f46d5 [es6] Initial steps towards a correct implementation of IsCallable.
This turns the has_instance_call_handler bit on Map into an is_callable
bit, that matches the spec definition of IsCallable (i.e. instances have
[[Call]] internal methods).

Also fix the typeof operator to properly say "function" for everything
that is callable.

Also remove the (unused) premature %_GetPrototype optimization from
Crankshaft, which just complicated the Map bit swap.

R=mstarzinger@chromium.org, rossberg@chromium.org, yangguo@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg

Review URL: https://codereview.chromium.org/1316933002

Cr-Commit-Position: refs/heads/master@{#30552}
2015-09-03 06:01:32 +00:00
mstarzinger
5f57ebe222 Make isolate.h usable without objects-inl.h header.
This CL us a pure refactoring that makes an empty compilation unit
including just "isolate.h" or "contexts.h" but not "objects-inl.h"
compile without warnings or errors. This is needed to further reduce
the header dependency tangle.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/1322883002

Cr-Commit-Position: refs/heads/master@{#30500}
2015-09-01 09:25:27 +00:00
bmeurer
f6c6d713b4 [es6] Implement spec compliant ToPrimitive in the runtime.
This is the first step towards a spec compliant ToPrimitive
implementation (and therefore spec compliant ToNumber, ToString,
ToName, and friends).  It adds support for the @@toPrimitive
symbol that was introduced with ES2015, and also adds the new
Symbol.prototype[@@toPrimitive] and Date.prototype[@@toPrimitive]
initial properties.

There are now runtime functions for %ToPrimitive, %ToNumber and
%ToString, which do the right thing and should be used as fallbacks
instead of the hairy runtime.js implementations.  I will do the
same for the other conversion operations mentioned by the spec in
follow up CLs.  Once everything is in place we can look into
optimizing things further, so that we don't always call into the
runtime.

Also fixed Date.prototype.toJSON to be spec compliant.

R=mstarzinger@chromium.org, yangguo@chromium.org
BUG=v8:4307
LOG=y

Review URL: https://codereview.chromium.org/1306303003

Cr-Commit-Position: refs/heads/master@{#30434}
2015-08-28 09:21:43 +00:00
mstarzinger
7fb31bdba4 Make Simulator respect C stack limits as well.
The simulator uses a separate JS stack, exhaustion of the C stack
however is not caught by JS limit checks. This change now lowers the
limit of the JS stack accordingly on function calls.

R=mvstanton@chromium.org
BUG=chromium:522380
TEST=mjsunit/regress/regress-crbug-522380
LOG=n

Review URL: https://codereview.chromium.org/1314623002

Cr-Commit-Position: refs/heads/master@{#30334}
2015-08-24 15:55:40 +00:00
mstarzinger
c9f3d892b2 Move StackGuard::InterruptRequested into StackLimitCheck.
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/1310253002

Cr-Commit-Position: refs/heads/master@{#30333}
2015-08-24 15:24:56 +00:00
binji
b7cf73271d Signal a blocked futex if the isolate is interrupted; don't busy-wait
FutexEmulation::Wait can potentially block forever on a condition variable. We
want to allow this to be interrupted (for a debugger, or to terminate the
thread, for example).

The previous implementation would periodically wake up the waiter to check for
interrupts. This CL modifies the StackGuard so it wakes the blocked futex if
the thread should be interrupted.

BUG=chromium:497295
R=jarin@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/1230303005

Cr-Commit-Position: refs/heads/master@{#30311}
2015-08-21 16:42:02 +00:00
yangguo
f3a4d2c550 No longer use js builtins object as receiver for calls into JS.
This is no longer necessary. Everything the callee needs should
be in its context chain.

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/1289203003

Cr-Commit-Position: refs/heads/master@{#30173}
2015-08-14 10:22:23 +00:00
bmeurer
3cc7adc7c4 [runtime] Simplify TO_INT32/TO_UINT32 abstract operations.
No need to provide TO_INT32/TO_UINT32 functions for every native
context, as they can be implemented in terms of TO_NUMBER more easily
and efficiently.

Also remove the obsolete TO_BOOLEAN_FUN_INDEX from the native contexts.

Review URL: https://codereview.chromium.org/1275013004

Cr-Commit-Position: refs/heads/master@{#30080}
2015-08-10 04:54:38 +00:00
bmeurer
4fc6f54724 [stubs] Unify (and optimize) implementation of ToObject.
This is the initial (big) step towards a more uniform implementation of
the ToObject abstract operation (ES6 7.1.13), where we have a fallback
implementation in JSReceiver::ToObject() and a fast (hydrogen) CodeStub
to deal with the fast case (we should be able to do more cleanup on this
in a followup CL).  For natives we expose the abstract operation via a
%_ToObject intrinsic, also exposed via a macro TO_OBJECT, that unifies
the previous confusion with TO_OBJECT_INLINE, ToObject, TO_OBJECT,
$toObject and %$toObject.  Now the whole implementation of the abstract
operation is context independent, meaning we don't need any magic in the
builtins object nor the native context.

R=mvstanton@chromium.org,yangguo@chromium.org

Review URL: https://codereview.chromium.org/1266013006

Cr-Commit-Position: refs/heads/master@{#29953}
2015-07-31 12:25:44 +00:00
verwaest
1f2755bf35 Fix keyed access of primitive objects in the runtime.
For now it uses a pretty slow path for accessing strings by wrapping it into a new temporary wrapper.

BUG=v8:4042, v8:3088
LOG=y

Review URL: https://codereview.chromium.org/1221303019

Cr-Commit-Position: refs/heads/master@{#29576}
2015-07-10 16:11:07 +00:00
verwaest
abaec424f5 Remove Execution::CharAt
BUG=

Review URL: https://codereview.chromium.org/1143153004

Cr-Commit-Position: refs/heads/master@{#28758}
2015-06-02 11:25:05 +00:00
erikcorry
4f5337a2b6 Cosmetic changes to tests to make it easier to concatenate them.
When compiling on a laptop I like to concatenate the small test files.
This makes a big difference to compile times. These changes make that
easier.

R=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1163803002

Cr-Commit-Position: refs/heads/master@{#28742}
2015-06-01 22:47:08 +00:00
jochen
5df3b4ab5c Update all callsites of the TryCatch ctor to pass an Isolate
BUG=4134
R=vogelheim@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/1154423004

Cr-Commit-Position: refs/heads/master@{#28678}
2015-05-28 12:49:41 +00:00
svenpanne
4d3044e161 Removed src/{isolate,property-details,utils}-inl.h
Baby steps towards saner #includes...

Review URL: https://codereview.chromium.org/1051393003

Cr-Commit-Position: refs/heads/master@{#27958}
2015-04-21 10:21:37 +00:00
yangguo
ae2057e81a Reland "Migrate error messages, part 2."
Review URL: https://codereview.chromium.org/1083083004

Cr-Commit-Position: refs/heads/master@{#27907}
2015-04-17 08:35:47 +00:00
machenbach
d881baaced Revert of Migrate error messages, part 2. (patchset #1 id:1 of https://codereview.chromium.org/1086313003/)
Reason for revert:
[Sheriff]: This changes layout test expectations e.g.
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Win/builds/2964

Original issue's description:
> Migrate error messages, part 2.
>
> Motivation for this is reducing the size of the native context.
>
> Committed: https://crrev.com/d3b788df0a4ccfedbe6e1df5e214cb6ba2792a65
> Cr-Commit-Position: refs/heads/master@{#27878}

TBR=mvstanton@chromium.org,yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1095573002

Cr-Commit-Position: refs/heads/master@{#27889}
2015-04-16 14:33:26 +00:00
yangguo
d3b788df0a Migrate error messages, part 2.
Motivation for this is reducing the size of the native context.

Review URL: https://codereview.chromium.org/1086313003

Cr-Commit-Position: refs/heads/master@{#27878}
2015-04-16 11:34:47 +00:00
ulan
3a814e4c1a Make climit and jslimit stack limits atomic.
This fixes TSAN failure caused by race between:
 - optimizing compiler thread setting climit
 - and json parser reading climit in the main thread.

BUG=

Review URL: https://codereview.chromium.org/1031223004

Cr-Commit-Position: refs/heads/master@{#27840}
2015-04-15 11:37:03 +00:00
jochen
e683048416 Reland "Remove support for thread-based recompilation"
Original issue's description:
> Remove support for thread-based recompilation
>
> BUG=v8:3608
> R=yangguo@chromium.org
> LOG=y
>
> Committed: https://crrev.com/ed5db223a19dfe126af01
> Cr-Commit-Position: refs/heads/master@{#27619}

BUG=v8:3608
R=yangguo@chromium.org
LOG=y

Review URL: https://codereview.chromium.org/1087763003

Cr-Commit-Position: refs/heads/master@{#27821}
2015-04-14 13:57:29 +00:00
jochen
cf663c487f Revert of Reland "Remove support for thread-based recompilation" (patchset #1 id:1 of https://codereview.chromium.org/1059853004/)
Reason for revert:
still times out

Original issue's description:
> Reland "Remove support for thread-based recompilation"
>
> Original issue's description:
> > Remove support for thread-based recompilation
> >
> > BUG=v8:3608
> > R=yangguo@chromium.org
> > LOG=y
> >
> > Committed: https://crrev.com/ed5db223a19dfe126af012e894582251aa3635d7
> > Cr-Commit-Position: refs/heads/master@{#27619}
>
> BUG=v8:3608
> R=yangguo@chromium.org
> LOG=y
>
> Committed: https://crrev.com/f1ceccb8b8b352a91e6366e3e3103f1db0df6afb
> Cr-Commit-Position: refs/heads/master@{#27813}

TBR=yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3608

Review URL: https://codereview.chromium.org/1082183003

Cr-Commit-Position: refs/heads/master@{#27816}
2015-04-14 12:29:26 +00:00
jochen
f1ceccb8b8 Reland "Remove support for thread-based recompilation"
Original issue's description:
> Remove support for thread-based recompilation
>
> BUG=v8:3608
> R=yangguo@chromium.org
> LOG=y
>
> Committed: https://crrev.com/ed5db223a19dfe126af012e894582251aa3635d7
> Cr-Commit-Position: refs/heads/master@{#27619}

BUG=v8:3608
R=yangguo@chromium.org
LOG=y

Review URL: https://codereview.chromium.org/1059853004

Cr-Commit-Position: refs/heads/master@{#27813}
2015-04-14 10:26:41 +00:00
yangguo
c4081d2503 Revert of Remove support for thread-based recompilation (patchset #1 id:1 of https://codereview.chromium.org/966653002/)
Reason for revert:
speculative revert due to gc-stress timeouts.

Original issue's description:
> Remove support for thread-based recompilation
>
> BUG=v8:3608
> R=yangguo@chromium.org
> LOG=y
>
> Committed: https://crrev.com/ed5db223a19dfe126af012e894582251aa3635d7
> Cr-Commit-Position: refs/heads/master@{#27619}

TBR=jochen@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
BUG=v8:3608
LOG=N

Review URL: https://codereview.chromium.org/1063383004

Cr-Commit-Position: refs/heads/master@{#27654}
2015-04-08 10:29:33 +00:00
Jochen Eisinger
ed5db223a1 Remove support for thread-based recompilation
BUG=v8:3608
R=yangguo@chromium.org
LOG=y

Review URL: https://codereview.chromium.org/966653002

Cr-Commit-Position: refs/heads/master@{#27619}
2015-04-07 10:59:57 +00:00
ulan
16ff37db4a Check for GC interrupt in JSON parser.
BUG=v8:3974
LOG=NO

Review URL: https://codereview.chromium.org/1021523002

Cr-Commit-Position: refs/heads/master@{#27334}
2015-03-20 09:52:25 +00:00
yangguo
dafd73016c Reland "Correctly propagate terminate exception in TryCall."
BUG=v8:3892
LOG=Y

Review URL: https://codereview.chromium.org/953463002

Cr-Commit-Position: refs/heads/master@{#26810}
2015-02-24 08:30:30 +00:00
machenbach
035b144b16 Revert of Correctly propagate terminate exception in TryCall. (patchset #2 id:20001 of https://codereview.chromium.org/928193002/)
Reason for revert:
See crbug.com/460412 and crbug.com/460356. Reverting on master in order to roll from master again soon.

Original issue's description:
> Correctly propagate terminate exception in TryCall.
>
> BUG=v8:3892
> LOG=Y
>
> Committed: https://crrev.com/a49b55b78844557b65a98e7a77dd26078157ed7f
> Cr-Commit-Position: refs/heads/master@{#26685}

TBR=ishell@chromium.org,yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3892

Review URL: https://codereview.chromium.org/946973004

Cr-Commit-Position: refs/heads/master@{#26792}
2015-02-23 07:17:30 +00:00
yangguo
a49b55b788 Correctly propagate terminate exception in TryCall.
BUG=v8:3892
LOG=Y

Review URL: https://codereview.chromium.org/928193002

Cr-Commit-Position: refs/heads/master@{#26685}
2015-02-17 11:44:43 +00:00
jochen
4357bef53b Add a flag to over approximate the weak closure during GC
BUG=v8:3862
R=hpayer@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/894703002

Cr-Commit-Position: refs/heads/master@{#26532}
2015-02-09 16:26:03 +00:00
dcarney
8064582626 Move the contents of api-natives.js to c++
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/895053002

Cr-Commit-Position: refs/heads/master@{#26426}
2015-02-04 13:01:44 +00:00
marja
c7851da4ae Introduce LanguageMode, drop StrictMode.
This enables adding more language modes in the future.

For maximum flexibility, LanguageMode is a bitmask, so we're not restricted to
use a sequence of language modes which are progressively stricter, but we can
express the language mode as combination of features.

For now, LanguageMode can only be "sloppy" or "strict", and there are
STATIC_ASSERTS in places which need to change when more modes are added.

LanguageMode is a bit like the old LanguageMode when "extended" mode was still
around (see https://codereview.chromium.org/8417035 and
https://codereview.chromium.org/181543002 ) except that it's transmitted through
all the layers (there's no StrictModeFlag).

BUG=

Review URL: https://codereview.chromium.org/894683003

Cr-Commit-Position: refs/heads/master@{#26419}
2015-02-04 09:34:26 +00:00
dcarney
8a78fd6d2e Reland "Call directly to c callbacks in Invoke instead of transitioning to js and back out"
BUG=

Review URL: https://codereview.chromium.org/869963002

Cr-Commit-Position: refs/heads/master@{#26245}
2015-01-23 11:22:20 +00:00
dcarney
5d14e4bcff Revert of Call directly to c callbacks in Invoke instead of transitioning to js and back out. (patchset #9 id:150001 of https://codereview.chromium.org/864273002/)
Reason for revert:
threading4 flakiness

Original issue's description:
> Call directly to c callbacks in Invoke instead of transitioning to js and back out.
>
> BUG=
>
> Committed: https://crrev.com/ce457e2b596c3ccf5bf454eeed0969f3f3efd174
> Cr-Commit-Position: refs/heads/master@{#26231}

TBR=verwaest@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.chromium.org/873583003

Cr-Commit-Position: refs/heads/master@{#26236}
2015-01-23 08:54:25 +00:00
dcarney
ce457e2b59 Call directly to c callbacks in Invoke instead of transitioning to js and back out.
BUG=

Review URL: https://codereview.chromium.org/864273002

Cr-Commit-Position: refs/heads/master@{#26231}
2015-01-22 21:37:20 +00:00
jochen
502407335d Add missing if (FLAG_verify_heap) checks around heap verification
BUG=chromium:449943
R=svenpanne@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/848403003

Cr-Commit-Position: refs/heads/master@{#26127}
2015-01-19 10:12:46 +00:00
yangguo
39cd762c6c Embed custom script into the snapshot.
R=vogelheim@chromium.org

Review URL: https://codereview.chromium.org/845973003

Cr-Commit-Position: refs/heads/master@{#26029}
2015-01-12 15:26:31 +00:00
alph
87e4bba31e Support multiple interrupt requests in v8 API.
There might be a number of clients that would like to
setup an interrupt request on the Isolate.

The patch also deprecates ClearInterrupt API. As long as
the interrupt handler is called outside of locks there's no way
to guarantee that the handler will not be called after
ClearInterrupt was invoked as it might have already started execution.

Review URL: https://codereview.chromium.org/796623003

Cr-Commit-Position: refs/heads/master@{#25910}
2014-12-20 07:54:19 +00:00
caitpotter88
aed5d734e6 Use proper ToLength() operation in %ArrayConcat()
LOG=N
R=dslomov@chromium.org
BUG=

Review URL: https://codereview.chromium.org/799853003

Cr-Commit-Position: refs/heads/master@{#25828}
2014-12-15 19:08:41 +00:00
yangguo@chromium.org
8cc5d418ee Special handling for inline caches in code serializer.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/656533003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 08:46:11 +00:00
yangguo@chromium.org
f92dc9a1fd Fix build failure.
TBR=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/650823002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 07:57:40 +00:00
yangguo@chromium.org
33dc53f9cc Always include full reloc info to stubs for serialization.
R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/641643006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 07:50:21 +00:00
yangguo@chromium.org
7be66cf5d7 Do not expose termination exceptions to the Exception API.
R=verwaest@chromium.org
BUG=403509
LOG=N

Review URL: https://codereview.chromium.org/516913003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:11:44 +00:00
bmeurer@chromium.org
90c8932596 Replace our homegrown ARRAY_SIZE() with Chrome's arraysize().
Our own ARRAY_SIZE() was pretty bad at error checking. If you use
arrasize() in a wrong way, the compiler will issue an error instead of
silently doing the wrong thing. The previous ARRAY_SIZE() macro is still
available as ARRAYSIZE_UNSAFE() similar to Chrome.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/501323002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 09:19:24 +00:00
bmeurer@chromium.org
d07a2eb806 Rename ASSERT* to DCHECK*.
This way we don't clash with the ASSERT* macros
defined by GoogleTest, and we are one step closer
to being able to replace our homegrown base/ with
base/ from Chrome.

R=jochen@chromium.org, svenpanne@chromium.org

Review URL: https://codereview.chromium.org/430503007

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 11:34:54 +00:00
ishell@chromium.org
ff134a1939 Stack overflow checkers are now compatible with ASAN's detect_stack_use_after_return mode.
BUG=chromium:376287
BUG=chromium:376262
BUG=chromium:369962
LOG=N
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/368053002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 08:52:28 +00:00
yangguo@chromium.org
2adbfced35 Reland "Add mechanism to postpone interrupts selectively."
BUG=v8:3408
LOG=N
R=yurys@chromium.org

Review URL: https://codereview.chromium.org/359963004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22142 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-02 08:05:40 +00:00
verwaest@chromium.org
26eae0c429 Clean up the global object naming madness.
BUG=
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/352173006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-01 12:12:34 +00:00
yangguo@chromium.org
965f7037c8 Revert "Add mechanism to postpone interrupts selectively."
This reverts commit r22073.

TBR=yurys@chromium.org

Review URL: https://codereview.chromium.org/362493002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 06:45:23 +00:00
yangguo@chromium.org
326bc2a533 Add mechanism to postpone interrupts selectively.
BUG=v8:3408
LOG=N
R=yurys@chromium.org

Review URL: https://codereview.chromium.org/359723005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 06:27:20 +00:00
yangguo@chromium.org
11368af66d Interrupts must not mask stack overflow.
R=jarin@chromium.org
BUG=385002
LOG=N

Review URL: https://codereview.chromium.org/339883002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-17 13:54:49 +00:00
jochen@chromium.org
56a486c322 Use full include paths everywhere
- this avoids using relative include paths which are forbidden by the style guide
- makes the code more readable since it's clear which header is meant
- allows for starting to use checkdeps

BUG=none
R=jkummerow@chromium.org, danno@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/304153016

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 08:12:43 +00:00
yangguo@chromium.org
19c71f9e47 Some more debugger-related refactorings.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/297303006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21607 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 12:51:19 +00:00
yangguo@chromium.org
97e550985e Release execution lock before dispatching interrupt handling.
R=yurys@chromium.org

Review URL: https://codereview.chromium.org/309533009

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21605 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 12:07:37 +00:00
yangguo@chromium.org
f1357a21d2 Some debugger-related clean-ups and renamings.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/300553008

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21604 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 11:41:50 +00:00
yangguo@chromium.org
95a9c7e565 Merge Debugger and Debug.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/301633005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 13:20:58 +00:00
jochen@chromium.org
84e078e561 Reland 21502 - "Move OS::MemCopy and OS::MemMove out of platform to utils"
Verified that arm builds locally.

BUG=none
TBR=jkummerow@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/306473004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 07:57:22 +00:00
jochen@chromium.org
eabd5a19b9 Revert 21502 - "Move OS::MemCopy and OS::MemMove out of platform to utils"
TBR=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/297303004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 19:56:27 +00:00
jochen@chromium.org
a5a21a0da4 Move OS::MemCopy and OS::MemMove out of platform to utils
Since both are jitted on some platforms and depend on codegen, they
don't belong to the platform abstraction. At the same time, I can't put
them to codegen.h, as this would introduce cyclic dependencies.

BUG=none
R=jkummerow@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/302563004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 19:33:15 +00:00
hpayer@chromium.org
6ed0102b1d Remove high promotion mode.
BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/296413004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21493 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 12:58:55 +00:00
yangguo@chromium.org
cf49b6e3ca Reland "Simplify debugger state."
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/299653002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21378 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 08:52:42 +00:00
vegorov@chromium.org
38f2d25a84 Ensure that interruptor callback registered through API is called outside of ExecutionAccess lock.
Such a coarse locking can cause a dead-lock when another thread is attempting to clear an interrupt while we are waiting in the interrupt callback.

Add test that verifies this API invariant.

BUG=chromium:374978
LOG=N
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/291123002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 08:24:51 +00:00
adamk@chromium.org
35b8b0b27a Move microtask queueing logic from JavaScript to C++
This avoids the appearence of a leak due to storing a JSObject
as the microtask_state in the strong root list, and allows callers
to call Isolate::RunMicrotasks() without having any v8::Context
available (as at least Blink has interest in doing).

The queue is now a strong root, represented as a FixedArray of JSFunctions
(or empty_fixed_array, if it's empty); it doubles in size when it needs to grow.
The number of elements in the queue is stored in Isolate::pending_microtask_count().

LOG=Y
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/290633010

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-19 07:57:04 +00:00
svenpanne@chromium.org
7ac5dfbd3e Revert "Simplify debugger state."
This reverts r21346, it broke the layout tests.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/292713002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-19 07:06:44 +00:00
yangguo@chromium.org
2d1a75d608 Simplify debugger state.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/287873005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-16 14:58:03 +00:00
yangguo@chromium.org
33fba3bfa1 Remove DebuggerAgent.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/279423004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21315 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-14 16:28:46 +00:00
yangguo@chromium.org
3ccedf8952 Clean up debugger flags.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/261253005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 13:47:01 +00:00
yangguo@chromium.org
cb2bec3b47 Revert "Revert interrupt handling code changed in r21208."
This reverts commit r21252.

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/284483002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 11:52:44 +00:00
yangguo@chromium.org
b25513e367 Revert interrupt handling code changed in r21208.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/277233004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 07:43:47 +00:00
yangguo@chromium.org
c02ad39c10 Clean up stack guard interrupts.
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/264233005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21208 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 09:13:12 +00:00
haraken@chromium.org
570fd74fc0 Fix |RunMicrotasks()| leaking reference to the last context being run on.
RunMicrotasks() executes pending tasks and swaps the old array with a new array. However, the new array contains the reference to the current context as its creation context. This prevents the context from gc-ed until RunMicrotasks() is executed in the different context.

BUG=crbug.com/367016
LOG=y
R=rafaelw@chromium.org, rossberg@chromium.org

Review URL: https://codereview.chromium.org/250883002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-02 08:00:47 +00:00
yangguo@chromium.org
88144ee17f Kiss goodbye to MaybeObject.
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/259173003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21086 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-30 12:25:18 +00:00
yangguo@chromium.org
cb2f43cb14 Always include debugger support.
Motivation: we do not have test coverage for debuggersupport=off.

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/256653004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20969 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 11:00:37 +00:00
yangguo@chromium.org
28f5cf398e Trigger debug event on not yet caught exception in promises.
R=aandrey@chromium.org, rossberg@chromium.org, yurys@chromium.org
BUG=v8:3093
LOG=Y

Review URL: https://codereview.chromium.org/249503002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20956 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 07:03:05 +00:00
yangguo@chromium.org
6d250412f1 Clean up some uses of Failures and MaybeObjects.
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/245963007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-23 15:08:03 +00:00
yangguo@chromium.org
41bfa036b3 Return Object* instead of MaybeObject* from runtime calls.
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/240053010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 12:50:58 +00:00
yangguo@chromium.org
cf7c8181f0 Remove assertion from callers of TryCall.
R=ishell@chromium.org
BUG=363280
LOG=N

Review URL: https://codereview.chromium.org/238753003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20748 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-15 07:56:00 +00:00
yangguo@chromium.org
80a974ba00 Reland "Handlify GetProperty."
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/235083002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 12:47:34 +00:00
yangguo@chromium.org
93c9717473 Revert "Handlify GetProperty."
This reverts r20682.

TBR=dcarney@chromium.org

Review URL: https://codereview.chromium.org/234893003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 11:56:54 +00:00
yangguo@chromium.org
a3d68ca64d Handlify GetProperty.
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/233233004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20682 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 11:26:22 +00:00
yangguo@chromium.org
380ae9810e Return MaybeHandle from Invoke.
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/231883007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 10:41:09 +00:00
yurys@chromium.org
681c15eb4e Remove debugger_auto_break flag
The flag was introduced to support console debugger in Chrome. That debugger was replaced by DevTools long time ago and the flag is always true now.

BUG=None
LOG=Y
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/220743003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-01 11:23:23 +00:00
bmeurer@chromium.org
f1f6c3c9d4 Cleanup bootstrapper, execution and factory modules.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/219233002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-31 12:01:02 +00:00
yangguo@chromium.org
1037a883de Clean up some "GetProperty" methods/functions.
Runtime::GetObjectProperty:
  - handled string.charAt, element access and property access
  - now handlified
GetProperty in handles.cc:
  - called to Runtime::GetObjectProperty
  - now removed
Object::GetProperty (handlified version):
  - handled element access and property access
  - now changed to only do property access
New: Object::GetPropertyOrElement:
  - handles element access and property access

R=ishell@chromium.org

Review URL: https://codereview.chromium.org/210953005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20327 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-28 09:49:27 +00:00
yangguo@chromium.org
8b8fb30e7f Reland "Remove Failure::OutOfMemory propagation and V8::IgnoreOutOfMemoryException."
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/209903003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20184 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 10:07:15 +00:00
yangguo@chromium.org
03866841aa Revert "Remove Failure::OutOfMemory propagation and V8::IgnoreOutOfMemoryException."
This reverts r20179.

TBR=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/201573007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 09:17:18 +00:00
yangguo@chromium.org
62f65d8697 Remove Failure::OutOfMemory propagation and V8::IgnoreOutOfMemoryException.
R=dcarney@chromium.org
BUG=v8:3060
LOG=Y

Review URL: https://codereview.chromium.org/208263002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 08:47:45 +00:00
yangguo@chromium.org
77a28b731d Handlify callers to GetElementNoException.
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/204693002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-20 12:22:13 +00:00
yangguo@chromium.org
d8c3c5ef0a Introduce API to trigger exception on JS execution.
R=jochen@chromium.org, pmarch@chromium.org

Review URL: https://codereview.chromium.org/203223013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 13:06:53 +00:00
yangguo@chromium.org
0bc684a794 Introduce per-isolate assert scopes and API to guard JS execution.
R=jochen@chromium.org

Review URL: https://codereview.chromium.org/198253004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-19 11:31:43 +00:00
rossberg@chromium.org
8e3f3cee9e Eliminate extended mode, and other modes clean-up
- Merge LanguageMode and StrictModeFlag enums
- Make harmony-scoping depend only on strict mode
- Free some bits on the way
- Plus additional clean-up and renaming

R=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/181543002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19800 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 14:41:22 +00:00
rossberg@chromium.org
3f702d4bf9 Mode clean-up pt 1: rename classic/non-strict mode to sloppy mode
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/177683002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19799 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 14:39:08 +00:00
hpayer@chromium.org
22602980c0 Added a special stack guard to deopt marked allocation sites.
BUG=
R=mvstanton@chromium.org, ulan@chromium.org

Review URL: https://codereview.chromium.org/169563002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19404 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 12:15:16 +00:00
rafaelw@chromium.org
6b5a4cdef2 V8 Microtask Queue & API
This patch generalizes Object.observe callbacks and promise resolution into a FIFO queue called a "microtask queue".

It also exposes new V8 API which exposes the microtask queue to the embedder. In particular, it allows the embedder to

-schedule a microtask (EnqueueExternalMicrotask)
-run the microtask queue (RunMicrotasks)
-control whether the microtask queue is run automatically within V8 when the last script exits (SetAutorunMicrotasks).

R=dcarney@chromium.org, rossberg@chromium.org, dcarney, rossberg, svenpanne
BUG=

Review URL: https://codereview.chromium.org/154283002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 22:04:19 +00:00
hpayer@chromium.org
76284bdcad Deopt marked code at safe deoptimization point when pretenuring.
BUG=
R=bmeurer@chromium.org, mvstanton@chromium.org

Review URL: https://codereview.chromium.org/138033012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18641 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-16 11:54:12 +00:00
vegorov@chromium.org
0b5b395bc1 Try fixing NaCl V8 compilation failure by initializing interrupt_callback_data_.
TBR=dcarney@chromium.org
BUG=

Review URL: https://codereview.chromium.org/116093006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-19 17:09:38 +00:00
vegorov@chromium.org
bc77d4d60a Reland r18363.
Introduce API to temporarily interrupt long running JavaScript code.

It is different from termination API as interrupted JavaScript will continue to execute normally when registered InterruptCallback returns.

  /**
   * Request V8 to interrupt long running JavaScript code and invoke
   * the given |callback| passing the given |data| to it. After |callback|
   * returns control will be returned to the JavaScript code.
   * At any given moment V8 can remember only a single callback for the very
   * last interrupt request.
   * Can be called from another thread without acquiring a |Locker|.
   * Registered |callback| must not reenter interrupted Isolate.
   */
  void RequestInterrupt(InterruptCallback callback, void* data);

  /**
   * Clear interrupt request created by |RequestInterrupt|.
   * Can be called from another thread without acquiring a |Locker|.
   */
  void ClearInterrupt();

Fix Hydrogen SCE pass to avoid eliminating stack guards too aggressively. Only normal JavaScript functions are guaranteed to have stack guard in the prologue. If function is a builtin or has a custom call IC it will lack one.

Changes from r18363:

- includes r18364 to fix compilation errors: removes debugging only code;

- makes interrupiton related tests not threaded, because they rely on having exclusive access to the V8 instance and the fact that they can only interrupt themselves, if they are interrupted from the outside they break;

- changes HasStackCheck predicate used during SCE pass to avoid handles dereference to make SCE compatible with parallel recompilation.

R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/104823008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18375 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-19 16:45:58 +00:00
vegorov@chromium.org
dd8a793962 Revert "Introduce API to temporarily interrupt long running JavaScript code."
This reverts commit r18363.

Revert "Fix compilation error introduced by r18363."

This reverts commit r18364.

Changes in SCE pass are incompatible with parallel compilation

TBR=dcarney@chromium.org
BUG=

Review URL: https://codereview.chromium.org/101463003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 19:21:27 +00:00
vegorov@chromium.org
64d2dfa232 Introduce API to temporarily interrupt long running JavaScript code.
It is different from termination API as interrupted JavaScript will continue to execute normally when registered InterruptCallback returns.

  /**
   * Request V8 to interrupt long running JavaScript code and invoke
   * the given |callback| passing the given |data| to it. After |callback|
   * returns control will be returned to the JavaScript code.
   * At any given moment V8 can remember only a single callback for the very
   * last interrupt request.
   * Can be called from another thread without acquiring a |Locker|.
   * Registered |callback| must not reenter interrupted Isolate.
   */
  void RequestInterrupt(InterruptCallback callback, void* data);

  /**
   * Clear interrupt request created by |RequestInterrupt|.
   * Can be called from another thread without acquiring a |Locker|.
   */
  void ClearInterrupt();

Fix Hydrogen SCE pass to avoid eliminating stack guards too aggressively. Only normal JavaScript functions are guaranteed to have stack guard in the prologue. If function is a builtin or has a custom call IC it will lack one.

BUG=
R=danno@chromium.org, dcarney@chromium.org

Review URL: https://codereview.chromium.org/102063004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 18:38:35 +00:00
rossberg@chromium.org
e943623b12 Harmony promises
Based on prototype at

  https://github.com/rossberg-chromium/js-promise

which informed the latest spec draft version at

  https://github.com/domenic/promises-unwrapping/blob/master/README.md

Activated by --harmony-promises.

Feature complete with respect to the draft spec, plus the addition of .when and .deferred methods. Final naming and other possible deviations from the current draft will hopefully be resolved soon after the next TC39 meeting.

This CL also generalises the Object.observe delivery loop into a simplistic microtask loop. Currently, all observer events are delivered before invoking any promise handler in a single fixpoint iteration. It's not clear yet what the final semantics is supposed to be (should there be a global event ordering?), but it will probably require a more thorough event loop abstraction inside V8 once we get there.

R=dslomov@chromium.org, yhirano@chromium.org
BUG=

Review URL: https://codereview.chromium.org/64223010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-27 17:21:40 +00:00
jochen@chromium.org
662dd44875 Remove preemption thread and API
BUG=v8:3004
R=svenpanne@chromium.org, yangguo@chromium.org
LOG=y

Review URL: https://codereview.chromium.org/62283010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17967 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-21 13:47:37 +00:00