Commit Graph

4008 Commits

Author SHA1 Message Date
srdjan@google.com 70d8860c17 Optimize concatenation of lists of onebyte strings by implementing it in Dart.
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22532 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 21:33:03 +00:00
asiva@google.com 30b5101fd1 Fix for issue 10488 standalone/basic_debugger_test flaky
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22531 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 21:27:54 +00:00
srdjan@google.com ddc9d23610 Inline _OneByteString._setAt. The key knowledge is that _setAt is an internal method that has to be called with correct arguments, therefore no checks are needed.
R=fschneider@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22528 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 20:03:33 +00:00
asiva@google.com b51b053da4 Remove print_bootstrap flag as it is not needed anymore considering that we
load core libraries directly from the sources and do not concatenate all the
files into a single script file.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22523 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 18:56:38 +00:00
asiva@google.com 5cecc4b95c Fix windows build break.
Review URL: https://codereview.chromium.org//15010004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22516 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 17:06:09 +00:00
asiva@google.com dee399907b Fix windows build.
Review URL: https://codereview.chromium.org//14680010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22515 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 16:58:32 +00:00
asiva@google.com 89ef11e004 Final step towards loading core library scripts directly from the sources
- Modify bin.gypi to ensure that the io library and patch files are read
  directly from the sources. Remove the source buffer generation step in
  the gypi files for all the io library and patch files.

- Restructure the code a bit to eliminate some code duplication.

- Delete runtime/tools/concat_library.py

R=ager@google.com, sgjesse@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22514 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 16:42:46 +00:00
podivilov@google.com d83e6dddf4 Fix Clank+Dart compilation.
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22505 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 13:00:09 +00:00
ricow@google.com 3cf4ca80ce Speculative fix for android build.
It is really hard to follow the directory logic, with DART_DIR being just ../../.. and a few pushd and cd commands thrown in.

I don't particularly like this solution either, this is basically to verify that I am assuming correctly in that this is caused by the relative paths being messed up.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22494 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 06:22:24 +00:00
asiva@google.com e5d6ee272a Minor cleanup.
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22488 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 00:44:50 +00:00
vegorov@google.com 2565ca222f Implement a variation of scalar replacement for non-escaping allocations.
AllocationSinking pass discovers non-escaping allocations that have no input uses other than uses in the stores into its own fields.

Every environment use of such allocation is replaced by a state snapshot (MaterializeObject instruction) that describes the state of each initialized field in the object. State snapshots are computed through an additional round of load-forwarding.

Once snapshots are computed allocations are removed from the graph.

MaterializeObject instructions are not compiled into native code but produce deoptimization instructions instead that describe how object should be materialized at deoptimization.

Deoptimization instructions now follow the following format:

[mat obj #1]...[mat obj #N][ret addr][... mat arguments ...][... real frames ...]

- the prefix describes each object to materialize on deopt via kMaterializeObject instruction;
- actual values that are needed for materialization are emited as a part of bottom-most stack frame. This is done to simplify implementation: they need to be discoverable by a GC during materialization phase. At the end of deoptimization they will be removed from the stack;
- normal stack slots can refer to materialized objects via kMaterializedObjectRef instruction.

Additionally this change contains fixes in load-forwarding that are needed to guarantee that all artificial LoadField instructions inserted during AllocationSinking are correctly replaced with actual values.

Limitations of the current implementation:

- can't eliminate allocations that flow into phis but otherwise don't actually escape;
- can't sink allocations out of loops;
- allocation with type arguments are not handled.

R=regis@google.com, srdjan@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22485 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 23:40:42 +00:00
zra@google.com fabc87d633 Fixes for integer division on ARM hardware so that assembler tests pass.
Now, all VM tests that pass on SIMARM, pass on ARM.

Also, more assertions in the ARM disassembler and simulator to
make sure that condition codes aren't used with bkpt.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22471 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 18:21:18 +00:00
regis@google.com 53347a3337 Remove stack_frame_<arch>.cc files.
The architecture specific information is in stack_frame_<arch>.h files.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22470 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 18:06:21 +00:00
vsm@google.com 3c0e1cc3bc Add extra Dart_FileReadCallback argument to android embedder
R=gram@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22468 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 16:49:47 +00:00
kmillikin@google.com 5868a6bffa Use the constant pool for all constants, not just null.
Remove constants from the instruction stream in optimized code at SSA
construction time.  Modify the range analysis pass to analyze values in the
constant pool.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22458 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 12:50:37 +00:00
iposva@google.com c3c942407b Fix dartbug.com/10415:
- Append 'on "$os_$arch"' to the version string on the VM.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22452 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 07:59:03 +00:00
asiva@google.com 4577abd566 Third step towards loading core library scripts directly from the sources
- Read the patch source files using the source mapping array generated for
  patch files instead of relying on a generated buffer containing the sources.

- Modify the gyp files to ensure that all patch libraries are read directly
  from the sources. Remove the source buffer generation step in the gypi
  files for all patch files.

R=hausner@google.com, iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22436 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 18:16:25 +00:00
kmillikin@google.com 7e31a88a0a Initial support for polymorphic inlining.
Consider each polymorphic variant separately for inlining in frequency
order.  Share inlined bodies for shared targets.

Insert an SSA redefinition of the receiver in each inlined variant to
prevent hoisting.  Hoisting code specialized to the receiver (e.g.,
direct access to internal fields of typed data arrays) out of the
inlined body is not safe.

R=fschneider@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22434 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 17:22:18 +00:00
asiva@google.com fbfcf71847 Fix build break in --checked mode.
Review URL: https://codereview.chromium.org//14872009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22433 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 17:18:04 +00:00
asiva@google.com 469ff38c70 Fix for issue 10395, call noSuchMethod if a method is not found when using the Dart C API.
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22432 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 17:07:34 +00:00
floitsch@google.com 968ebcff5a Make Completers asynchronous.
BUG= http://dartbug.com/9990
R=ajohnsen@google.com, lrn@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22417 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 15:15:15 +00:00
kustermann@google.com 79a5d57ed1 Fixed bug in vm/benchmark_test.h
The Benchmark objects were marked as 'const', but Benchmark::CreateIsolate
writes to 'Benchmark::isolate_'. This was not discovered so far, since GCC
places the global Benchmark objects into a read-write section.

It turns out that clang is able to create the const Benchmark objects at
compile time and puts them into a read-only section of the ELF file (it probably
inlines the constructor).
Thus, at runtime Benchmark::CreateIsolate tries to write to a read-only address
and crashes with a SEGV.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22415 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 14:49:21 +00:00
sgjesse@google.com 1b3aff5e11 Change async read buffer sizes on Windows
When reading from the console using ReadFile on Windows the buffer size must
be a bit smaller than 32k. Use a 16k buffer in that case and raise the buffer
size to 64k otherwise.

R=ajohnsen@google.com
BUG=https://code.google.com/p/dart/issues/detail?id=9429

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22411 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 12:28:45 +00:00
srdjan@google.com ab188d327c Improve performance of String.fromCharCodes by implementing it in Dart. Add tow internal natives to Dart in order to be able to allocate and fill a String. Next step is to implement String.concatAll in Dart as well and to inline String._setAt operation (currently intrinsified).
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22399 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 23:48:10 +00:00
asiva@google.com ea5a3919c5 Resubmit 22380 after fixing the windows build.
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22396 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 22:50:26 +00:00
regis@google.com 880af693cf Introduce architecture specific headers describing Dart stack frames.
The actual cleanup will follow in another cl.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22394 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 21:42:16 +00:00
iposva@google.com 083c9e5e95 - Remember the fact that an object has been added to the
store buffer by a bit in the header.
- This bit can be used to filter out redundant additions
  into the store buffer making the dedup sets not needed.
- Remove the need for a HashSet when remembering old to
  new references.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22393 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 20:59:42 +00:00
regis@google.com deeb192b03 Cleanup deoptimization code to make it architecture independent (in progress).
Implement some optimizing code on ARM in order to debug the above cleanup using
inline_stack_frame_test (still skipped in the vm status file).

This is not quite working yet, because CompilerDeoptInfo::CreateDeoptInfo
makes assumptions about the stack layout that are not valid for ARM or MIPS.
This will be cleaned up in a following cl.

R=srdjan@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22386 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 18:39:40 +00:00
asiva@google.com dab8758e7a Revert 22380 to investigate windows build break.
Review URL: https://codereview.chromium.org//14927003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22382 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 18:26:34 +00:00
asiva@google.com 27e78fb6f8 Second step towards loading core library scripts directly from the sources
- Modify the library source generator to generate a source mapping array
  The generated array is of the following format:
  const char* dart::Bootstrap::corelib_source_paths_[] = {
    "dart:core", "/workspace1/dart-all/dart/sdk/lib/core/core.dart", 

    "bool.dart", "/workspace1/dart-all/dart/sdk/lib/core/bool.dart", 
    ...
    ...
  };

- Read the source file using the source mapping array instead of relying on
  a generated buffer containing the sources

- Modify the gyp files to ensure that all libraries are read directly
  from the sources. This CL does not change the patch part yet.
  Remove the source concatentation step in the gypi files for all the core
  libraries.

R=hausner@google.com, iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22380 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 18:12:24 +00:00
whesse@google.com 0ae62a79dc dart:io | Implement truly asynchronous version of FileSystemEntity.type().
BUG=
R=sgjesse@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22364 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 12:02:10 +00:00
sgjesse@google.com b8c729fe9e Mark test as flaky
R=iposva@google.com
BUG=https://code.google.com/p/dart/issues/detail?id=10409

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22360 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 11:11:01 +00:00
whesse@google.com 396011beae dart:io | Add asynchronous versions of the methods of FileSystemEntity and Link.
BUG=
R=sgjesse@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22354 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 08:39:16 +00:00
asiva@google.com 74364b11b2 Potentially fix the crash reported in Issue 10385
- Fix use of a tagged pointer
- Fix a memory leak

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22345 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 23:10:53 +00:00
zra@google.com 87ae3bb45f Allows "Hello, world!" to run on ARM hardware.
Also, enables more vm tests on SIMMIPS.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22344 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 22:58:52 +00:00
srdjan@google.com 6843db8020 Implement Smi.toString in Dart instead of calling to C++ natives. Large performance improvement.
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22341 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 21:40:43 +00:00
vegorov@google.com f005802733 Improve load forwarding:
- stores/loads that access different fields can't alias each other;
- if result of the AllocateObject does not escape then stores/loads to it does not alias stores/loads to other objects.

Other:
- rename LoadFieldInstr's value to instance to better convey meaning and match StoreInstanceFieldInstr;
- slightly bump inlining_size_threshold;
- canonicalize UnboxDouble(BoxDouble(v)) and BoxDouble(UnboxDouble(v)) patterns;

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22340 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 21:20:49 +00:00
srdjan@google.com 596f203f2a Do not copy immutable arrays in String.createFromCharCodes. Tighten the types a little in string_patch.dart.
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22338 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 20:45:06 +00:00
zra@google.com 3c10f6b796 On MIPS, keeps Object::null() in a register.
On MIPS, we have a lot of registers, and we don't use very many of them.
This change removes the second temporary register TMP2, and instead
dedicates a register to holding Object::null(), which is used frequently
for comparisons, etc..

Also, uses branch delay slot when leaving a dart frame and returning.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22331 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 17:53:34 +00:00
iposva@google.com a6fb0962e2 - Fixed some old-style casts.
- Remove TODO as it is not feasible to ever enable.

R=kustermann@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22313 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 11:40:23 +00:00
ajohnsen@google.com 6a78c0c0b8 Add v6Only named argument to ServerSocket and etc.
BUG=
R=sgjesse@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22309 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 11:23:40 +00:00
regis@google.com 76c8e61855 Fix ARM memory addressing mode 3 in assembler.
Update assembler test.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22285 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 21:33:08 +00:00
regis@google.com 303011f48d Enable all vm tests on simarm (skip 2 timing out byte array tests).
Reduce number of iterations in inline_stack_frame_test to avoid time out.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22280 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 21:10:00 +00:00
hausner@google.com 8e29370a1b BREAKING CHANGE: enforce part of directive
For historical reasons, the VM is currently too lenient when parsing library parts. Files that get loaded through a 'part' directive must start with a 'part of libraryname;' clause. The VM so far has not reported an error if the clause is missing.

This change enforces the grammar as the Spec mandates it. Library parts that do not start with 'part of' will no longer compile.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22278 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 20:46:48 +00:00
johnmccutchan@google.com aa1d4b4062 Inline remaining Float32x4 operations.
BUG=
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22277 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 20:40:24 +00:00
gram@google.com 249ab96c72 Fix Android build.
R=vsm@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22276 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 20:26:51 +00:00
hausner@google.com 7f1fac8d1d Loosen aggressive assert in debugger stack trace code
A closure may be called from native code. In that case we will not
find a saved context variable in the dart frame 'below' the closure.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22268 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 18:34:48 +00:00
zra@google.com aa2dd0acf7 On MIPS, uses more branch delay slots.
Also, tries to reorganize loops to look like what gcc produces.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22262 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 16:56:31 +00:00
ajohnsen@google.com a516bbc22d Enable IPv6 by default in dart:io.
BUG=
R=sgjesse@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22240 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 12:18:53 +00:00
sgjesse@google.com 2fdb878ebe Change the signature for all network bind calls.
All the bind calls on RawServerSocket, ServerSocket,
RawSecureServerSocket, SecureServerSocket and HttpServer (and
bindSecure on HttpServer) now have mandatory address and port
parameters. All the rest of the parameters are named optional
(including backlog).

The address parameter can be an InternetAddress or a String for all
these calls.

R=ajohnsen@google.com, whesse@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22227 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 09:14:04 +00:00