Commit Graph

401 Commits

Author SHA1 Message Date
vegorov@google.com b38ad8f4fb Count per check hits in ICData.
R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14870 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-13 23:21:02 +00:00
srdjan@google.com 7375693321 In optimized code use IC calls for instance calls that have no IC data instead of deoptimizing. The optimized IC call increments usage counter and reoptimizes optimized function if the threshold is met.
Recognize closure calls and mark them in ICData. Closure calls do not populate ICData, i.e., number of checks is always 0 (unless mixed closure calls with regular instance calls). Therefore closure IC calls do not count for reoptimization.
Review URL: https://codereview.chromium.org//11361225

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14860 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-13 18:34:05 +00:00
ajohnsen@google.com 970cc5ba68 Move JSSyntaxRegExp to core as a private member. This removes the last refrences to dart:coreimpl.
After this cleanup, RegExp no longer have a const constructor. Use 'new
RegExp(...)' from now on.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14838 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-13 10:41:37 +00:00
iposva@google.com 0c6ff657ed - Do not mix scalar values and object fields in RawInstance to
simplify the traversal for GC. Classes with native fields
  have a hidden reference to a typed array containing the
  native fields.
Review URL: https://codereview.chromium.org//11312183

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14821 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-12 23:21:04 +00:00
asiva@google.com 2e21fbd3ee Fix for issue 6623 - Canonicalize implicit static closure objects.
Review URL: https://codereview.chromium.org//11359151

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14802 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-12 19:02:44 +00:00
lrn@google.com 1555c1db26 Convert String to a class.
Remove the StringImplementation class.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14779 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-12 08:16:59 +00:00
srdjan@google.com dc8115e19a Remove unused/not working function tracing flag and functionality.
Other small fixes, use stub to call optimization of a function (in preparation for reoptimization).
Review URL: https://codereview.chromium.org//11364184

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14756 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-09 20:55:31 +00:00
fschneider@google.com a42474ba37 Reland: Improve smi shift operations and avoid repeated deoptimizations.
This CL includes a bug fix where a NULL check of the pc was missing.

Also change the dart2js test status of arithmetic_test from Skip to Fail.
Review URL: https://codereview.chromium.org//11369158

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14755 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-09 19:54:55 +00:00
kmillikin@google.com 53a75650b0 Fix Code::ToCString.
It was printing the entry address in decimal and only the low 32 bits on x64.

R=vegorov@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14752 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-09 19:42:01 +00:00
hausner@google.com be175c758e Implement const expressions for local variables
Review URL: https://codereview.chromium.org//11265047

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14716 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-09 00:19:43 +00:00
fschneider@google.com a830c7c091 Revert r14711 and r14709 because of test failures.
TBR=srdjan@google.com
Review URL: https://codereview.chromium.org//11363151

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14712 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-08 22:37:26 +00:00
fschneider@google.com 0f251088ec Improve smi shift operations and avoid repeated deoptimizations.
Smi left shifts do not contain a call now. Only after deoptimizing
at a smi operation we we generate mint code or a generic call to
avoid repeated deoptimization.

Added a test case for the code that was not covered by existing tests.
Review URL: https://codereview.chromium.org//11363141

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14709 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-08 22:03:47 +00:00
regis@google.com d372a816bb Pass closure object as first implicit argument to closure functions.
Remove code passing captured receiver to native instance closures; instead,
access captured receiver in context, as non-native functions do.
Review URL: https://codereview.chromium.org//11360116

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14698 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-08 18:28:07 +00:00
srdjan@google.com 9a4e7b073b Do not inline static calls that have not been executed in unoptimized code: the inlined function does not have type feedback that takes that call's arguments into account. As a side effect, it fixes a crash in smi-equality.
Review URL: https://codereview.chromium.org//11312105

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14605 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-06 23:47:19 +00:00
tball@google.com 209499c17f Merged String subclasses into String.
Merged String subclasses (OneByteString, etc.) into String, keeping
their raw types.  This allows String handles to continue to point
to a String after its raw type is changed, such as to make its data
external.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14545 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-05 22:22:19 +00:00
regis@google.com 2148b51189 Do not copy type parameter bound from declaration to reference, since we are
not able to properly finalize it. Revisit later.
This fixes issue 6488. Siva will add a test.
Review URL: https://codereview.chromium.org//11366093

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14544 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-05 21:00:12 +00:00
srdjan@google.com 078bc44a1d Various little cleanups to avoid excessive allocation of handles.
Review URL: https://codereview.chromium.org//11358052

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14486 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-02 16:35:05 +00:00
srdjan@google.com 0db049051c Add is_intrinsic and is_not_intrinsic bits to prevent repeated tests on the same function (inlining, recompilations). The bist are set lazily, initially both are false.
Review URL: https://codereview.chromium.org//11358047

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14444 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-01 23:25:26 +00:00
asiva@google.com df1b318ae4 Remove some unnecessary class handle creations.
Review URL: https://codereview.chromium.org//11293031

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14420 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-01 17:58:58 +00:00
asiva@google.com ebbb7c4134 - Represent strings internally in UTF-16 format, this makes it
compatible with webkit and will allow for easy externalization of
  strings. One byte strings are retained for pure ASCII strings.
  (The language specification was changed recently to reflect this as
   follows "A string is a sequence of UTF-16 code units").
- Remove four byte string class and all references to it.
- Rename some of the string functions in Dart API to make them
  consistent and better describe the underlying functionality
  Dart_NewString => Dart_NewStringFromCString
  Dart_NewString8 => Dart_NewStringFromUTF8
  Dart_NewString16 => Dart_NewStringFromUTF16
  Dart_NewString32 => Dart_NewStringFromUTF32
  Dart_NewExternalString8 => Dart_NewExternalUTF8String
  Dart_NewExternalString16 => Dart_NewExternalUTF16String
  Dart_NewExternalString32 => Dart_NewExternalUTF32String
  Dart_StringGet8 => Dart_StringToUTF8
  Dart_StringGet16 => Dart_StringToUTF16
  Dart_StringToCString => Dart_StringToCString
  Dart_IsString8 => Removed
  Dart_IsString16 -> Removed
  Dart_StringToBytes -> Removed
  Dart_StringGet32 -> Removed
Review URL: https://codereview.chromium.org//11318018

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14357 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-31 17:56:46 +00:00
ajohnsen@google.com 806fa6fab1 Move StringImplementation from coreimpl to core as _StringImpl.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14281 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-30 14:19:57 +00:00
ajohnsen@google.com dbbf15abd8 Move ListImplementation from coreimpl to core, as a private member.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14274 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-30 13:25:04 +00:00
kmillikin@google.com 3d684dcc70 Compress deoptimization information by sharing common suffixes.
For all the deoptimization entries in a function, build a suffix trie.  Add
a new deoptimization instruction that indicates the rest of the translation
is a fixed-length suffix of another entry.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14252 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-30 09:50:35 +00:00
regis@google.com 57a60316f0 Fix wrong canonicalization of signature class due to name collision (issue 6353).
Add test.
Review URL: https://codereview.chromium.org//11342028

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14234 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-30 00:06:24 +00:00
regis@google.com 989791ac05 Remove --reject_named_argument_as_positional flag from the VM.
Review URL: https://codereview.chromium.org//11341014

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14215 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-29 18:31:24 +00:00
ajohnsen@google.com e925b5591e Move Arrays, Collections and Maps into a new library, dart:collections.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14173 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-29 08:38:15 +00:00
iposva@google.com dc2c8b3707 - Consolidate code into the old generation.
- Record pointers between code objects.
- Collect unreferenced code objects.
Review URL: https://codereview.chromium.org//11265026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14113 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-25 23:46:01 +00:00
srdjan@google.com 9c4cb91442 Trace when disabling optimized code (--trace-disabling-optimized-code)
Review URL: https://codereview.chromium.org//11282003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14036 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-24 20:38:53 +00:00
hausner@google.com 08bc0fb331 Add == method name to symbol table
Review URL: https://codereview.chromium.org//11236050

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13915 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-22 23:23:57 +00:00
srdjan@google.com 90967baab9 Fix super ==: Test first for null before call inf super ==.
Review URL: https://codereview.chromium.org//11230034

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13907 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-22 20:33:12 +00:00
regis@google.com 3f0b894dbe Enforce new optional parameter rules.
Review URL: https://codereview.chromium.org//11186064

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13891 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-22 16:46:26 +00:00
srdjan@google.com 03a61f332c Apply optimization after class-id propagation: instance calls without ICData are optimized by using input argument class-ids to create fake ICData. This reduces the number of deoptimizations.
Review URL: https://codereview.chromium.org//11187046

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13798 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-18 20:41:58 +00:00
tball@google.com 2cd8436c5a Changed StackZone and ApiZone to be containers for Zone.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13707 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-16 22:05:40 +00:00
hausner@google.com 1811a6b913 Support for type dynamic in VM
Old name Dynamic is supported, and automatically converted to
lower-case dynamic when parsed.

VM flag --warn_legacy_dynamic prints warnings when Dynamic
is found.
Review URL: https://codereview.chromium.org//11125005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13637 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-12 22:40:24 +00:00
asiva@google.com 1bf642129d - Get rid of RawClosure class and use RawInstance for closures.
- Simplify SetRaw to not require an access to the Current Isolate.
Review URL: https://codereview.chromium.org//11087070

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13581 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-11 20:34:08 +00:00
fschneider@google.com 667b0d5185 Mark optimized functions with a * in the perf event symbol output.
This allows to distinguish time spent in optimized code vs unoptimized code
in our profile information.
Review URL: https://codereview.chromium.org//11028143

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13547 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-11 15:07:49 +00:00
srdjan@google.com 8e7aee9048 Address Florian's comments.
Review URL: https://codereview.chromium.org//11090027

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13427 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-09 18:46:25 +00:00
iposva@google.com 5f2f50f960 Land http://codereview.chromium.org/11047027/ for Matthias:
Implement export clause in VM 

Implement export namespace support in VM compiler. 

Missing functionality: ensuring that a name is only re-exported once.
Review URL: https://codereview.chromium.org//11028084

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13384 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-09 00:14:42 +00:00
ager@google.com 70216ab4cd Hide internal details of VM string implementation.
R=lrn@google.com,srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13352 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-08 13:00:33 +00:00
regis@google.com 3a45259cc5 Implement new scope rules for type variables (issue 5230).
Fix tests.
Review URL: https://codereview.chromium.org//11030056

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13316 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 20:29:02 +00:00
tball@google.com 76d7c9b105 Renamed Zone->StackZone, BaseZone->Zone, in preparation for changing isolate->get_zone() to return what was called the BaseZone instead of its wrapper. The GetBaseZone() methods were not renamed, to help the next CL.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13314 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 19:52:55 +00:00
iposva@google.com c8df70b904 Fix bug 5575:
- Remove residue of typed arrays from dart:core.
Review URL: https://codereview.chromium.org//11031063

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13274 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 06:52:42 +00:00
srdjan@google.com 717e3c0396 Support for mixed null/smi equality: do not deoptimize, emit same optimized code as if that was smi-equality only.
Moved assert for duplicate class checks into ICData.
Allow CheckClassInstr to check for Smi as well.
Review URL: https://codereview.chromium.org//11048032

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13254 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 19:35:23 +00:00
kmillikin@google.com 932b29c74e Pack deopt ID into the return before and return after deopt instructions.
Pack it into a machine word-sized bit field along with the object table
index.  The commands do not implicitly use the object table index any more,
which allows removing deopt IDs from the object table and pooling function
entries.

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13214 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 09:03:28 +00:00
kmillikin@google.com d7115e5eda Remove deoptimization index PC descriptors.
Put the PC (offset) of the deoptimization point and the deoptimization
reason in the DeoptInfo table.  The table entries are now triples of
(PC offset, info, reason).

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13056 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 10:16:22 +00:00
ager@google.com abee5139e5 Reapply change to hide VM-only List implementation classes.
The performance issue was that I had not updated the method
recognizer.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13003 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 11:08:38 +00:00
iposva@google.com b85f604f66 - Implement first class types in the VM.
- Make AbstractType a subclass of Instance and map it and its subclasses
  to private Dart classes in dart:core implementing the Type interface.
- Avoid dispatching through statics in Object if not strictly needed.
Review URL: https://codereview.chromium.org//10979058

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12981 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-27 21:19:00 +00:00
ager@google.com fe66a0af1a Revert hiding of VM-only coreimpl list implementation types. While I
investigate performance regression (even after fixing constructors
in the intrinsifier).

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12963 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-27 14:07:56 +00:00
ager@google.com 8e6a2c8345 Hide VM-only coreimpl List implementation types. These should not be
exposed as visible parts of coreimpl.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12952 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-27 12:37:30 +00:00
regis@google.com 656cdf40d4 Fix snapshot reading of canonicalized types.
Change some redirecting factory compile-time errors into dynamic errors after
discussion with Gilad (negative tests still missing).
Review URL: https://codereview.chromium.org//10996002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12872 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-25 19:26:53 +00:00