Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: src/arm/codegen-arm.cc

Issue 126193: Remove the unused support for jump-table switch statements. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/arm/codegen-arm.h ('k') | src/codegen.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arm/codegen-arm.cc
===================================================================
--- src/arm/codegen-arm.cc (revision 2176)
+++ src/arm/codegen-arm.cc (working copy)
@@ -1471,85 +1471,6 @@
}
-int CodeGenerator::FastCaseSwitchMaxOverheadFactor() {
- return kFastSwitchMaxOverheadFactor;
-}
-
-int CodeGenerator::FastCaseSwitchMinCaseCount() {
- return kFastSwitchMinCaseCount;
-}
-
-
-void CodeGenerator::GenerateFastCaseSwitchJumpTable(
- SwitchStatement* node,
- int min_index,
- int range,
- Label* default_label,
- Vector<Label*> case_targets,
- Vector<Label> case_labels) {
- VirtualFrame::SpilledScope spilled_scope;
- JumpTarget setup_default;
- JumpTarget is_smi;
-
- // A non-null default label pointer indicates a default case among
- // the case labels. Otherwise we use the break target as a
- // "default" for failure to hit the jump table.
- JumpTarget* default_target =
- (default_label == NULL) ? node->break_target() : &setup_default;
-
- ASSERT(kSmiTag == 0 && kSmiTagSize <= 2);
- frame_->EmitPop(r0);
-
- // Test for a Smi value in a HeapNumber.
- __ tst(r0, Operand(kSmiTagMask));
- is_smi.Branch(eq);
- __ CompareObjectType(r0, r1, r1, HEAP_NUMBER_TYPE);
- default_target->Branch(ne);
- frame_->EmitPush(r0);
- frame_->CallRuntime(Runtime::kNumberToSmi, 1);
- is_smi.Bind();
-
- if (min_index != 0) {
- // Small positive numbers can be immediate operands.
- if (min_index < 0) {
- // If min_index is Smi::kMinValue, -min_index is not a Smi.
- if (Smi::IsValid(-min_index)) {
- __ add(r0, r0, Operand(Smi::FromInt(-min_index)));
- } else {
- __ add(r0, r0, Operand(Smi::FromInt(-min_index - 1)));
- __ add(r0, r0, Operand(Smi::FromInt(1)));
- }
- } else {
- __ sub(r0, r0, Operand(Smi::FromInt(min_index)));
- }
- }
- __ tst(r0, Operand(0x80000000 | kSmiTagMask));
- default_target->Branch(ne);
- __ cmp(r0, Operand(Smi::FromInt(range)));
- default_target->Branch(ge);
- VirtualFrame* start_frame = new VirtualFrame(frame_);
- __ SmiJumpTable(r0, case_targets);
-
- GenerateFastCaseSwitchCases(node, case_labels, start_frame);
-
- // If there was a default case among the case labels, we need to
- // emit code to jump to it from the default target used for failure
- // to hit the jump table.
- if (default_label != NULL) {
- if (has_valid_frame()) {
- node->break_target()->Jump();
- }
- setup_default.Bind();
- frame_->MergeTo(start_frame);
- __ b(default_label);
- DeleteFrame();
- }
- if (node->break_target()->is_linked()) {
- node->break_target()->Bind();
- }
-}
-
-
void CodeGenerator::VisitSwitchStatement(SwitchStatement* node) {
#ifdef DEBUG
int original_height = frame_->height();
@@ -1560,10 +1481,6 @@
node->break_target()->set_direction(JumpTarget::FORWARD_ONLY);
LoadAndSpill(node->tag());
- if (TryGenerateFastCaseSwitchStatement(node)) {
- ASSERT(!has_valid_frame() || frame_->height() == original_height);
- return;
- }
JumpTarget next_test;
JumpTarget fall_through;
« no previous file with comments | « src/arm/codegen-arm.h ('k') | src/codegen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698