Handle Symbols in the LBranch instruction on x64.

This was an omission in https://code.google.com/p/v8/source/detail?r=14051.

R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16101 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 29bb553b
......@@ -469,6 +469,9 @@ void CompareNilICStub::UpdateStatus(Handle<Object> object) {
template<class StateType>
void HydrogenCodeStub::TraceTransition(StateType from, StateType to) {
// Note: Although a no-op transition is semantically OK, it is hinting at a
// bug somewhere in our state transition machinery.
ASSERT(from != to);
#ifdef DEBUG
if (!FLAG_trace_ic) return;
char buffer[100];
......
......@@ -2016,6 +2016,12 @@ void LCodeGen::DoBranch(LBranch* instr) {
__ bind(&not_string);
}
if (expected.Contains(ToBooleanStub::SYMBOL)) {
// Symbol value -> true.
__ CmpInstanceType(map, SYMBOL_TYPE);
__ j(equal, instr->TrueLabel(chunk_));
}
if (expected.Contains(ToBooleanStub::HEAP_NUMBER)) {
// heap number -> false iff +0, -0, or NaN.
Label not_heap_number;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment