From 26264c25a5d22865ab459ef26f86f7d8dfe88f1e Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Sun, 27 Feb 2011 13:55:47 -0800 Subject: [PATCH] Don't require NASM to build unless using the x64 decoder. --- Makefile | 14 +++++++++++--- src/upb_decoder.c | 5 ++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 008cc852c6..68c56b6801 100644 --- a/Makefile +++ b/Makefile @@ -24,12 +24,14 @@ # Default rule: just build libupb. all: lib +# User-specified CFLAGS. +USER_CFLAGS=$(strip $(shell test -f perf-cppflags && cat perf-cppflags)) + # Basic compiler/flag setup. CC=gcc CXX=g++ CFLAGS=-std=c99 INCLUDE=-Isrc -Itests -I. -USER_CFLAGS=$(strip $(shell test -f perf-cppflags && cat perf-cppflags)) CPPFLAGS=$(INCLUDE) -Wall -Wextra -Wno-missing-field-initializers $(USER_CFLAGS) LDLIBS=-lpthread src/libupb.a @@ -117,8 +119,14 @@ LIBUPB=src/libupb.a LIBUPB_PIC=src/libupb_pic.a lib: $(LIBUPB) -OBJ=$(patsubst %.c,%.o,$(SRC)) src/upb_decoder_x64.o -PICOBJ=$(patsubst %.c,%.lo,$(SRC)) src/upb_decoder_x64.lo + +OBJ=$(patsubst %.c,%.o,$(SRC)) +PICOBJ=$(patsubst %.c,%.lo,$(SRC)) + +ifneq (, $(findstring DUSE_X64_FASTPATH, $(USER_CFLAGS))) + OBJ += src/upb_decoder_x64.o + PICOBJ += src/upb_decoder_x64.o +endif $(LIBUPB): $(OBJ) $(E) AR $(LIBUPB) $(Q) ar rcs $(LIBUPB) $(OBJ) diff --git a/src/upb_decoder.c b/src/upb_decoder.c index f028297f3d..dc5dafdb5b 100644 --- a/src/upb_decoder.c +++ b/src/upb_decoder.c @@ -248,14 +248,13 @@ void upb_decoder_run(upb_src *src, upb_status *status) { // Decodes as many fields as possible, updating d->ptr appropriately, // before falling through to the slow(er) path. -#ifdef USE_ASSEMBLY_FASTPATH +#ifdef USE_X64_FASTPATH const char *end = UPB_MIN(d->end, d->submsg_end); fastdecode_ret ret = upb_fastdecode(d->ptr, end, d->dispatcher.top->handlers.set->value, d->dispatcher.top->handlers.closure, d->msgdef->itof.array, - d->msgdef->itof.array_size, - d->tmp); + d->msgdef->itof.array_size); CHECK_FLOW(ret.flow); #endif