srdjan@google.com
1259bda234
Fix PcDescriptor iterator to never return a pointer to a memory location since the PcDescriptor can move with the GC.
...
R=hausner@google.com
Review URL: https://codereview.chromium.org//396213005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38338 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-17 18:30:38 +00:00
srdjan@google.com
16e4600ff5
Fix build (link error reproducible on linux with GYP_DEFINES=dart_debug_optimization_level=0).
...
Review URL: https://codereview.chromium.org//393083002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38251 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-15 19:49:27 +00:00
srdjan@google.com
3d71a1fdec
Another attempt to fix LLVM 4.2 failure.
...
Review URL: https://codereview.chromium.org//395973002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38249 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-15 18:42:12 +00:00
srdjan@google.com
611b665762
Attempt to fix llvm 4.2 compiler errors.
...
Review URL: https://codereview.chromium.org//395953002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38247 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-15 18:07:39 +00:00
srdjan@google.com
9c8a395f6f
More PcDescriptor cleanups, compress recors if no try index is needed (frequent).
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//382993003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38242 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-15 17:07:03 +00:00
koda@google.com
5473ee3076
Refactor snapshot writer's forward list into a reusable class.
...
Also add an optimization to avoid potential quadratic behavior.
R=asiva@google.com
Review URL: https://codereview.chromium.org//383063005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38172 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-11 21:07:12 +00:00
srdjan@google.com
4c69c06f27
Specify descriptor kind to iterate on.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//383523005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38128 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-10 19:44:49 +00:00
srdjan@google.com
2bb77cd8d5
Iterate over PcDescriptors only via iterators, not via an index. (preparation for more compression of PcDescriptors).
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//356923006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38032 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-07 18:25:45 +00:00
srdjan@google.com
41827cddcd
Reduce size of PCDescriptors. Order struct fields so that they do not get padded unnecessarily.
...
R=zra@google.com
Review URL: https://codereview.chromium.org//356623002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37674 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-24 23:50:55 +00:00
zra@google.com
1dc0e2331b
Removes open arrays (e.g. data[0]) from raw objects.
...
Replaces them with data() methods as in RawArray.
R=asiva@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//333773006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37450 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-18 15:58:16 +00:00
srdjan@google.com
8f2dc961d0
Save ICData of unoptimized code in the function, thus preserving it across repated unoptimized compilations.
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//335173002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37378 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-16 22:24:05 +00:00
hausner@google.com
4eac05607f
Lazy loading of deferred libraries
...
Defer reading of source code of deferred libraries until the
Dart code executes the loadLibrary() call.
R=iposva@google.com
Review URL: https://codereview.chromium.org//328923002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37334 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-13 22:43:31 +00:00
rmacnak@google.com
5afea71262
Setup R10/EDX to be valid Oops before stub calls so when the debug stub saves them to the stack the GC doesn't try to deference out of the heap.
...
BUG=http://dartbug.com/19331
R=asiva@google.com , iposva@google.com
Review URL: https://codereview.chromium.org//335443002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37297 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-12 23:50:48 +00:00
zra@google.com
c46103f74a
Updates snapshot test for last commit.
...
Review URL: https://codereview.chromium.org//330163002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37288 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-12 20:37:54 +00:00
zra@google.com
47e2465545
Begins removing intptr_t from raw object fields.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//328893002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37285 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-12 19:56:46 +00:00
srdjan@google.com
4ac409739e
Reduce snapshot size by not writing null values for function code fields.
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//333453002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37243 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-11 20:11:47 +00:00
iposva@google.com
9bd9f2a479
- Re-add the assert which was removed in r36993.
...
- Add dummy alignment field until we have a better way to deal with the
growable objects on Windows.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//319493005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37015 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-04 21:18:37 +00:00
fschneider@google.com
559e6410e2
First step in reducing the size of PC descriptors.
...
The descriptors used for patching just contain a pc offset
and can be stored with the code object instead of allocating
a full descriptor and linearly searching the list to retrieve
this information.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//315583002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36989 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-04 11:02:34 +00:00
srdjan@google.com
5720dce013
In class Function replace current code field with current instruction field, that way we save one load when jumping to a target in, e.g., inline cache stub (function->instruction vs function->code->instruction).
...
R=zra@google.com
Review URL: https://codereview.chromium.org//311963002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36948 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-03 21:28:05 +00:00
vegorov@google.com
4e286b316f
Split GuardField into GuardFieldType and GuardFieldLength instructions.
...
Record expected length offset that matches guarded_cid.
This greatly simplifies code generation and control flow inside these guards.
Fixes the bug that was causing unoptimized code to call into runtime even when guard did not fail.
Add --trace-field-guards flags to trace updates to the state of guarded fields' properties.
BUG=http://dartbug.com/19003
R=fschneider@google.com , johnmccutchan@google.com , zra@google.com
Review URL: https://codereview.chromium.org//304703002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36872 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-02 13:53:53 +00:00
fschneider@google.com
01255e0843
Change COMPILE_ASSERT to take only one argument and use it in more places.
...
This way it can be used in the same way as ASSERT.
R=iposva@google.com
Review URL: https://codereview.chromium.org//298963006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36625 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-26 09:45:04 +00:00
asiva@google.com
d5fbbd593a
Add a new API function to extract all the native arguments into an array
...
passed in by the caller.
This call can be used in DOM bindings patterns as follows:
Old code -
Dart_Handle exception = 0;
{
WebGL* receiver = DartDOMWrapper::receiver< WebGL >(args);
unsigned srcRGB = DartUtilities::dartToUnsigned(args, 1, exception);
if (exception)
goto fail;
unsigned dstRGB = DartUtilities::dartToUnsigned(args, 2, exception);
if (exception)
goto fail;
unsigned srcAlpha = DartUtilities::dartToUnsigned(args, 3, exception);
if (exception)
goto fail;
unsigned dstAlpha = DartUtilities::dartToUnsigned(args, 4, exception);
if (exception)
goto fail;
receiver->blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
return;
}
fail:
Dart_ThrowException(exception);
ASSERT_NOT_REACHED();
Proposed new code -
/**
* One time initialization code for setting up argument descriptors
*/
const int kNumArgs = 5;
const int kNumNativeFields = 2;
static const uint8_t native_arg_descriptor[kNumArgs] = {
DART_NATIVE_ARG_DESCRIPTOR(Dart_NativeArgument_kNativeFields, 0),
DART_NATIVE_ARG_DESCRIPTOR(Dart_NativeArgument_kUint32, 1),
DART_NATIVE_ARG_DESCRIPTOR(Dart_NativeArgument_kUint32, 2),
DART_NATIVE_ARG_DESCRIPTOR(Dart_NativeArgument_kUint32, 3),
DART_NATIVE_ARG_DESCRIPTOR(Dart_NativeArgument_kUint32, 4),
};
Dart_NativeArgument_Value native_args[kNumArgs];
intptr_t native_fields[kNumNativeFields];
native_args[0].as_native_fields.num_fields = kNumNativeFields;
native_args[0].as_native_fields.values = native_fields;
/**
* Code executed for each invocation of the binding method
*/
Dart_Handle result = Dart_GetNativeArguments(args, kNumArgs, native_arg_descriptor, native_args);
if (Dart_IsError(result)) {
Dart_ThrowException(result);
}
WebGL* receiver = DartDOMWrapper::receiver< WebGL >(native_args[0].as_native_fields.values);
unsigned srcRGB = native_args[1].as_uint32;
unsigned dstRGB = native_args[2].as_uint32;
unsigned srcAlpha = native_args[3].as_uint32;
unsigned dstAlpha = native_args[4].as_uint32;
receiver->blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
return;
R=iposva@google.com , vsm@google.com
Review URL: https://codereview.chromium.org//282883002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36464 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-22 00:08:23 +00:00
johnmccutchan@google.com
850074a704
Refactor 'dart:profiler' UserTag API
...
- Each isolate starts off with a 'Default' UserTag set.
- A null tag cannot be set.
- Calls to clearCurrentTag() should be replaced with a call to UserTag.defaultTag.makeCurrent().
- makeCurrent returns the previously current tag.
This allows for the following pattern to work:
callee() {
var old = calleeTag.makeCurrent();
...
old.makeCurrent();
}
caller() {
var old = callerTag.makeCurrent();
...
callee();
assert(getCurrentTag() == callerTag);
...
old.makeCurrent();
}
R=iposva@google.com , zra@google.com
Review URL: https://codereview.chromium.org//266913010
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35810 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-06 17:07:26 +00:00
koda@google.com
1c3a41ad13
Retained size for instance in Observatory.
...
Add objects/$id/retained message that uses ObjectGraph to compute retained size for an instance.
In the instance view, the user can request the size to be calculated.
R=turnidge@google.com
Review URL: https://codereview.chromium.org//263803009
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35757 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-05 19:41:12 +00:00
regis@google.com
8868058d60
Enums cleanup.
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//259393002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35559 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-30 01:26:14 +00:00
regis@google.com
e0ab99b0b2
Remember all deopt reasons in ic_data, not just the last one.
...
Remember if a JS warning was issued in ic_data.
Save a word in ic_data on 64-bit platforms.
R=iposva@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//254723003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35457 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-25 23:45:14 +00:00
iposva@google.com
fd8565b071
- Add a minimal implementation of Capability.
...
- Make RawReceivePort and SendPort VM internal objects.
- Rationalize the creation of ports and their handling within the VM.
R=asiva@google.com
Review URL: https://codereview.chromium.org//243973002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35325 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 19:44:03 +00:00
rmacnak@google.com
7ba8ca5753
Reapply "Mark private functions in dart:* that are native or constructors as not visible (omitted from stack traces and ineligible for reflective enumeration or invocation)."
...
With fix for uninitialized is_dart_scheme_ when read from snapshot.
BUG=http://dartbug.com/15274
R=iposva@google.com
Review URL: https://codereview.chromium.org//247683002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35289 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 00:05:08 +00:00
rmacnak@google.com
7840906011
Revert "Mark private functions in dart:* that are native or constructors as not visible (omitted from stack traces and ineligible for reflective enumeration or invocation)."
...
Review URL: https://codereview.chromium.org//246173002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35238 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-22 00:08:52 +00:00
rmacnak@google.com
69d82c334b
Mark private functions in dart:* that are native or constructors as not visible (omitted from stack traces and ineligible for reflective enumeration or invocation).
...
Ensure invocation_fuzz_test doesn't exit prematurely.
Also visit instance methods defined in superclasses.
Complete blacklist so invocation_fuzz_test passes on the VM.
B=http://dartbug.com/15274
R=iposva@google.com
Review URL: https://codereview.chromium.org//241993004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35234 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-21 23:24:17 +00:00
johnmccutchan@google.com
fdaf1b59bf
Undo r35207
...
Review URL: https://codereview.chromium.org//243583008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35208 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-21 16:03:52 +00:00
johnmccutchan@google.com
1606fce42f
Add TraceBuffer log to all Functions (plus small tweaks to function-view)
...
BUG=
R=srdjan@google.com , turnidge@google.com
Review URL: https://codereview.chromium.org//227423005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35207 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-21 15:57:09 +00:00
johnmccutchan@google.com
8f0056371d
Initial UserTag and dart:profiler library
...
R=asiva@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//230863005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34949 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-10 22:32:45 +00:00
johnmccutchan@google.com
ef666553a1
Add runtime and native entry tags
...
- Split runtime and native entry tags.
- Set runtime / native entry address as vm tag in stubs.
- Add reverse native entry resolver (pc to name) to public API (breaking change).
- Hookup reverse resolver for standalone VM (io + bootstrap + builtin natives).
- Runtime entries are registered with tags.
- Profiler queries for tag names via the reverse native entry resolver.
- Profiler outputs named entry tags as children under parent tag (runtime or native).
R=asiva@google.com
Review URL: https://codereview.chromium.org//227433004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34941 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-10 20:26:45 +00:00
fschneider@google.com
cc9e3b8068
Introduce a lazy-compile stub for functions.
...
The function's code pointer is either a lazy-compile stub
or the compiled code. The function is compiled on invocation.
There is no need to check for null when invoking a function. This means
one check less when invoking functions via a stub. For this I added a LazyCompile
stub.
Additional cleanup in Stackmap and PcDescriptors (remove unused code pointer,
and changed smi-lengh into a raw integer).
R=zra@google.com
Review URL: https://codereview.chromium.org//203523011
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34643 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-02 12:37:48 +00:00
hausner@google.com
ed24226376
Support deferred library prefix syntax
...
First step towards deferred library support:
- Parse the “deferred as” import clause.
- Implement p.loadLibrary() which returns a future that
completes when the library is loaded.
- Treat type annotations of deferred types as malformed.
- Throw NoSuchMethodError when calling functions from
unloaded libraries.
- Libraries are still read synchronously, but items in the
library won’t be visible through the deferred prefix until
the future returned by loadLibrary() completes.
Review URL: https://codereview.chromium.org//208323015
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34481 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-27 21:20:47 +00:00
fschneider@google.com
37b30ab2ac
Alternative fix for .call invocation of closures.
...
This also covers "closurization" of the .call method.
This relies on the fact that f.call === f if f is a closure.
This means that adding a simple getter to _FunctionImpl that
returns this is enough. No need for a separate dispatch.
This CL reverts the previous fix for issue 12602 (modulo the
additional tests).
BUG=dartbug.com/17473, dartbug.com/12602
R=iposva@google.com
Review URL: https://codereview.chromium.org//200193002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33736 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-17 10:31:33 +00:00
koda@google.com
c62fcdf3c4
Heap maps: add VM service message.
...
A heap map is serialized as arrays of sizes + class ids:
{"type":"HeapMap","id":"heapmap","pages":[[15,2,10,3,...,100,0],...,]}
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//197663006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33608 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 20:46:09 +00:00
fschneider@google.com
f75ef2e6ab
Fix invocation of closures via .call in the VM.
...
Calling closures via .call does now work in the VM - it was working in
dart2js already. Calling .call on a closure is implemented to go through
a dispatcher method. These dispatcher methods are automatically created and
cached in the same way as NoSuchMethod- or field-invocation dispatchers.
This CL does not change the way regular closure invocation works in
the VM. It is therefore performance-neutral for normal closure calls.
BUG=dartbug.com/12602
TEST=language/call_test
R=iposva@google.com
Review URL: https://codereview.chromium.org//188703004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33576 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 14:02:27 +00:00
johnmccutchan@google.com
01c3d1adcb
Add compile timestamp to Code
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//194813008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33555 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-11 21:14:24 +00:00
rmacnak@google.com
57dd1321d1
Reapply "Access to imports in the VM's runtime mirrors. Extend test coverage of the source mirrors."
...
Regenerate snapshot test due to change in the size of Namespace. Relate the types source mirror libraries dependencies to the runtime library dependencies.
BUG=http://dartbug.com/10360
Review URL: https://codereview.chromium.org//189843003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33441 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-07 19:00:20 +00:00
rmacnak@google.com
62ad4b82ce
Revert "Access to imports in the VM's runtime mirrors. Extend test coverage of the source mirrors."
...
Review URL: https://codereview.chromium.org//189293002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33402 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-06 22:45:29 +00:00
rmacnak@google.com
2d0e54a94d
Access to imports in the VM's runtime mirrors. Extend test coverage of the source mirrors.
...
BUG=http://dartbug.com/10360
R=gbracha@google.com , hausner@google.com
Review URL: https://codereview.chromium.org//154733003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33397 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-06 22:02:29 +00:00
srdjan@google.com
2e214c324b
More performance fixes.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//183973035
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33389 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-06 19:00:11 +00:00
asiva@google.com
a01ab16991
1. When reading a full snapshot use the class id from the snapshot instead
...
of generating a new one. This ensures that assumptions made about the
class id when generating a snapshot will still hold in the version that
runs from a snapshot.
2. remove ObjectHistogram code as it is not used anymore and has been replaced
by VM service.
R=johnmccutchan@google.com , regis@google.com
Review URL: https://codereview.chromium.org//187133004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33340 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 19:24:02 +00:00
johnmccutchan@google.com
e9e54f6af6
Cleanup native, collected, and stub code handling in profiler
...
R=iposva@google.com , turnidge@google.com
Review URL: https://codereview.chromium.org//182703003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33177 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-28 22:55:53 +00:00
regis@google.com
8d5dae7798
Allocate instance closures similarly to regular closures, i.e. without a
...
specific stub and runtime call.
R=fschneider@google.com
Review URL: https://codereview.chromium.org//178233003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33074 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-26 18:38:47 +00:00
regis@google.com
9b13508243
Avoid repeated resolution of types by marking them as resolved.
...
R=hausner@google.com
Review URL: https://codereview.chromium.org//165523002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32706 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-14 17:43:11 +00:00
regis@google.com
7830430adf
Implement eager instantiation and canonicalization of type arguments at run
...
time using a cache in uninstantiated type arguments.
Remove InstantiatedTypeArguments class.
Fix a bug in optimized code: do not update unused type test cache for Smi.
Fix a bug in optimized code on ARM and MIPS in type test cache lookup.
R=iposva@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//154393003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32447 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-07 19:54:33 +00:00
hausner@google.com
ac559f643a
Introduce cache of resolved names in library
...
A name that is not resolved in the local scope gets looked up
in the global scope of the library to which the code being compiled
belongs. The local name dictionary gets searched first, then the
dictionary of each imported library (and and their re-exported
libraries.) Each dictionary lookup includes the lookup of the
mangled getter and setter names, which means that we concatenate
the same name many times.
This change introduces a cache that stores the result of a previous
name lookup, including negative lookup results. The latter is important
to speed up the resolution of names that are not in the global name
space, e.g. class members like .length in lists.
Experiments running dart2js (with VM option --compile_all) show
that this reduces the number of name mangling calls by a factor of 10
and speeds up compiling dart2js by 15%.
R=asiva@google.com
Review URL: https://codereview.chromium.org//135123011
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32385 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-06 21:32:31 +00:00