• kmillikin@chromium.org's avatar
    Add support for (some) assignment expressions to the CFG builder and · 9edc69c7
    kmillikin@chromium.org authored
    fast-mode compiler.
    
    1. We avoid generating a useless temporary for assignments with
    nontrivial right-hand sides.  Instead of translating id = expr into:
    
    ...
    tmp = <last expr instruction>
    id = tmp
    
    we generate directly
    
    ...
    id = <last expr instruction>
    
    by passing a data destination ('hint') down the AST.  The semantics is
    to use the destination as a result location if a temp is needed.  It
    may be ignored.  NULL indicates I don't care and you should generate a
    temp.
    
    2. We correctly handle assignments as subexpressions.  When building
    the CFG for an expression we accumulate the assigned variables and we
    emit a move to a fresh temporary if a value in a variable is in
    jeopardy of being overwritten.
    
    Review URL: http://codereview.chromium.org/165056
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    9edc69c7
Name
Last commit
Last update
..
arm Loading commit data...
ia32 Loading commit data...
third_party/dtoa Loading commit data...
x64 Loading commit data...
SConscript Loading commit data...
accessors.cc Loading commit data...
accessors.h Loading commit data...
allocation.cc Loading commit data...
allocation.h Loading commit data...
api.cc Loading commit data...
api.h Loading commit data...
apinatives.js Loading commit data...
apiutils.h Loading commit data...
arguments.h Loading commit data...
array.js Loading commit data...
assembler.cc Loading commit data...
assembler.h Loading commit data...
ast.cc Loading commit data...
ast.h Loading commit data...
bootstrapper.cc Loading commit data...
bootstrapper.h Loading commit data...
builtins.cc Loading commit data...
builtins.h Loading commit data...
bytecodes-irregexp.h Loading commit data...
cfg.cc Loading commit data...
cfg.h Loading commit data...
char-predicates-inl.h Loading commit data...
char-predicates.h Loading commit data...
checks.cc Loading commit data...
checks.h Loading commit data...
code-stubs.cc Loading commit data...
code-stubs.h Loading commit data...
code.h Loading commit data...
codegen-inl.h Loading commit data...
codegen.cc Loading commit data...
codegen.h Loading commit data...
compilation-cache.cc Loading commit data...
compilation-cache.h Loading commit data...
compiler.cc Loading commit data...
compiler.h Loading commit data...
contexts.cc Loading commit data...
contexts.h Loading commit data...
conversions-inl.h Loading commit data...
conversions.cc Loading commit data...
conversions.h Loading commit data...
counters.cc Loading commit data...
counters.h Loading commit data...
cpu.h Loading commit data...
d8-debug.cc Loading commit data...
d8-debug.h Loading commit data...
d8-posix.cc Loading commit data...
d8-readline.cc Loading commit data...
d8-windows.cc Loading commit data...
d8.cc Loading commit data...
d8.h Loading commit data...
d8.js Loading commit data...
date-delay.js Loading commit data...
dateparser-inl.h Loading commit data...
dateparser.cc Loading commit data...
dateparser.h Loading commit data...
debug-agent.cc Loading commit data...
debug-agent.h Loading commit data...
debug-delay.js Loading commit data...
debug.cc Loading commit data...
debug.h Loading commit data...
disasm.h Loading commit data...
disassembler.cc Loading commit data...
disassembler.h Loading commit data...
dtoa-config.c Loading commit data...
execution.cc Loading commit data...
execution.h Loading commit data...
factory.cc Loading commit data...
factory.h Loading commit data...
flag-definitions.h Loading commit data...
flags.cc Loading commit data...
flags.h Loading commit data...
frame-element.cc Loading commit data...
frame-element.h Loading commit data...
frames-inl.h Loading commit data...
frames.cc Loading commit data...
frames.h Loading commit data...
func-name-inferrer.cc Loading commit data...
func-name-inferrer.h Loading commit data...
global-handles.cc Loading commit data...
global-handles.h Loading commit data...
globals.h Loading commit data...
handles-inl.h Loading commit data...
handles.cc Loading commit data...
handles.h Loading commit data...
hashmap.cc Loading commit data...
hashmap.h Loading commit data...
heap-inl.h Loading commit data...
heap.cc Loading commit data...
heap.h Loading commit data...
ic-inl.h Loading commit data...
ic.cc Loading commit data...
ic.h Loading commit data...
interpreter-irregexp.cc Loading commit data...
interpreter-irregexp.h Loading commit data...
json-delay.js Loading commit data...
jsregexp.cc Loading commit data...
jsregexp.h Loading commit data...
jump-target-inl.h Loading commit data...
jump-target.cc Loading commit data...
jump-target.h Loading commit data...
list-inl.h Loading commit data...
list.h Loading commit data...
log-inl.h Loading commit data...
log-utils.cc Loading commit data...
log-utils.h Loading commit data...
log.cc Loading commit data...
log.h Loading commit data...
macro-assembler.h Loading commit data...
macros.py Loading commit data...
mark-compact.cc Loading commit data...
mark-compact.h Loading commit data...
math.js Loading commit data...
memory.h Loading commit data...
messages.cc Loading commit data...
messages.h Loading commit data...
messages.js Loading commit data...
mirror-delay.js Loading commit data...
mksnapshot.cc Loading commit data...
natives.h Loading commit data...
objects-debug.cc Loading commit data...
objects-inl.h Loading commit data...
objects.cc Loading commit data...
objects.h Loading commit data...
oprofile-agent.cc Loading commit data...
oprofile-agent.h Loading commit data...
parser.cc Loading commit data...
parser.h Loading commit data...
platform-freebsd.cc Loading commit data...
platform-linux.cc Loading commit data...
platform-macos.cc Loading commit data...
platform-nullos.cc Loading commit data...
platform-posix.cc Loading commit data...
platform-win32.cc Loading commit data...
platform.h Loading commit data...
prettyprinter.cc Loading commit data...
prettyprinter.h Loading commit data...
property.cc Loading commit data...
property.h Loading commit data...
regexp-delay.js Loading commit data...
regexp-macro-assembler-irregexp-inl.h Loading commit data...
regexp-macro-assembler-irregexp.cc Loading commit data...
regexp-macro-assembler-irregexp.h Loading commit data...
regexp-macro-assembler-tracer.cc Loading commit data...
regexp-macro-assembler-tracer.h Loading commit data...
regexp-macro-assembler.cc Loading commit data...
regexp-macro-assembler.h Loading commit data...
regexp-stack.cc Loading commit data...
regexp-stack.h Loading commit data...
register-allocator-inl.h Loading commit data...
register-allocator.cc Loading commit data...
register-allocator.h Loading commit data...
rewriter.cc Loading commit data...
rewriter.h Loading commit data...
runtime.cc Loading commit data...
runtime.h Loading commit data...
runtime.js Loading commit data...
scanner.cc Loading commit data...
scanner.h Loading commit data...
scopeinfo.cc Loading commit data...
scopeinfo.h Loading commit data...
scopes.cc Loading commit data...
scopes.h Loading commit data...
serialize.cc Loading commit data...
serialize.h Loading commit data...
shell.h Loading commit data...
smart-pointer.h Loading commit data...
snapshot-common.cc Loading commit data...
snapshot-empty.cc Loading commit data...
snapshot.h Loading commit data...
spaces-inl.h Loading commit data...
spaces.cc Loading commit data...
spaces.h Loading commit data...
string-stream.cc Loading commit data...
string-stream.h Loading commit data...
string.js Loading commit data...
stub-cache.cc Loading commit data...
stub-cache.h Loading commit data...
token.cc Loading commit data...
token.h Loading commit data...
top.cc Loading commit data...
top.h Loading commit data...
unicode-inl.h Loading commit data...
unicode.cc Loading commit data...
unicode.h Loading commit data...
uri.js Loading commit data...
usage-analyzer.cc Loading commit data...
usage-analyzer.h Loading commit data...
utils.cc Loading commit data...
utils.h Loading commit data...
v8-counters.cc Loading commit data...
v8-counters.h Loading commit data...
v8.cc Loading commit data...
v8.h Loading commit data...
v8natives.js Loading commit data...
v8threads.cc Loading commit data...
v8threads.h Loading commit data...
variables.cc Loading commit data...
variables.h Loading commit data...
version.cc Loading commit data...
version.h Loading commit data...
virtual-frame.cc Loading commit data...
virtual-frame.h Loading commit data...
zone-inl.h Loading commit data...
zone.cc Loading commit data...
zone.h Loading commit data...